From 641068954972c85889a9e63d1534b2b1c14f0a88 Mon Sep 17 00:00:00 2001 From: Alen Date: Thu, 1 Aug 2024 21:56:44 +0800 Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 尝试修复设精事件shortId和senderId --- src/onebot11/constructor.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index eaae427..a3eacbe 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -547,12 +547,14 @@ export class OB11Constructor { chatType: ChatType.group, peerUid: Group! }; - const msgList = (await NTQQMsgApi.getMsgsBySeqAndCount(Peer, msgSeq.toString(), 1, true, true)).msgList; - // (待解决) getMsgByLongId 拿到的 ShortId 经常跟实际 Msg 对不上(但msgId是一致的)。 - // 不过引用消息拿到的 ShortId 是对的。 - //console.log("原始消息: ", msgList); - //console.log("本地缓存: ", await dbUtil.getMsgByLongId(msgList[0].msgId)); - return new OB11GroupEssenceEvent(parseInt(msg.peerUid), Number(((await dbUtil.getMsgByLongId(msgList[0].msgId)).msgShortId)!), parseInt(msgList[0].senderUin)); + let msgList = (await NTQQMsgApi.getMsgsBySeqAndCount(Peer, msgSeq.toString(), 1, true, true)).msgList; + const origMsg = await dbUtil.getMsgByLongId(msgList[0].msgId); + const postMsg = await dbUtil.getMsgBySeqId(origMsg.msgSeq) ?? origMsg; + // 如果 senderUin 为 0,可能是 历史消息 或 自身消息 + if (msgList[0].senderUin === '0') { + msgList[0].senderUin = postMsg?.senderUin ?? selfInfo.uin; + } + return new OB11GroupEssenceEvent(parseInt(msg.peerUid), postMsg.msgShortId, parseInt(msgList[0].senderUin)); // 获取MsgSeq+Peer可获取具体消息 } if (grayTipElement.jsonGrayTipElement.busiId == 2407) {