LagrangeDev / Lagrange.Core

An Implementation of NTQQ Protocol, with Pure C#, Derived from Konata.Core
GNU General Public License v3.0
2.05k stars 259 forks source link

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

Closed lava081 closed 1 month ago

lava081 commented 6 months ago

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

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 commented 6 months ago

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.
ghost commented 6 months ago

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

InariInDream commented 2 months ago

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了 最近想开发用引用消息(回复)触发的一个插件,报错后找到这里了