QQ 官方机器人群聊能力与 NapCat 对比 (QQ Official Bot Group Support vs NapCat)
1. 结论先行
QQ 开放平台有群聊场景,但它和 NapCat 走的是两条完全不同的路:
- NapCat = 劫持你自己的 QQ 号当机器人。能力等于一个真人号,风险等于一个真人号(会被风控踢)。
- QQ 官方机器人 = 在腾讯那里注册一个机器人身份。不受风控踢下线,但能力被官方接口严格框死。
一句话取舍:要稳定就走官方,要能力就留 NapCat。二者不能兼得。
2. 它长什么样(接入流程)
QQ 开放平台 (q.qq.com) 实名注册
|
v
创建机器人应用 → 拿到 AppID + AppSecret
|
v
「沙箱配置」里绑定测试群(必须是你自己当群主/管理员的群)
|
v
「开发设置」→ IP 白名单,填服务器公网 IP
|
v
AstrBot WebUI →「机器人」→「+ 创建机器人」
适配器选「QQ 官方机器人(WebSocket)」
填 appid / secret,勾上「启用消息列表单聊」(enable_group_c2c)
|
v
手机 QQ 群设置 → 群机器人 → 添加该机器人AstrBot 支持扫码一键创建,可自动同步 AppID / AppSecret。
3. 五个关键差距(对照 NapCat)
| 维度 | QQ 官方机器人 | NapCat |
|---|---|---|
| 收消息条件 | 默认只有被 @ 才收到 | 群内全部消息都能看到 |
| 可用群范围 | 沙箱群 ≤ 20 人,且须本人当群主/管理员 | 任意群,无人数限制 |
| 公域发布 | 需企业/个体户资质,个人主体过不了全量审核 | 不涉及,直接用 |
| 掉线风险 | 官方通道,无风控踢下线 | 会被腾讯踢登录态(KickedOffLine) |
| 能力边界 | 受官方接口限制(无群管、无全量消息) | 等同真人号,功能齐全 |
4. 频控与消息时效(官方侧)
| 维度 | 限制 |
|---|---|
| Bot 维度主动消息 | 60 次/分钟(个人实名与企业认证同;未认证 30 次/分钟) |
| 单群主动消息 | 20 次/分钟 |
| 单群每日上限 | 1000 条/天/群 |
| 群消息接口总频率 | 100 QPS |
被动消息另算:群成员 @ 机器人后的回复,有效期 5 分钟,单个 msg_id 最多回复 5 次,不计入上述主动消息频控。沙箱环境不强制 IP 白名单、频控也更宽松。
5. AstrBot 适配器的实际能力(读源码确认)
适配器注册名 qq_official,源码位于 astrbot/core/platform/sources/qqofficial/。它实现了四个回调:
on_group_at_message_create # QQ 群,仅 @ 机器人
on_at_message_create # QQ 频道
on_direct_message_create # 频道私聊
on_c2c_message_create # QQ 消息列表单聊/群聊关键限制:适配器没有实现全量群消息回调(无 on_group_message_create)。Intents 只开 public_messages / public_guild_messages / direct_message。
所以即使你在开放平台订阅了 GROUP_MESSAGE_CREATE(全量群消息),AstrBot 这边也接不住 —— 在这个适配器下,"不 @ 也能回"是做不到的。
meta() 中 support_proactive_message=True,即适配器层面支持主动消息(仍受官方频控约束)。
6. 对"个人开发者自用"的实际含义
若使用者在 QQ 开放平台以个人实名注册:
- 可以创建机器人、可以配沙箱群、可以自用。沙箱群人数须 ≤ 20,且必须是本人当群主或群管理员的群。
- 无法正式上架到机器人市场,即无法被别人拉进任意群。
- 想要更多能力(全量群消息、群管理接口),通常需企业/个体工商户资质并人工审核。
因此:如果你的目标是"拉进一个人多的群当公共助手",官方机器人走不通;如果只是自己和一小撮人用,官方机器人是唯一不掉线的路。
7. 验证方式与边界
- AstrBot 侧结论来自实机读源码(tx 服务器
astrbot 4.25.1)。 - 平台侧结论来自公开文档检索。
bot.q.qq.com官方文档站在本网络环境下无法直接抓取,频控数字与沙箱人数上限建议在正式接入前到开放平台后台二次确认。 - 与 QQ 机器人协议端选型 Mirai 已死与 NapCat 掉线根因 (QQ Bot Protocol Backend Mirai Deprecation and NapCat Disconnect Root Cause) 是同一条决策链:NapCat 掉线 → 想换 Mirai(不可行)→ 评估官方通道(本文)。
本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/AI apps