KomeiDiSanXian / RemiliaBot

自改 ZeroBot-Plugin,删除了一些用不上的插件
GNU Affero General Public License v3.0
7 stars 3 forks source link

热词提示ERROR: 历史消息为空或者无法获得历史消息 #1

Open tmdakm opened 4 months ago

tmdakm commented 4 months ago

d9d9ec8afc7e18e13ab0e44bec21a2f8 6a6d87815cafc6b3593c01334c9ade9e

KomeiDiSanXian commented 4 months ago

定位到问题在zerobot/api.go中, L549

// GettLatestGroupMessageHistory 获取最新群消息历史记录
func (ctx *Ctx) GetLatestGroupMessageHistory(groupID int64) gjson.Result {
    return ctx.CallAction("get_group_msg_history", Params{
        "group_id": groupID,
    }).Data
}

拉格兰文档中写明该api需要以下参数

字段 类型 说明
group_id uint 群组 ID
message_id int 要获取的消息的最后一条的 ID
count int 获取的消息数量

测试时发送示例如下

正向ws

{
"action": "get_group_msg_history",
"params": {
"group_id": 820309545,
"count": 100,
"message_id": 562894955
}
}

拉格兰返回如下

trce: Lagrange.Core.BotContext[0]
      [2024-05-16 22:44:56] [ServiceContext] [DEBUG]: Outgoing SSOFrame: OidbSvcTrpcTcp.0xfe7_3
trce: Lagrange.Core.BotContext[0]
      [2024-05-16 22:44:56] [ServiceContext] [DEBUG]: Incoming SSOFrame: OidbSvcTrpcTcp.0xfe7_3
warn: Lagrange.OneBot.Core.Operation.OperationService[0]
      Unexpected error encountered while handling message.
      System.Exception: Group member not found
         at Lagrange.OneBot.Message.MessageService.ConvertToGroupMsg(UInt32 uin, MessageChain chain)
         at Lagrange.OneBot.Core.Operation.Message.GetGroupMessageHistoryOperation.<>c__DisplayClass3_0.<HandleOperation>b__2(MessageChain x)
         at System.Linq.Enumerable.SelectListIterator`2.Fill(ReadOnlySpan`1 source, Span`1 destination, Func`2 func)
         at System.Linq.Enumerable.SelectListIterator`2.ToList()
         at Lagrange.OneBot.Core.Operation.Message.GetGroupMessageHistoryOperation.HandleOperation(BotContext context, JsonNode payload)
         at Lagrange.OneBot.Core.Operation.OperationService.HandleOperation(MsgRecvEventArgs e)
trce: Lagrange.OneBot.Core.Network.Service.ForwardWSService[13]
      Send(5d880f9f-d52a-44ce-8bd7-32a1c28887a6) {"status":"failed","retcode":200,"data":null,"echo":null}

似乎此api仍有bug? 等待进一步测试

KomeiDiSanXian commented 4 months ago

定位到问题在zerobot/api.go中, L549

// GettLatestGroupMessageHistory 获取最新群消息历史记录
func (ctx *Ctx) GetLatestGroupMessageHistory(groupID int64) gjson.Result {
  return ctx.CallAction("get_group_msg_history", Params{
      "group_id": groupID,
  }).Data
}

拉格兰文档中写明该api需要以下参数 字段 类型 说明 group_id uint 群组 ID message_id int 要获取的消息的最后一条的 ID count int 获取的消息数量

测试时发送示例如下

正向ws

{
    "action": "get_group_msg_history",
    "params": {
        "group_id": 820309545,
        "count": 100,
        "message_id": 562894955
    }
}

拉格兰返回如下

trce: Lagrange.Core.BotContext[0]
      [2024-05-16 22:44:56] [ServiceContext] [DEBUG]: Outgoing SSOFrame: OidbSvcTrpcTcp.0xfe7_3
trce: Lagrange.Core.BotContext[0]
      [2024-05-16 22:44:56] [ServiceContext] [DEBUG]: Incoming SSOFrame: OidbSvcTrpcTcp.0xfe7_3
warn: Lagrange.OneBot.Core.Operation.OperationService[0]
      Unexpected error encountered while handling message.
      System.Exception: Group member not found
         at Lagrange.OneBot.Message.MessageService.ConvertToGroupMsg(UInt32 uin, MessageChain chain)
         at Lagrange.OneBot.Core.Operation.Message.GetGroupMessageHistoryOperation.<>c__DisplayClass3_0.<HandleOperation>b__2(MessageChain x)
         at System.Linq.Enumerable.SelectListIterator`2.Fill(ReadOnlySpan`1 source, Span`1 destination, Func`2 func)
         at System.Linq.Enumerable.SelectListIterator`2.ToList()
         at Lagrange.OneBot.Core.Operation.Message.GetGroupMessageHistoryOperation.HandleOperation(BotContext context, JsonNode payload)
         at Lagrange.OneBot.Core.Operation.OperationService.HandleOperation(MsgRecvEventArgs e)
trce: Lagrange.OneBot.Core.Network.Service.ForwardWSService[13]
      Send(5d880f9f-d52a-44ce-8bd7-32a1c28887a6) {"status":"failed","retcode":200,"data":null,"echo":null}

似乎此api仍有bug? 等待进一步测试

更改参数 count 为 10 以后能正常获取,15 也能正常获取. 出现这一问题可能是读取到的消息没100导致的? 进一步的测试表明,获取消息最大数量为 30.

需要等待拉格兰那边回复