nonebot/adapter-onebot

Bug: 当被回复消息不存在时,`event.message` 无法正确解析

MistEO opened this issue · 2 comments

描述问题:

RT, 在刚启动 nb 及后端时,经常会出现前面的被回复消息不存在的情况。这时候会报错 ActionFailed 消息不存在,但是 message 本身也出现了不解析的问题(还是 CQ 文本)

如何复现?

  1. 在群里发一些消息
  2. 启动 nb 及后端(我用的是 go-cqhttp)
  3. 回复启动前的一条消息
  4. See error

期望的结果

异常情况,这里给的还是 CQ 的文本,没有被解析成 dict (或者说是 Message 类型)

image

正常情况(一条能正常被回复的消息),成功被解析成了 Message

20230220232939

期望即使获取不到 reply 的其他信息,也保证 Message 类型能正常解析出来

环境信息:

  • OS: Ubuntu 22.04
  • Python Version: 3.8
  • Nonebot Version:
$ nb --version
nb: nonebot cli version 1.0.3

协议端信息:

  • 协议端: go-cqhttp
  • 协议端版本: 1.0.0-rc.4

截图或日志

部分复现代码

image

No more.

即便获取不到reply信息,event.message的类型也会是Message,pydantic是强类型检查。你看到的cq码只是Message转成了str

另外如果获取不到reply的其他信息,去掉了reply这个segment,那event.reply也会是空的,就等于直接丢了