Lagrange.Core icon indicating copy to clipboard operation
Lagrange.Core copied to clipboard

[Bug]: 对机器人私聊自发消息引用回复,收到的reply `id`为空

Open lava081 opened this issue 1 year ago • 2 comments

请确保您已阅读以上注意事项,并勾选下方的确认框。

  • [X] 我已经仔细阅读上述内容
  • [X] 我已经使用 最新构建 测试过,问题依旧存在。
  • [X] 我已经在 Issue Tracker 中找过我要提出的问题,没有找到相同问题的ISSUE。
  • [X] 我已知晓并同意,此处仅用于汇报程序中存在的问题。若这个 Issue 是关于其他非程序本身问题,则我的 Issue 可能会被无条件自动关闭或/并锁定。(其它疑问请考虑加入TG群询问或在discussions中提问)

Lagrange项目

OneBot

所使用/依赖的Lagrange项目对应的commit

42574843c4d66176fe78d800784514c66a749701

运行环境

Windows

运行架构

x64

连接方式

反向 WebSocket

重现步骤

在私聊中引用一条机器人的自发消息进行回复

期望的结果是什么?

{
    "type": "reply",
    "data": {
        "id": "123456"
    }
}

实际的结果是什么?

{
    "type": "reply",
    "data": {
        "id": "0"
    }
}

简单的复现代码/链接(可选)

No response

日志记录(可选)

No response

补充说明(可选)

No response

lava081 avatar Apr 01 '24 16:04 lava081

#273 之后,在群聊中引用机器人的自发消息回复,则收不到整条消息 错误日志:

info: Lagrange.Core.BotContext[0]
      [2024-04-02 09:53:13] [MessagingLogic] [VERBOSE]: [MessageChain(646247164)(1902688707)] [Forward]: Sequence: 38294 | [Text]:   | [Text]: 1
fail: Lagrange.Core.BotContext[0]
      [2024-04-02 09:53:13] [EventInvoker] [EXCEPTION]:    at LiteDB.Reflection.CreateInstance(Type type)
         at LiteDB.BsonMapper.DeserializeList(Type type, BsonArray value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.BsonMapper.DeserializeObject(EntityMapper entity, Object obj, BsonDocument value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.BsonMapper.DeserializeList(Type type, BsonArray value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.BsonMapper.DeserializeObject(EntityMapper entity, Object obj, BsonDocument value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.LiteQueryable`1.<ToEnumerable>b__27_2(BsonDocument x)
         at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
         at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Boolean& found)
         at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
         at LiteDB.LiteCollection`1.FindById(BsonValue id)
         at Lagrange.OneBot.Message.Entity.ReplySegment.FromEntity(MessageChain chain, IMessageEntity entity)
         at Lagrange.OneBot.Message.MessageService.Convert(MessageChain chain)
         at Lagrange.OneBot.Message.MessageService.ConvertToGroupMsg(UInt32 uin, MessageChain chain)
         at Lagrange.OneBot.Message.MessageService.OnGroupMessageReceived(BotContext bot, GroupMessageEvent e)
         at Lagrange.Core.Event.EventInvoker.<>c__DisplayClass3_0.<.ctor>b__7(GroupMessageEvent e)
         at Lagrange.Core.Event.EventInvoker.<>c__DisplayClass5_0.<PostEvent>b__0()
Failed to create instance for type 'Lagrange.Core.Message.MessageChain' from assembly 'Lagrange.Core.Message.MessageChain, Lagrange.Core, Version=0.2.1.0, Culture=neutral, PublicKeyToken=null'. Checks if the class has a public constructor with no parameters.

lava081 avatar Apr 02 '24 01:04 lava081

已经查明问题 储存的sequence和他吗腾讯返回的sequence不一样

ghost avatar Apr 03 '24 08:04 ghost

#273 之后,在群聊中引用机器人的自发消息回复,则收不到整条消息 错误日志:

info: Lagrange.Core.BotContext[0]
      [2024-04-02 09:53:13] [MessagingLogic] [VERBOSE]: [MessageChain(646247164)(1902688707)] [Forward]: Sequence: 38294 | [Text]:   | [Text]: 1
fail: Lagrange.Core.BotContext[0]
      [2024-04-02 09:53:13] [EventInvoker] [EXCEPTION]:    at LiteDB.Reflection.CreateInstance(Type type)
         at LiteDB.BsonMapper.DeserializeList(Type type, BsonArray value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.BsonMapper.DeserializeObject(EntityMapper entity, Object obj, BsonDocument value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.BsonMapper.DeserializeList(Type type, BsonArray value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.BsonMapper.DeserializeObject(EntityMapper entity, Object obj, BsonDocument value)
         at LiteDB.BsonMapper.Deserialize(Type type, BsonValue value)
         at LiteDB.LiteQueryable`1.<ToEnumerable>b__27_2(BsonDocument x)
         at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
         at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Boolean& found)
         at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
         at LiteDB.LiteCollection`1.FindById(BsonValue id)
         at Lagrange.OneBot.Message.Entity.ReplySegment.FromEntity(MessageChain chain, IMessageEntity entity)
         at Lagrange.OneBot.Message.MessageService.Convert(MessageChain chain)
         at Lagrange.OneBot.Message.MessageService.ConvertToGroupMsg(UInt32 uin, MessageChain chain)
         at Lagrange.OneBot.Message.MessageService.OnGroupMessageReceived(BotContext bot, GroupMessageEvent e)
         at Lagrange.Core.Event.EventInvoker.<>c__DisplayClass3_0.<.ctor>b__7(GroupMessageEvent e)
         at Lagrange.Core.Event.EventInvoker.<>c__DisplayClass5_0.<PostEvent>b__0()
Failed to create instance for type 'Lagrange.Core.Message.MessageChain' from assembly 'Lagrange.Core.Message.MessageChain, Lagrange.Core, Version=0.2.1.0, Culture=neutral, PublicKeyToken=null'. Checks if the class has a public constructor with no parameters.

请问有这个pr之前的build版本吗,actions里面这个pr之前的Artifacts都expired了 最近想开发用引用消息(回复)触发的一个插件,报错后找到这里了

InariInDream avatar Aug 19 '24 17:08 InariInDream