讨论归档
本页只保存尚未确认的设计讨论,不代表已排期、已承诺或正在开发。进入 Roadmap 的功能以 Roadmap 本页的“更新日志”或明确的进行中条目为准。
2026-08-11 · QQ 官方机器人 2.0 Webhook 接收模式(低优先级)
结论
Webhook 可以与现有 QQ 官方机器人 2.0 适配器兼容,代码实现属于中等工作量,但用户部署门槛明显高于 Gateway WebSocket。当前 Dice!Next 用户大多没有公网 HTTPS 回调地址,因此本项仅保留为低优先级方案,不进入近期开发排期;默认接收方式继续使用 Gateway WebSocket。
Gateway WebSocket 与 Webhook 对比
| 对比项 | Gateway WebSocket(当前方案) | Webhook(候选方案) |
|---|---|---|
| 公网入口 | 不需要,由 Dice!Next 主动连接 QQ Gateway | 必须提供 QQ 平台可访问的公网 HTTPS 地址 |
| 部署难度 | 低,家庭网络、动态公网 IP、内网环境均可使用 | 中高,通常需要域名、证书、反向代理或云端中转 |
| 连接维护 | 客户端负责心跳、断线重连、会话恢复 | 无长连接,但需处理回调验证、平台重试和请求超时 |
| 事件结构 | QQ 2.0 标准事件 op/t/d/id/s | 与 WebSocket 使用相同事件结构,可复用现有事件分发 |
| 多账号 | 每个适配器维护独立 Gateway 会话 | HTTP 入口需根据受验证的应用身份路由到对应适配器 |
| 重复事件 | 主要处理断线恢复期间的重复推送 | 必须按事件 ID 去重,避免平台重试导致指令重复执行 |
| 安全重点 | Token、Gateway 会话与连接状态 | 原始请求体验签、时间窗口、防重放、限流和请求体大小限制 |
| 适用场景 | 普通用户、本地部署、Docker、无公网环境 | 已有公网 HTTPS 服务、统一网关或对长连接有限制的部署环境 |
未来实现范围
- 新增独立的 Webhook HTTP 接收层,不复制 QQ 适配器的业务逻辑。
- 完成官方回调地址验证,并在解析 JSON 前按官方规则验证原始请求体。
- 将 Webhook 与 Gateway 事件统一规范化后,交给现有
dispatch()、身份解析、指令、日志及回复流程。 - 支持多 QQ 官方机器人账号的安全路由,不能只信任请求体中未经验证的 AppID。
- 按事件 ID 设置带有效期的去重记录;快速响应回调,再异步处理可能耗时的指令。
- WebUI 增加“Gateway WebSocket / Webhook”接收方式与所需配置,并补充 HTTPS、反向代理及故障排查文档。
- 同一适配器默认只启用一种接收方式;若未来允许双通道容灾,两者必须共用事件去重机制。
工作量评估
- 最小可用版本:约 1~2 个开发日,覆盖单账号回调、验证、验签和现有事件分发复用。
- 可供公测的完整版本:约 3~5 个开发日,补齐多账号、重试去重、WebUI、测试与部署文档。
- 自动申请域名、证书或内网穿透不建议纳入主程序;若要内置此类基础设施,预计需额外 1~2 周并引入持续运维成本。
启动条件
出现明确的用户需求,并且目标用户具备稳定的公网 HTTPS 回调能力;或 Dice!Next 后续提供独立、可持续维护的云端事件中转服务。未满足条件前不启动实现。
2026-08-02 · 跨平台身份与群数据关联(讨论草案,未确定)
讨论目标
让 QQ 官方机器人、Discord、KOOK 等平台账号,在验证真实 QQ 控制权后,可关联既有 QQ:<真实QQ> 与 QQGroup:<真实群号> 的历史数据;保留旧插件对 QQ/群号主键的兼容。
当前讨论方向
- 骰主至少登录一次原 OneBot 骰号,保存其可见的群列表、成员 QQ、群主/管理员角色与采集时间,作为历史核验快照。
- 用户在新平台发起绑定时,先声明欲关联的纯数字 QQ 号。若 OneBot 在线,向该 QQ 私聊发送短时、一次性验证码;若 OneBot 不在线,向对应的
QQ号@qq.com邮箱发送验证码。验证码成功仅证明用户控制该 QQ 身份。 - 完成验证后,将新平台的“适配器 + 原始用户 ID”作为别名关联至
QQ:<真实QQ>,由统一身份解析读取原有个人数据,而不是复制、拼接或覆盖旧记录。 - 已验证的历史群主可把其新平台群关联到历史
QQGroup:<真实群号>:系统先核验该 QQ 在 OneBot 历史快照中是群主,再生成一次性群绑定码,并要求在目标平台的目标群完成确认。OneBot 在线时应优先刷新角色快照;离线时只能使用带时间标记的历史核验结果。 - 群关联只继承人物卡、团务、日志关联、规则/业务设置等数据入口;不继承踢人、退群、管理员名单或旧群管理权限。新平台的管理操作始终遵从新平台可读取的当前角色;QQ 官方机器人无角色接口时,不补发群管权限。
- 完全没有 OneBot 的场景仍可使用虚拟 QQ/群主键与双端一次性验证码建立逻辑关联,但不能声称该逻辑群已核验为真实 QQ 群。
尚待决定
- QQ 邮箱验证码的发件服务、限频、失败提示与是否要求 QQ 邮箱已激活。
- 目标平台无法读取群角色时,是否允许已验证历史群主直接完成数据关联,或要求骰主在 WebUI 额外确认。
- 两端原本均已有个人/群数据时的冲突处理与可回滚合并流程。
- 历史群主快照的有效期限、刷新频率及权限变化后的处理。