LLOneBot 对接 NoneBot2 OneBot 适配器时消息事件上报问题解析
【免费下载链接】LLOneBot 使你的NTQQ支持OneBot11协议进行QQ机器人开发 项目地址: https://gitcode.com/gh_mirrors/ll/LLOneBot
问题背景
在使用 LLOneBot 插件对接 NoneBot2 的 OneBot 适配器时,开发者遇到了消息事件上报失败的问题。经过分析发现,这是由于上报数据中缺少了 raw_message 和 font 两个必填字段导致的。
技术分析
OneBot 协议规范要求
根据 OneBot v11 协议规范,群消息事件数据中必须包含 raw_message 和 font 字段。其中:
- raw_message 字段原本用于存储 CQ 码格式的原始消息
- font 字段用于标识消息字体样式
实际对接中的问题表现
在对接过程中,NoneBot2 的 OneBot 适配器会严格校验这些必填字段。当 LLOneBot 最初版本未包含这些字段时,会导致消息事件上报失败。
解决方案
经过测试验证,解决方案如下:
-
对于 raw_message 字段:
- 由于 CQ 码已过时,且 QQNT 使用新的消息格式
- 暂时填充空字符串,不影响消息解析
- 后续可考虑支持 CQ 码转换(如有需求)
-
对于 font 字段:
- 由于 QQNT 中所有用户字体样式相同
- 固定填充值为 0
配置建议
对于希望使用 LLOneBot 对接 NoneBot2 的开发者,建议采用以下配置:
NoneBot2 配置
PORT=5000 # NoneBot2 监听端口
driver=~fastapi+~httpx+~websockets
ONEBOT_API_ROOTS={"QQ号码": "http://127.0.0.1:3000/"}
LLOneBot 配置
- 监听端口:3000
- 事件上报地址:http://127.0.0.1:5000/onebot/v11/
常见问题排查
如果对接不成功,可以按照以下步骤排查:
-
检查配置文件
- 确认 QQNT 安装目录下的 LLOneBot 配置是否正确
- 删除多余的 config_*.json 文件
-
检查服务状态
- 确保 QQNT 已正常登录
- 确认 LLOneBot 监听服务已启动
-
检查消息上报
- 在 QQNT 命令行界面查看是否有上报日志
- 在 NoneBot2 控制台查看是否收到事件
-
网络配置检查
- 确保 NoneBot2 和 LLOneBot 使用相同的 IP 地址
- 单机测试建议使用 127.0.0.1
- 跨机测试需要使用局域网 IP
总结
LLOneBot 在 v2.0.2 版本中已修复了消息上报字段缺失的问题。开发者现在可以正常对接 NoneBot2 的 OneBot 适配器。虽然 raw_message 字段目前为空,但这不会影响基本的消息解析和处理功能。未来如有需要,可以考虑增加对 CQ 码格式的支持。
【免费下载链接】LLOneBot 使你的NTQQ支持OneBot11协议进行QQ机器人开发 项目地址: https://gitcode.com/gh_mirrors/ll/LLOneBot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



