diff --git a/src/core/core.ts b/src/core/core.ts index 9069a603..8599bf87 100644 --- a/src/core/core.ts +++ b/src/core/core.ts @@ -196,6 +196,9 @@ export class NapCatCore { this.apis.GroupApi.groupMemberCache.set(groupCode, members); } }; + this.context.session.getGroupService().addKernelGroupListener( + new this.context.wrapper.NodeIKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)), + ); } checkAdminEvent(groupCode: string, memberNew: GroupMember, memberOld: GroupMember | undefined): boolean { if (memberNew.role !== memberOld?.role) { diff --git a/src/onebot/helper/data.ts b/src/onebot/helper/data.ts index 7cb7e9e2..44dbe87f 100644 --- a/src/onebot/helper/data.ts +++ b/src/onebot/helper/data.ts @@ -149,7 +149,6 @@ export class OB11Constructor { message_data['type'] = OB11MessageDataType.reply; //log("收到回复消息", element.replyElement); try { - let oldMsgFlag = false; const records = msg.records.find(msgRecord => msgRecord.msgId === element?.replyElement?.sourceMsgIdInRecords); const peer = { chatType: msg.chatType, @@ -164,14 +163,17 @@ export class OB11Constructor { chatType: msg.chatType, }, element.replyElement.replayMsgSeq, 1, true, true)).msgList.find(msg => msg.msgRandom === records.msgRandom); if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - if (!replyMsg && records.msgRandom === '0') oldMsgFlag = true; replyMsg = (await NTQQMsgApi.getSingleMsg(peer, element.replyElement.replayMsgSeq)).msgList[0]; } if (msg.peerUin == '284840486') { //合并消息内侧 消息具体定位不到 } - if ((!replyMsg || (records.msgRandom !== replyMsg.msgRandom && !oldMsgFlag || (oldMsgFlag && records.msgSeq !== replyMsg.msgSeq))) && msg.peerUin !== '284840486') { - throw new Error('回复消息消息验证失败'); + if ((!replyMsg || records.msgRandom !== replyMsg.msgRandom) && msg.peerUin !== '284840486') { + const replyMsgList = (await NTQQMsgApi.getMsgExBySeq(peer, records.msgSeq)).msgList; + if (replyMsgList.length < 1) { + throw new Error('回复消息消息验证失败'); + } + replyMsg = replyMsgList.filter(e => e.msgSeq == records.msgSeq).sort((a, b) => parseInt(a.msgTime) - parseInt(b.msgTime))[0]; } message_data['data']['id'] = MessageUnique.createMsg({ peerUid: msg.peerUid,