diff --git a/src/onebot/action/msg/GetMsg.ts b/src/onebot/action/msg/GetMsg.ts index 08b2e955..91526377 100644 --- a/src/onebot/action/msg/GetMsg.ts +++ b/src/onebot/action/msg/GetMsg.ts @@ -28,13 +28,13 @@ class GetMsg extends OneBotAction { throw new Error('消息不存在'); } const peer = { guildId: '', peerUid: msgIdWithPeer?.Peer.peerUid, chatType: msgIdWithPeer.Peer.chatType }; - const orimsg = this.obContext.recallMsgCache.get(msgIdWithPeer.MsgId); + //const orimsg = this.obContext.recallMsgCache.get(msgIdWithPeer.MsgId); let msg: RawMessage|undefined; - if (orimsg) { - msg = orimsg; - } else { + // if (orimsg) { + // msg = orimsg; + // } else { msg = (await this.core.apis.MsgApi.getMsgsByMsgId(peer, [msgIdWithPeer?.MsgId || payload.message_id.toString()])).msgList[0]; - } + //} if (!msg) throw Error('消息不存在'); const retMsg = await this.obContext.apis.MsgApi.parseMessage(msg, config.messagePostFormat); if (!retMsg) throw Error('消息为空'); diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 213fe486..2bca8497 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -61,7 +61,7 @@ export class NapCatOneBot11Adapter { networkManager: OB11NetworkManager; actions: ActionMap; private readonly bootTime = Date.now() / 1000; - recallMsgCache = new LRUCache(100); + //recallMsgCache = new LRUCache(100); constructor(core: NapCatCore, context: InstanceContext, pathWrapper: NapCatPathWrapper) { this.core = core; @@ -306,7 +306,9 @@ export class NapCatOneBot11Adapter { }; let msg = (await this.core.apis.MsgApi.queryMsgsWithFilterExWithSeq(peer, msgSeq)).msgList.find(e => e.msgType == NTMsgType.KMSGTYPEGRAYTIPS); const element = msg?.elements.find(e => !!e.grayTipElement?.revokeElement); - if (element?.grayTipElement?.revokeElement.isSelfOperate && msg) { + let isSelfOperateDevice = element?.grayTipElement?.revokeElement.operatorUid == this.core.selfInfo.uid; + // 其它设备的UID是不一样的 UID跟设备有关 从而放掉其它设备来的recall 避免二次吞掉recall + if (msg && element?.grayTipElement?.revokeElement.isSelfOperate && isSelfOperateDevice) { await this.core.eventWrapper.registerListen('NodeIKernelMsgListener/onMsgRecall', (chatType: ChatType, uid: string, msgSeq: string) => { return chatType === msg?.chatType && uid === msg?.peerUid && msgSeq === msg?.msgSeq;