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. 验证方式与边界


本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/AI apps