ソースを参照

创建群聊时邀请机器人

Taio_O 3 週間 前
コミット
973bea1aea
2 ファイル変更71 行追加1 行削除
  1. 70 0
      admin/index.js
  2. 1 1
      admin/views/dashboard.html

+ 70 - 0
admin/index.js

@@ -955,6 +955,76 @@ bot.on('new_chat_members', async (msg) => {
     }
 });
 
+// 处理机器人成员状态更新(包括被邀请到新群组)
+bot.on('my_chat_member', async (msg) => {
+    try {
+        const chatId = msg.chat.id.toString();
+        const chatTitle = msg.chat.title || '未命名群组';
+        const creatorId = msg.from.id.toString();
+        const newStatus = msg.new_chat_member.status;
+
+        // 只处理机器人被添加到群组的情况
+        if (newStatus === 'member' || newStatus === 'administrator') {
+            // 检查群组是否已存在
+            const [existingGroup] = await pool.query(
+                'SELECT * FROM groups WHERE group_id = ?',
+                [chatId]
+            );
+
+            if (!existingGroup || existingGroup.length === 0) {
+                // 创建新群组记录
+                await pool.query(`
+                    INSERT INTO groups (
+                        group_id,
+                        group_name,
+                        creator_id,
+                        in_fee_rate,
+                        out_fee_rate,
+                        in_exchange_rate,
+                        out_exchange_rate,
+                        last_join_time,
+                        created_at,
+                        updated_at,
+                        operators
+                    ) VALUES (?, ?, ?, 0, 0, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '[]')
+                `, [chatId, chatTitle, creatorId]);
+
+                // 将群组添加到允许列表
+                if (!data.allowedGroups.includes(chatId)) {
+                    data.allowedGroups.push(chatId);
+                    saveData();
+                }
+
+                // 发送欢迎消息
+                await sendMessage(msg.chat.id, `感谢您添加我进入群组!\n\n我已初始化群组账单系统,您可以使用以下命令开始使用:\n\n• <code>/help</code> 查看使用指南\n• <code>/bill</code> 查看当前账单`);
+                
+                console.log(`新群组初始化成功 - 群组: ${chatTitle}, ID: ${chatId}, 创建者: ${creatorId}, 时间: ${new Date().toLocaleString()}`);
+            } else {
+                // 更新群组信息
+                await pool.query(`
+                    UPDATE groups 
+                    SET group_name = ?,
+                        last_join_time = CURRENT_TIMESTAMP,
+                        updated_at = CURRENT_TIMESTAMP
+                    WHERE group_id = ?
+                `, [chatTitle, chatId]);
+
+                // 确保群组在允许列表中
+                if (!data.allowedGroups.includes(chatId)) {
+                    data.allowedGroups.push(chatId);
+                    saveData();
+                }
+
+                await sendMessage(msg.chat.id, `我已重新加入群组!\n\n您可以使用 <code>/help</code> 查看使用指南`);
+                console.log(`群组信息更新成功 - 群组: ${chatTitle}, ID: ${chatId}, 时间: ${new Date().toLocaleString()}`);
+            }
+        }
+    } catch (error) {
+        console.error('处理机器人成员状态更新失败:', error);
+        await sendMessage(msg.chat.id, '初始化群组失败,请稍后重试');
+    }
+});
+
 // 保存数据
 function saveData() {
     try {

+ 1 - 1
admin/views/dashboard.html

@@ -124,7 +124,7 @@
                         </div>
                         <div class="col-md-3">
                             <div class="card stat-card">
-                                <i class="bi bi-currency-dollar"></i>
+                                <i class="bi bi-currency-yen"></i>
                                 <h3 id="totalAmount">¥0</h3>
                                 <p>总金额</p>
                             </div>