|
@@ -160,8 +160,35 @@ bot.on('new_chat_members', async (msg) => {
|
|
|
|
|
|
// 检查群组是否在允许列表中
|
|
|
const chatIdStr = chatId.toString();
|
|
|
- if (!data.allowedGroups.includes(chatIdStr)) {
|
|
|
- try {
|
|
|
+ try {
|
|
|
+ // 先检查数据库中是否存在该群组
|
|
|
+ const existingGroup = await Group.findByGroupId(chatIdStr);
|
|
|
+
|
|
|
+ if (existingGroup) {
|
|
|
+ // 如果群组存在,更新群组状态为活跃,同时更新群组名称和加入时间
|
|
|
+ await pool.query(`
|
|
|
+ UPDATE groups
|
|
|
+ SET is_active = true,
|
|
|
+ group_name = ?,
|
|
|
+ last_join_time = CURRENT_TIMESTAMP
|
|
|
+ WHERE group_id = ?
|
|
|
+ `, [msg.chat.title || existingGroup.group_name, chatIdStr]);
|
|
|
+
|
|
|
+ // 更新内存中的群组列表
|
|
|
+ if (!data.allowedGroups.includes(chatIdStr)) {
|
|
|
+ data.allowedGroups.push(chatIdStr);
|
|
|
+ saveData();
|
|
|
+ }
|
|
|
+ // 发送欢迎消息并显示当前账单
|
|
|
+ await sendMessage(chatId, '感谢重新添加我为群组成员!');
|
|
|
+ const billMessage = await generateBillMessage(chatId);
|
|
|
+ if (billMessage) {
|
|
|
+ await sendMessage(chatId, billMessage, {
|
|
|
+ reply_markup: generateInlineKeyboard(chatId)
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 如果群组不存在,创建新群组
|
|
|
const groupData = {
|
|
|
groupId: chatIdStr,
|
|
|
groupName: msg.chat.title || '未命名群组',
|
|
@@ -180,21 +207,19 @@ bot.on('new_chat_members', async (msg) => {
|
|
|
// 更新内存中的群组列表
|
|
|
data.allowedGroups.push(chatIdStr);
|
|
|
saveData();
|
|
|
- sendMessage(chatId, '感谢添加我为群组成员!使用 /help 查看可用命令。');
|
|
|
+ await sendMessage(chatId, '感谢添加我为群组成员!使用 /help 查看可用命令。');
|
|
|
} else {
|
|
|
- sendMessage(chatId, '添加群组失败,请联系管理员。');
|
|
|
+ await sendMessage(chatId, '添加群组失败,请联系管理员。');
|
|
|
}
|
|
|
- } catch (error) {
|
|
|
- console.error('创建群组失败:', error);
|
|
|
- sendMessage(chatId, '添加群组失败,请联系管理员。');
|
|
|
}
|
|
|
- } else {
|
|
|
- sendMessage(chatId, '感谢添加我为群组成员!使用 /help 查看可用命令。');
|
|
|
+ } catch (error) {
|
|
|
+ console.error('处理群组加入失败:', error);
|
|
|
+ await sendMessage(chatId, '添加群组失败,请联系管理员。');
|
|
|
}
|
|
|
} else {
|
|
|
// 其他新成员
|
|
|
console.log(`新成员加入群组: ${member.username || member.first_name} (${member.id})`);
|
|
|
- sendMessage(chatId, `欢迎 ${member.username || member.first_name} 加入群组!`);
|
|
|
+ await sendMessage(chatId, `欢迎 ${member.username || member.first_name} 加入群组!`);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -406,13 +431,26 @@ bot.onText(/\/help/, (msg) => {
|
|
|
// 生成账单消息
|
|
|
async function generateBillMessage(chatId) {
|
|
|
try {
|
|
|
- // 获取最近的交易记录
|
|
|
+ // 获取群组的最后加入时间
|
|
|
+ const [groupInfo] = await pool.query(
|
|
|
+ 'SELECT last_join_time FROM groups WHERE group_id = ?',
|
|
|
+ [chatId.toString()]
|
|
|
+ );
|
|
|
+
|
|
|
+ if (!groupInfo || groupInfo.length === 0) {
|
|
|
+ return '暂无交易记录';
|
|
|
+ }
|
|
|
+
|
|
|
+ const lastJoinTime = groupInfo[0].last_join_time;
|
|
|
+
|
|
|
+ // 获取机器人加入后的交易记录
|
|
|
const [records] = await pool.query(`
|
|
|
SELECT * FROM transactions
|
|
|
WHERE group_id = ?
|
|
|
+ AND time >= ?
|
|
|
ORDER BY time DESC
|
|
|
LIMIT 10
|
|
|
- `, [chatId.toString()]);
|
|
|
+ `, [chatId.toString(), lastJoinTime]);
|
|
|
|
|
|
if (!records || records.length === 0) {
|
|
|
return '暂无交易记录';
|