Skip to content

[BUG] 被邀请入群没有事件及日志处理 #1958

Description

@leriocn

系统版本

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 客户端运行日志

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions