Bug: 回复视频消息时,event.dict()['reply']['message'] 字符串转码错误
MistEO opened this issue · 13 comments
描述问题:
如题,回复视频消息时,event.dict()['reply']['message']
中,[CQ:video,xxxx]
变成了 [CQ:video,xxxx]
目前只发现视频有这个问题,图片等其他的 CQ 码,就是正常的(当然不排除还有些特殊的 CQ 码也有转义错误我没发现的)
如何复现?
- 发送一段视频
- 回复这条视频
- nonebot 收到 2 中的回复,event.dict()['reply']['message'] 出现该转码错误
- 同样的情况如果是一张图片,则没有该问题:
期望的结果
能正确给出 [CQ:video,xxxx]
, 而不是 [CQ:video,xxxx]
环境信息:
- OS: Ubuntu 20.04
- Python Version: Python 3.8.10
- Nonebot Version: 2.0.0-beta.1
协议端信息:
- 协议端: go-cqhttp
- 协议端版本: v1.0.0-rc1
截图或日志
如上
我觉得有可能是gocq那边协议端的问题,因为这些数据处理的流程都是完全一样的,不太可能会出现视频有问题但是图片没有这种情况
你可以试着打开gocq的debug模式,检查一下消息发送前后API上报数据
另外我不太理解为什么要用判断cq码再使用event.dict这种形式,我记得message event是直接有reply字段的?
我觉得有可能是gocq那边协议端的问题,因为这些数据处理的流程都是完全一样的,不太可能会出现视频有问题但是图片没有这种情况
你可以试着打开gocq的debug模式,检查一下消息发送前后API上报数据
另外我不太理解为什么要用判断cq码再使用event.dict这种形式,我记得message event是直接有reply字段的?
用这种奇怪的方式是因为我需要被回复的那条消息的 raw_message(一个带 cq 码的 str),而不是一个 dict 或 json_(:з」∠)_
event.reply
是 OneBot Adapter 在发现 reply 后去请求 /get_msg
API 获取的,试一下手动调 gocq 的 API,检查一下这两条消息的内容。
说起来这个 Issue 也 Transfer 到 nonebot/adapter-onebot 比较好?
另外提这个 issue 时使用的是 gocq v1.0.0-rc1
, 当前手动调用验证的时候我更新了一下到 dev 的 最新 commit, 不过好像并没有什么区别
nonebot 没有更新,仍使用 2.0.0-beta.1
转念一想,这个似乎是 gocq 的问题?CQ 协议有要求 =
后面一定有值么_(:з」∠)_我去翻翻他们的文档
转念一想,这个似乎是 gocq 的问题?CQ 协议有要求
=
后面一定有值么_(:з」∠)_我去翻翻他们的文档原来是这个问题啊…以前有讨论过
确实可以了,感谢大佬 ✿✿ヽ(°▽°)ノ✿
@yanyongyu 这是一个Bug,我们应该进行修复。
参考PR:nonebot/aiocqhttp#65