diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index 78148782..03bb110f 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -39,15 +39,16 @@ export class GoCQHTTPGetForwardMsgAction extends BaseAction { throw Error('找不到相关的聊天记录' + data?.errMsg); } const msgList = data.msgList; - const messages = await Promise.all(msgList.map(async msg => { + const messages = (await Promise.all(msgList.map(async msg => { const resMsg = await OB11Constructor.message(this.CoreContext, msg, 'array'); + if (!resMsg) return; resMsg.message_id = MessageUnique.createMsg({ guildId: '', chatType: msg.chatType, peerUid: msg.peerUid, }, msg.msgId)!; return resMsg; - })); + }))).filter(msg => !!msg); messages.map(msg => { (msg).content = msg.message; delete (msg).message; diff --git a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts index 545520be..2fdfb528 100644 --- a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts @@ -53,7 +53,7 @@ export default class GetFriendMsgHistory extends BaseAction { msg.id = MessageUnique.createMsg({ guildId: '', chatType: msg.chatType, peerUid: msg.peerUid }, msg.msgId); })); //转换消息 - const ob11MsgList = await Promise.all(msgList.map(msg => OB11Constructor.message(this.CoreContext, msg, 'array'))); + const ob11MsgList = (await Promise.all(msgList.map(msg => OB11Constructor.message(this.CoreContext, msg, 'array')))).filter(msg => !!msg); return { 'messages': ob11MsgList }; } } diff --git a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts index 65f634ea..531cf205 100644 --- a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -48,7 +48,7 @@ export default class GoCQHTTPGetGroupMsgHistory extends BaseAction OB11Constructor.message(this.CoreContext, msg, 'array'))); + const ob11MsgList = (await Promise.all(msgList.map(msg => OB11Constructor.message(this.CoreContext, msg, 'array')))).filter(msg => !!msg); return { 'messages': ob11MsgList }; } } diff --git a/src/onebot/action/msg/GetMsg.ts b/src/onebot/action/msg/GetMsg.ts index 40c8ef9c..a88b3af4 100644 --- a/src/onebot/action/msg/GetMsg.ts +++ b/src/onebot/action/msg/GetMsg.ts @@ -38,6 +38,7 @@ class GetMsg extends BaseAction { peer, [msgIdWithPeer?.MsgId || payload.message_id.toString()]); const retMsg = await OB11Constructor.message(this.CoreContext, msg.msgList[0], 'array'); + if(!retMsg) throw Error('消息为空'); try { retMsg.message_id = MessageUnique.createMsg(peer, msg.msgList[0].msgId)!; retMsg.message_seq = retMsg.message_id; diff --git a/src/onebot/helper/data.ts b/src/onebot/helper/data.ts index f1381965..10de6f45 100644 --- a/src/onebot/helper/data.ts +++ b/src/onebot/helper/data.ts @@ -42,10 +42,14 @@ import { OB11BaseNoticeEvent } from '../event/notice/OB11BaseNoticeEvent'; import { OB11GroupEssenceEvent } from '../event/notice/OB11GroupEssenceEvent'; import { MessageUnique } from '@/common/utils/MessageUnique'; import { NapCatCore } from '@/core'; +import { c } from 'vite/dist/node/types.d-aGj9QkWt'; export class OB11Constructor { - static async message(core: NapCatCore, msg: RawMessage, messagePostFormat: any): Promise { + static async message(core: NapCatCore, msg: RawMessage, messagePostFormat: any): Promise { + if (msg.senderUin == "0") return; + if (msg.peerUin == "0") return; + //跳过空消息 const NTQQGroupApi = core.apis.GroupApi; const NTQQUserApi = core.apis.UserApi; const NTQQFileApi = core.apis.FileApi; @@ -141,7 +145,7 @@ export class OB11Constructor { message_data['type'] = OB11MessageDataType.reply; //log("收到回复消息", element.replyElement); try { - const records = msg.records.find(msgRecord => msgRecord.msgId === element.replyElement.sourceMsgIdInRecords); + const records = msg.records.find(msgRecord => msgRecord.msgId === element?.replyElement?.sourceMsgIdInRecords); const peer = { chatType: msg.chatType, peerUid: msg.peerUid, @@ -278,13 +282,13 @@ export class OB11Constructor { chatType: msg.chatType, guildId: '', }, - msg.msgId, - msg.msgSeq, - msg.senderUid, - element.elementId, - element.elementType.toString(), - element.pttElement.fileSize || '0', - element.pttElement.fileUuid || '', + msg.msgId, + msg.msgSeq, + msg.senderUid, + element.elementId, + element.elementType.toString(), + element.pttElement.fileSize || '0', + element.pttElement.fileUuid || '', ); //以uuid作为文件名 } else if (element.arkElement) { @@ -343,6 +347,7 @@ export class OB11Constructor { MultiMsg.parentMsgIdList = msg.parentMsgIdList; MultiMsg.id = MessageUnique.createMsg(ParentMsgPeer, MultiMsg.msgId);//该ID仅用查看 无法调用 const msgList = await OB11Constructor.message(core, MultiMsg, 'array'); + if (!msgList) continue; message_data['data']['content'].push(msgList); //console.log("合并消息", msgList); } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 58b9f81c..8796435f 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -255,6 +255,7 @@ export class NapCatOneBot11Adapter { // 完成后再post OB11Constructor.message(this.core, msg, this.configLoader.configData.messagePostFormat) .then((ob11Msg) => { + if(!ob11Msg) return; ob11Msg.target_id = parseInt(msg.peerUin); if (this.configLoader.configData.reportSelfMessage) { msg.id = MessageUnique.createMsg({ @@ -425,6 +426,7 @@ export class NapCatOneBot11Adapter { const { debug, reportSelfMessage, messagePostFormat } = this.configLoader.configData; this.context.logger.logDebug('收到新消息 RawMessage', message); OB11Constructor.message(this.core, message, messagePostFormat).then((ob11Msg) => { + if(!ob11Msg) return; this.context.logger.logDebug('转化为 OB11Message', ob11Msg); if (debug) { ob11Msg.raw = message;