NapNeko / NapCatQQ

现代化的基于 NTQQ 的 Bot 协议端实现
https://napneko.github.io
Other
2.29k stars 160 forks source link

[BUG] Linux Docker 环境下群成员增加事件没有触发 #328

Closed okatu-loli closed 1 month ago

okatu-loli commented 1 month ago

系统版本

Ubuntu 24.04 (Docker 25.0.0-beta.3)

QQNT 版本

不太清楚,直接用的mlikiowa/napcat-docker:v2.2.29

NapCat 版本

2.2.29

OneBot 客户端

koishi 4.17.12(adapter-onebot 6.6.2)

发生了什么?

系统是Ubuntu 24.04,搭建了koishi,安装了adapter-onebot插件,分别连接Windows和Ubuntu24.04下部署的napcat测试 Windows下部署的机器人可以正确触发guild-member-added事件,Ubuntu下的机器人却不能触发

如何复现

我的插件仓库:https://github.com/okatu-loli/koishi-plugin-welcome-and-farewell 事件代码: import { Context } from 'koishi'; import {Config} from './index'; import {logMessage, userMention} from "./utils"; import {getValidGroupConfig} from "./database";

// 注册事件 export function registerEvents(ctx: Context, config: Config) { // 获取默认配置 const defaultConfig = { guildId: 'default', welcomeMessage: config.defaultWelcomeMessage, farewellMessage: config.defaultFarewellMessage, welcomeEnabled: true, farewellEnabled: true, approvalEnabled: config.defaultApproval, };

ctx.on('guild-member-added', async (session) => { logMessage(config, 'guild-member-added 事件触发'); const guildConfig = await getValidGroupConfig(ctx, session.guildId, defaultConfig); logMessage(config, 群组配置: ${JSON.stringify(guildConfig)}); if (guildConfig.welcomeEnabled) { const welcomeMessage = guildConfig.welcomeMessage || config.defaultWelcomeMessage; await session.send(welcomeMessage.replace('{userId}', userMention.replace('{userId}', session.userId))); } });

ctx.on('guild-member-removed', async (session) => { logMessage(config, 'guild-member-removed 事件触发'); const guildConfig = await getValidGroupConfig(ctx, session.guildId, defaultConfig); logMessage(config, 群组配置: ${JSON.stringify(guildConfig)}); if (guildConfig.farewellEnabled) { const farewellMessage = guildConfig.farewellMessage || config.defaultFarewellMessage; await session.send(farewellMessage.replace('{userId}', userMention.replace('{userId}', session.userId))); } });

ctx.on('guild-member-request', async (session) => { logMessage(config, 'guild-member-request 事件触发'); const guildConfig = await getValidGroupConfig(ctx, session.guildId, defaultConfig); logMessage(config, 群组配置: ${JSON.stringify(guildConfig)}); if (guildConfig.approvalEnabled) { const adminUsers = await ctx.database.get('group_admins', { guildId: session.guildId }); for (const admin of adminUsers) { await session.bot.sendPrivateMessage(admin.userId, 新的入群请求:${session.userId},消息 ID: ${session.messageId}); } } }); } 启用插件后,邀请小号进群,观察日志进行申请入群、入群和退群测试 日志只包含了申请和退出的日志,没有加入的日志:

guild-member-request 事件触发 群组配置: {"guildId":"746864956","welcomeMessage":"欢迎 {userId}\" 加入我们的大家庭!\n我们是计算机协会,一个充满活力和创造力的组织。这里有丰富的技术资源和有趣的活动等你来参与!\n\n请花几分钟时间阅读我们的群规:\n1. 互相尊重,文明交流。\n2. 积极参与讨论,分享你的见解和经验。\n3. 遵守群内公告和活动安排 。\n\n如果你有任何问题或需要帮助,请随时联系群管理员。\n\n期待你的积极参与,祝你在这里度过愉快的时光!","farewellMessage":"{userId} 已退出","welcomeEnabled":true,"farewellEnabled":true,"approvalEnabled":true} guild-member-removed 事件触发 群组配置: {"guildId":"746864956","welcomeMessage":"欢迎 {userId}\" 加入我们的大家庭!\n我们是计算机协会,一个充满活力和创造力的组织。这里有丰富的技术资源和有趣的活动等你来参与!\n\n请花几分钟时间阅读我们的群规:\n1. 互相尊重,文明交流。\n2. 积极参与讨论,分享你的见解和经验。\n3. 遵守群内公告和活动安排 。\n\n如果你有任何问题或需要帮助,请随时联系群管理员。\n\n期待你的积极参与,祝你在这里度过愉快的时光!","farewellMessage":"{userId} 已退出","welcomeEnabled":true,"farewellEnabled":true,"approvalEnabled":true}

期望的结果?

正确触发guild-member-added事件,并执行对应逻辑

NapCat 运行日志

没有报错信息,是聊天记录,不方便粘贴

OneBot 客户端运行日志

PS C:\Users\asus\Documents\project\nodejs\koishi-app> yarn dev
2024-08-31 23:45:55 [I] app Koishi/4.17.12
2024-08-31 23:45:55 [I] loader apply plugin group:entry
2024-08-31 23:45:55 [I] loader apply plugin group:server
2024-08-31 23:45:55 [I] loader apply plugin server:r2i06p
2024-08-31 23:45:55 [I] loader apply plugin group:basic
2024-08-31 23:45:55 [I] loader apply plugin commands:jp7s6r
2024-08-31 23:45:55 [I] loader apply plugin help:gt9cjx
2024-08-31 23:45:55 [I] loader apply plugin http:0odc0s
2024-08-31 23:45:55 [I] loader apply plugin locales:bkfdmz
2024-08-31 23:45:55 [I] loader apply plugin proxy-agent:wx2dwa
2024-08-31 23:45:56 [I] loader apply plugin rate-limit:ruj8bx
2024-08-31 23:45:56 [I] loader apply plugin telemetry:yb2f3v
2024-08-31 23:45:56 [I] loader apply plugin group:console
2024-08-31 23:45:56 [I] loader apply plugin actions:l0ytel
2024-08-31 23:45:56 [I] loader apply plugin analytics:luyhps
2024-08-31 23:45:56 [I] loader apply plugin auth:lb8dqq
2024-08-31 23:45:56 [I] loader apply plugin config:cl3i0i
2024-08-31 23:45:56 [I] loader apply plugin console:nhzja9
2024-08-31 23:45:56 [I] loader apply plugin dataview:4drlzl
2024-08-31 23:45:56 [I] loader apply plugin explorer:jbi400
2024-08-31 23:45:56 [I] loader apply plugin logger:nv949x
2024-08-31 23:45:56 [I] loader apply plugin insight:yf9r8r
2024-08-31 23:45:56 [I] loader apply plugin market:8rjhb9
2024-08-31 23:45:56 [I] loader apply plugin notifier:sgzc8u
2024-08-31 23:45:56 [I] loader apply plugin oobe:bjpwec
2024-08-31 23:45:56 [I] loader apply plugin sandbox:nzax5k
2024-08-31 23:45:56 [I] loader apply plugin status:z3g60q
2024-08-31 23:45:56 [I] loader apply plugin theme-vanilla:a24sct
2024-08-31 23:45:56 [I] loader apply plugin group:storage
2024-08-31 23:45:56 [I] loader apply plugin database-sqlite:h151hl
2024-08-31 23:45:56 [I] loader apply plugin assets-local:mdllr0
2024-08-31 23:45:56 [I] loader apply plugin group:adapter
2024-08-31 23:45:56 [I] loader apply plugin group:develop
2024-08-31 23:45:56 [I] loader apply plugin hmr:qdqv47
2024-08-31 23:45:56 [I] loader apply plugin adapter-onebot:0f5qcn
2024-08-31 23:45:56 [I] loader apply plugin welcome-and-farewell:q1fgh9
2024-08-31 23:45:56 [I] assets missing config "selfUrl", fallback to "file:" scheme
2024-08-31 23:45:57 [I] server server listening at http://127.0.0.1:5140
2024-08-31 23:45:57 [I] auth creating admin account
2024-08-31 23:45:57 [I] console webui is available at http://127.0.0.1:5140
2024-08-31 23:46:27 [W] adapter read ECONNRESET
2024-08-31 23:46:27 [W] adapter failed to connect to ws://127.0.0.1:13001/, code: 1006, will retry in 5s...
2024-08-31 23:46:27 [W] market Error: request timeout
                            at Timeout.<anonymous> (C:\Users\asus\Documents\project\nodejs\koishi-app\node_modules\@cordisjs\plugin-http\lib\index.cjs:290:26)
                            at listOnTimeout (node:internal/timers:573:17)
                            at process.processTimers (node:internal/timers:514:7)
2024-08-31 23:46:57 [W] market Error: request timeout
                            at Timeout.<anonymous> (C:\Users\asus\Documents\project\nodejs\koishi-app\node_modules\@cordisjs\plugin-http\lib\index.cjs:290:26)
                            at listOnTimeout (node:internal/timers:573:17)
                            at process.processTimers (node:internal/timers:514:7)
2024-08-31 23:47:02 [W] adapter read ECONNRESET
2024-08-31 23:47:02 [W] adapter failed to connect to ws://127.0.0.1:13001/, code: 1006, will retry in 5s...
2024-08-31 23:47:37 [W] adapter read ECONNRESET
2024-08-31 23:47:37 [W] adapter failed to connect to ws://127.0.0.1:13001/, code: 1006, will retry in 5s...
2024-08-31 23:48:12 [W] adapter read ECONNRESET
2024-08-31 23:48:12 [W] adapter failed to connect to ws://127.0.0.1:13001/, code: 1006, will retry in 5s...
2024-08-31 23:48:30 [I] loader unload plugin adapter-onebot:0f5qcn
2024-08-31 23:48:30 [W] adapter WebSocket was closed before the connection was established
2024-08-31 23:48:32 [I] loader apply plugin adapter-onebot:0f5qcn
2024-08-31 23:50:44 [I] loader unload plugin adapter-onebot:0f5qcn
2024-08-31 23:51:13 [I] loader apply plugin adapter-onebot:0f5qcn
2024-08-31 23:51:15 [I] loader unload plugin adapter-onebot:0f5qcn
2024-08-31 23:51:17 [I] loader apply plugin adapter-onebot:0f5qcn
2024-08-31 23:53:52 [I] loader unload plugin adapter-onebot:0f5qcn
2024-08-31 23:53:54 [I] loader apply plugin adapter-onebot:0f5qcn
2024-08-31 23:53:57 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:53:57 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:54:04 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:54:04 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:54:11 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:54:11 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:54:18 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:54:18 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:54:23 [I] adapter connect to server: ws://192.168.0.26:13001/
2024-08-31 23:55:14 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:55:21 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:55:21 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:55:28 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:55:28 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:55:35 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:55:35 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:55:42 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:55:42 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:55:49 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:55:49 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 5s...
2024-08-31 23:55:56 [W] adapter connect ECONNREFUSED 192.168.0.26:13001
2024-08-31 23:55:56 [W] adapter failed to connect to ws://192.168.0.26:13001/, code: 1006, will retry in 1m...
2024-08-31 23:56:56 [I] adapter connect to server: ws://192.168.0.26:13001/
guild-member-removed 事件触发
群组配置: {"guildId":"746864956","welcomeMessage":"`欢迎 {userId}\" 加入我们的大家庭!\n我们是计算机协会,一个充满活力和创造力的组织。这里有丰富的技术资源和有趣的活动等你来参与!\n\n请花几分钟时间阅读我们的群规:\n1. 互相尊重,文明交流。\n2. 积极参与讨论,分享你的见解和经验。\n3. 遵守群内公告和活动安排。\n\n如果你 有任何问题或需要帮助,请随时联系群管理员。\n\n期待你的积极参与,祝你在这里度过愉快的时光!`","farewellMessage":"`{userId} 已退出`","welcomeEnabled":true,"farewellEnabled":true,"approvalEnabled":true}
guild-member-request 事件触发
群组配置: {"guildId":"746864956","welcomeMessage":"`欢迎 {userId}\" 加入我们的大家庭!\n我们是计算机协会,一个充满活力和创造力的组织。这里有丰富的技术资源和有趣的活动等你来参与!\n\n请花几分钟时间阅读我们的群规:\n1. 互相尊重,文明交流。\n2. 积极参与讨论,分享你的见解和经验。\n3. 遵守群内公告和活动安排。\n\n如果你 有任何问题或需要帮助,请随时联系群管理员。\n\n期待你的积极参与,祝你在这里度过愉快的时光!`","farewellMessage":"`{userId} 已退出`","welcomeEnabled":true,"farewellEnabled":true,"approvalEnabled":true}
guild-member-removed 事件触发
群组配置: {"guildId":"746864956","welcomeMessage":"`欢迎 {userId}\" 加入我们的大家庭!\n我们是计算机协会,一个充满活力和创造力的组织。这里有丰富的技术资源和有趣的活动等你来参与!\n\n请花几分钟时间阅读我们的群规:\n1. 互相尊重,文明交流。\n2. 积极参与讨论,分享你的见解和经验。\n3. 遵守群内公告和活动安排。\n\n如果你 有任何问题或需要帮助,请随时联系群管理员。\n\n期待你的积极参与,祝你在这里度过愉快的时光!`","farewellMessage":"`{userId} 已退出`","welcomeEnabled":true,"farewellEnabled":true,"approvalEnabled":true}
guild-member-request 事件触发
群组配置: {"guildId":"746864956","welcomeMessage":"`欢迎 {userId}\" 加入我们的大家庭!\n我们是计算机协会,一个充满活力和创造力的组织。这里有丰富的技术资源和有趣的活动等你来参与!\n\n请花几分钟时间阅读我们的群规:\n1. 互相尊重,文明交流。\n2. 积极参与讨论,分享你的见解和经验。\n3. 遵守群内公告和活动安排。\n\n如果你 有任何问题或需要帮助,请随时联系群管理员。\n\n期待你的积极参与,祝你在这里度过愉快的时光!`","farewellMessage":"`{userId} 已退出`","welcomeEnabled":true,"farewellEnabled":true,"approvalEnabled":true}
W1ndys commented 1 month ago

或许看一下这个?是不是这个原因,我的docker可以正常上报https://github.com/NapNeko/NapCatQQ/issues/327

okatu-loli commented 1 month ago

或许看一下这个?是不是这个原因,我的docker可以正常上报#327

请问可以看看你的代码吗?我想做一下参考

W1ndys commented 1 month ago

或许看一下这个?是不是这个原因,我的docker可以正常上报#327

请问可以看看你的代码吗?我想做一下参考

https://github.com/W1ndys-bot/WelcomeFarewell/blob/805c04a030d805581dba40e970fe9dfeb6625d51/main.py#L180

MliKiowa commented 1 month ago

尝试下最新docker呢

Wesley-Young commented 1 month ago

最新版本 (2.2.30, 27597) 测试(仅测试了自己邀请别人入群 -> 同意以及其他人主动加群的情况),发现可以正常上报,请尝试最新版本。

okatu-loli commented 1 month ago

尝试下最新docker呢

拉取了v2.2.31版本docker镜像,测试依旧emmm,我也不知道是哪的问题 Windows下测试没问题,放Linux跑docker不触发

MliKiowa commented 1 month ago

napcat日志里面是否有收到群通知之类的日志

okatu-loli commented 1 month ago

napcat日志里面是否有收到群通知之类的日志

有,然后我有测试了下,发现别人邀请进群的可以正常触发,但是自己申请进群的无法触发

2024-09-01 12:10:08 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) @👻战神👻 (2577) 已退出 2024-09-01 12:10:09 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 3675) "成员 @👻战神👻 (2577) 已经退出群聊。" 2024-09-01 12:10:55 [INFO] 小千(2420) | 发送 -> 私聊 (183) 新的入群请求:2577,消息 ID: 7468 2024-09-01 12:11:55 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 0) [灰条消息] 2024-09-01 12:12:19 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) @👻战神👻 (2577) 已退出 2024-09-01 12:12:19 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 3675) "成员 @👻战神👻 (2577) 已经退出群聊。" 2024-09-01 12:12:42 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 0) [灰条消息] 2024-09-01 12:12:42 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) `欢迎 @👻战神👻 (2577) " 加入我们的大家庭!

W1ndys commented 1 month ago

bug反馈,通过扫描二维码进群的无法上报 docker最新版

2024-09-01 13:03:46 [INFO] 卷卷(36059) | 接收 <- 群聊 (群 23601 的 0) [灰条消息] 
W1ndys commented 1 month ago

bug反馈,通过扫描二维码进群的无法上报 docker最新版

2024-09-01 13:03:46 [INFO] 卷卷(36059) | 接收 <- 群聊 (群 23601 的 0) [灰条消息] 

emmmmm,又恢复了,但nap日志还是0灰条消息

MliKiowa commented 1 month ago

napcat日志里面是否有收到群通知之类的日志

有,然后我有测试了下,发现别人邀请进群的可以正常触发,但是自己申请进群的无法触发

2024-09-01 12:10:08 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) @👻战神👻 (2577) 已退出 2024-09-01 12:10:09 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 3675) "成员 @👻战神👻 (2577) 已经退出群聊。" 2024-09-01 12:10:55 [INFO] 小千(2420) | 发送 -> 私聊 (183) 新的入群请求:2577,消息 ID: 7468 2024-09-01 12:11:55 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 0) [灰条消息] 2024-09-01 12:12:19 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) @👻战神👻 (2577) 已退出 2024-09-01 12:12:19 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 3675) "成员 @👻战神👻 (2577) 已经退出群聊。" 2024-09-01 12:12:42 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 0) [灰条消息] 2024-09-01 12:12:42 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) `欢迎 @👻战神👻 (2577) " 加入我们的大家庭!

没收到入群申请还是已入群通知

okatu-loli commented 1 month ago

napcat日志里面是否有收到群通知之类的日志

有,然后我有测试了下,发现别人邀请进群的可以正常触发,但是自己申请进群的无法触发

2024-09-01 12:10:08 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) @👻战神👻 (2577) 已退出 2024-09-01 12:10:09 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 3675) "成员 @👻战神👻 (2577) 已经退出群聊。" 2024-09-01 12:10:55 [INFO] 小千(2420) | 发送 -> 私聊 (183) 新的入群请求:2577,消息 ID: 7468 2024-09-01 12:11:55 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 0) [灰条消息] 2024-09-01 12:12:19 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) @👻战神👻 (2577) 已退出 2024-09-01 12:12:19 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 3675) "成员 @👻战神👻 (2577) 已经退出群聊。" 2024-09-01 12:12:42 [INFO] 小千(2420) | 接收 <- 群聊 (群 7468 的 0) [灰条消息] 2024-09-01 12:12:42 [INFO] 小千(2420) | 发送 -> 群聊 (群 7468 的 2420) `欢迎 @👻战神👻 (2577) " 加入我们的大家庭!

没收到入群申请还是已入群通知

没收到已入群通知

MliKiowa commented 1 month ago

你好已修

MliKiowa commented 1 month ago

下个版本 2.2.32测试 如果无问题 无需反馈 存在问题可前往官方群进一步调试