From 5cc5149aed2b3b6ce2a698171ed7e12de6f59158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 23 Jul 2024 14:19:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=88=E5=B9=B6=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/utils/MessageUnique.ts | 3 ++- src/core/src/apis/msg.ts | 20 +++++++------------ .../action/msg/SendMsg/handle-forward-node.ts | 7 ++++--- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/common/utils/MessageUnique.ts b/src/common/utils/MessageUnique.ts index 61879bf0..db1ddbcb 100644 --- a/src/common/utils/MessageUnique.ts +++ b/src/common/utils/MessageUnique.ts @@ -75,6 +75,7 @@ class MessageUniqueWrapper { const hash = crypto.createHash('sha1').update(key); const shortId = parseInt(hash.digest('hex').slice(0, 8), 16); const isExist = this.msgIdMap.getKey(shortId); + console.log(`${peer.peerUid} ${msgId} ------- ${shortId}`); if (isExist && isExist === msgId) { return shortId; } @@ -84,7 +85,7 @@ class MessageUniqueWrapper { } getMsgIdAndPeerByShortId(shortId: number): { MsgId: string; Peer: Peer } | undefined { - const data = this.msgIdMap.getKey(shortId); + const data = this.msgDataMap.getKey(shortId); if (data) { const [msgId, chatTypeStr, peerUid] = data.split('|'); const peer: Peer = { diff --git a/src/core/src/apis/msg.ts b/src/core/src/apis/msg.ts index e8e5f22b..901e59e4 100644 --- a/src/core/src/apis/msg.ts +++ b/src/core/src/apis/msg.ts @@ -52,19 +52,13 @@ msgListener.onGroupFileInfoUpdate = (groupFileListResult: onGroupFileInfoUpdateP } }; -// msgListener.onAddSendMsg = (msgRecord: RawMessage) => { -// // console.log("sent msg", msgRecord, sendMessagePool); -// for (const [uuid, cb] of sentMsgTasks) { -// cb(msgRecord); -// sentMsgTasks.delete(uuid); -// } -// if (sendMessagePool[msgRecord.peerUid]) { -// const r = sendMessagePool[msgRecord.peerUid]?.(msgRecord); -// if (r instanceof Promise) { -// r.then().catch(logError); -// } -// } -// }; +msgListener.onAddSendMsg = (msgRecord: RawMessage) => { + // console.log("sent msg", msgRecord, sendMessagePool); + for (const [uuid, cb] of sentMsgTasks) { + cb(msgRecord); + sentMsgTasks.delete(uuid); + } +}; // msgListener.onMsgInfoListUpdate = (msgInfoList: RawMessage[]) => { // msgInfoList.forEach(msg => { diff --git a/src/onebot11/action/msg/SendMsg/handle-forward-node.ts b/src/onebot11/action/msg/SendMsg/handle-forward-node.ts index 7d9cfec3..f6775a9e 100644 --- a/src/onebot11/action/msg/SendMsg/handle-forward-node.ts +++ b/src/onebot11/action/msg/SendMsg/handle-forward-node.ts @@ -13,7 +13,7 @@ async function cloneMsg(msg: RawMessage): Promise { peerUid: selfInfo.uid }; - // logDebug('克隆的目标消息', msg); + //logDebug('克隆的目标消息', msg); const sendElements: SendMessageElement[] = []; @@ -109,14 +109,15 @@ export async function handleForwardNode(destPeer: Peer, messageNodes: OB11Messag } } } - // 检查srcPeer是否一致,不一致则需要克隆成自己的消息, 让所有srcPeer都变成自己的,使其保持一致才能够转发 const nodeMsgArray: Array = []; + let srcPeer: Peer | undefined = undefined; let needSendSelf = false; for (const msgId of nodeMsgIds) { const nodeMsgPeer = await MessageUnique.getPeerByMsgId(msgId); const nodeMsg = (await NTQQMsgApi.getMsgsByMsgId(nodeMsgPeer?.Peer!, [msgId])).msgList[0]; + console.log("4545",nodeMsgPeer); if (nodeMsg) { nodeMsgArray.push(nodeMsg); if (!srcPeer) { @@ -127,7 +128,7 @@ export async function handleForwardNode(destPeer: Peer, messageNodes: OB11Messag } } } - //logDebug('nodeMsgArray', nodeMsgArray); + // logDebug('nodeMsgArray', nodeMsgArray); nodeMsgIds = nodeMsgArray.map(msg => msg.msgId); if (needSendSelf) { //logDebug('需要克隆转发消息');