MrXiaoM / Overflow

替换 mirai 实现为 Onebot 以进行无缝迁移
https://mirai.mrxiaom.top
GNU Affero General Public License v3.0
337 stars 25 forks source link

接受合并转发消息时qqnt及overflow无响应 #81

Closed sitherx closed 3 months ago

sitherx commented 3 months ago

问题描述

群聊中有人合并转发消息时,qq会卡死一段时间,表现为不加载新消息且点开任意群聊不显示消息;overflow端则一段时间后报错。 卡死时间与合并转发消息长短相关,合并转发两条消息也会导致qq卡死数秒,转发长的、多层嵌套的消息可导致qq卡死数分钟。 移除所有插件qq仍会卡死;关闭overflow仅保留nonebot则qq不会卡死。

复现

向群聊中合并转发消息

Overflow 版本

2.16.0-0142120-SNAPSHOT

其他组件版本

windows QQNT 9.9.12-25493(64位) liteloader1.1.1 llonebot v3.26.5 nonebot 2.3.2

系统日志

2024-08-06 19:33:07 W/Onebot: 请求失败: [get_forward_msg] 请求失败: app=LLOneBot v3.26.5, message=ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],, retJson={"status":"failed","retcode":1200,"data":null,"message":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","wording":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","echo":32}。如果你认为这是 Overflow 的问题,请带上 logs/onebot 中的日志来反馈。
2024-08-06 19:33:07 W/Overflow: 解析消息 forward -> {"id":"7399******419189630"} 时出现错误 (LLOneBot v3.26.5)
java.lang.IllegalStateException: 无法下载转发消息,详见网络日志 (logs/onebot/*.log
        at top.mrxiaom.overflow.internal.Overflow.downloadForwardMessage(Overflow.kt:403)
        at top.mrxiaom.overflow.internal.Overflow$downloadForwardMessage$1.invokeSuspend(Overflow.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

网络日志

2024-08-06 19:33:02 D/Onebot: [Send] --> {"action":"get_forward_msg","params":{"id":"7399******419189630"},"echo":32}
2024-08-06 19:33:07 D/Onebot: [Recv] <-- {"status":"failed","retcode":1200,"data":null,"message":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","wording":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","echo":32}
2024-08-06 19:33:07 W/Onebot: 请求失败: [get_forward_msg] 请求失败: app=LLOneBot v3.26.5, message=ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],, retJson={"status":"failed","retcode":1200,"data":null,"message":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","wording":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","echo":32}。如果你认为这是 Overflow 的问题,请带上 logs/onebot 中的日志来反馈。
2024-08-06 19:33:07 V/Onebot: Stacktrace: 
cn.evolvefield.onebot.client.util.ActionFailedException: 请求失败: app=LLOneBot v3.26.5, message=ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],, retJson={"status":"failed","retcode":1200,"data":null,"message":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","wording":"ntqq api timeout IPC_UP_2, ns-ntApi-2, nodeIKernelMsgService/getMultiMsg, nodeIKernelMsgService/getMultiMsg,[object Object],","echo":32}
    at cn.evolvefield.onebot.client.util.ActionSendRequest.send(ActionSendRequest.kt:67)
    at cn.evolvefield.onebot.client.util.ActionSendRequest$send$1.invokeSuspend(ActionSendRequest.kt)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
    at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

补充信息

No response

MrXiaoM commented 3 months ago

在 LLOnebot 3.27 无法复现你说的无响应,反而无法获取 (补充:嵌套的无法获取)

[get_forward_msg] 请求失败: app=LLOneBot v3.27.1, message=Error: 找不到相关的聊天记录Data Not Existed!
sitherx commented 3 months ago

可能和群数量多以及性能有关 目前回滚到了llonebot3.19.4 3.20之前版本不上报合并转发消息 算是规避了问题

sitherx commented 3 months ago

尝试更新llonebot至3.28 已解决