系统版本
Windows
QQNT 版本
9.9.26.44498-6a73892f
NapCat 版本
WebUI v0.0.6 Core 4.17.53
OneBot 客户端
websocket
发生了什么?
关键原因已经从源码里对上了:NapCat 并不是完全没实现,而是对“机器人自身被直接拉入新群”依赖几种特定的 QQNT 推送;其中最直接的 XML 灰条解析代码被整段注释,群列表新增回调又没有用于补发 OneBot 事件。只要当前 QQNT 没再推它期望的 type=33 系统消息,就会出现你看到的“QQ 已进群,但 NapCat 零通知”。我再核对一下本地行号与最新主分支是否一致,然后给你完整结论。
查清楚了:这是 NapCat 对新版 QQNT 推送的兼容缺口,不是 SmartQQAssistant 没监听。
具体有两个独立问题。
为什么没有“收到群邀请”请求事件
NapCat 只有在群通知满足:
type === INVITED_BY_MEMBER
status === KUNHANDLE
才生成 request_type=group, sub_type=invite。如果 QQ 将邀请直接处理为“已加入”,它就不是待处理状态,因此不会生成群邀请请求事件。官方源码
NapCat 还有一个 type === 87 的备用解析路径,但它必须在接下来 1 秒内等到一条 msgType === 11 的邀请卡片,从中取得 msgseq。取不到时直接 return,不会输出任何请求事件。官方源码
这解释了为什么你既没看到邀请通知,也无法执行“自动通过”。
为什么机器人已经进群,仍没有 group_increase
NapCat 当前只能从这些来源生成该事件:
QQNT 系统消息 contentHead.type === 33
群灰条 KMEMBERADD
JSON 灰条 busiId === 51
但专门解析“机器人自身被邀请入群”的 XML 灰条 busiId === 10145 的代码,被整段注释掉了,包括调用 parseSelfInviteEvent() 的部分。官方源码
更关键的是,QQNT 明明提供了 onGroupListUpdate,NapCat 只声明了这个监听方法,却没有在 OneBot 层实现“群列表新增 → 补发机器人自身 group_increase”。官方源码
因此当前实际链路是:
QQ 直接把机器人加入群
↓
没有待处理邀请,所以没有 request 事件
↓
新版 QQNT 没推 NapCat 期待的 type=33 / KMEMBERADD
↓
实际出现的 XML/群列表更新又没有被转换
↓
NapCat 最终零事件
我也对比了你下载的源码与今天的 NapCat 官方 main:index.ts、group.ts、群监听器完全一致;msg.ts 虽有其他更新,但上述 type=33、type=87 和 1 秒等待逻辑没有变化。
本地对应位置:
index.ts (line 463)
group.ts (line 320)
msg.ts (line 1390)
NodeIKernelGroupListener.ts (line 40)
结论:SmartQQAssistant 不能继续依赖“邀请请求事件”。可靠修复需要在 NapCat 增加 onGroupListUpdate 差异检测,为机器人新增群补发 group_increase,并做事件去重。
如何复现
管理员或者普通用户邀请入群
期望的结果?
可反馈响应事件
NapCat 运行日志
OneBot 客户端运行日志
系统版本
Windows
QQNT 版本
9.9.26.44498-6a73892f
NapCat 版本
WebUI v0.0.6 Core 4.17.53
OneBot 客户端
websocket
发生了什么?
关键原因已经从源码里对上了:NapCat 并不是完全没实现,而是对“机器人自身被直接拉入新群”依赖几种特定的 QQNT 推送;其中最直接的 XML 灰条解析代码被整段注释,群列表新增回调又没有用于补发 OneBot 事件。只要当前 QQNT 没再推它期望的 type=33 系统消息,就会出现你看到的“QQ 已进群,但 NapCat 零通知”。我再核对一下本地行号与最新主分支是否一致,然后给你完整结论。
查清楚了:这是 NapCat 对新版 QQNT 推送的兼容缺口,不是 SmartQQAssistant 没监听。
具体有两个独立问题。
为什么没有“收到群邀请”请求事件
NapCat 只有在群通知满足:
type === INVITED_BY_MEMBER
status === KUNHANDLE
才生成 request_type=group, sub_type=invite。如果 QQ 将邀请直接处理为“已加入”,它就不是待处理状态,因此不会生成群邀请请求事件。官方源码
NapCat 还有一个 type === 87 的备用解析路径,但它必须在接下来 1 秒内等到一条 msgType === 11 的邀请卡片,从中取得 msgseq。取不到时直接 return,不会输出任何请求事件。官方源码
这解释了为什么你既没看到邀请通知,也无法执行“自动通过”。
为什么机器人已经进群,仍没有 group_increase
NapCat 当前只能从这些来源生成该事件:
QQNT 系统消息 contentHead.type === 33
群灰条 KMEMBERADD
JSON 灰条 busiId === 51
但专门解析“机器人自身被邀请入群”的 XML 灰条 busiId === 10145 的代码,被整段注释掉了,包括调用 parseSelfInviteEvent() 的部分。官方源码
更关键的是,QQNT 明明提供了 onGroupListUpdate,NapCat 只声明了这个监听方法,却没有在 OneBot 层实现“群列表新增 → 补发机器人自身 group_increase”。官方源码
因此当前实际链路是:
QQ 直接把机器人加入群
↓
没有待处理邀请,所以没有 request 事件
↓
新版 QQNT 没推 NapCat 期待的 type=33 / KMEMBERADD
↓
实际出现的 XML/群列表更新又没有被转换
↓
NapCat 最终零事件
我也对比了你下载的源码与今天的 NapCat 官方 main:index.ts、group.ts、群监听器完全一致;msg.ts 虽有其他更新,但上述 type=33、type=87 和 1 秒等待逻辑没有变化。
本地对应位置:
index.ts (line 463)
group.ts (line 320)
msg.ts (line 1390)
NodeIKernelGroupListener.ts (line 40)
结论:SmartQQAssistant 不能继续依赖“邀请请求事件”。可靠修复需要在 NapCat 增加 onGroupListUpdate 差异检测,为机器人新增群补发 group_increase,并做事件去重。
如何复现
管理员或者普通用户邀请入群
期望的结果?
可反馈响应事件
NapCat 运行日志
OneBot 客户端运行日志