From 106fbaf086d08b5368a28aa3e72e14efe2b822ed Mon Sep 17 00:00:00 2001 From: Seijo Cecilia Date: Sun, 25 Aug 2024 10:12:36 +0800 Subject: [PATCH] refactor: make parseMessage an instance method --- src/onebot/action/go-cqhttp/GetForwardMsg.ts | 7 +- .../action/go-cqhttp/GetFriendMsgHistory.ts | 8 +- .../action/go-cqhttp/GetGroupMsgHistory.ts | 8 +- src/onebot/action/msg/GetMsg.ts | 7 +- src/onebot/action/user/GetRecentContact.ts | 7 +- src/onebot/api/msg.ts | 167 ++++++++++++++---- src/onebot/helper/index.ts | 3 +- src/onebot/helper/parseMessage.ts | 117 ------------ src/onebot/index.ts | 8 +- 9 files changed, 158 insertions(+), 174 deletions(-) delete mode 100644 src/onebot/helper/parseMessage.ts diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index 0199593d..2231b8ec 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -1,10 +1,8 @@ import BaseAction from '../BaseAction'; -import { OB11ForwardMessage, OB11Message, OB11MessageData } from '../../types'; -import { OB11Constructor } from '@/onebot/helper/converter'; +import { OB11ForwardMessage, OB11Message, OB11MessageData } from '@/onebot'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/utils/MessageUnique'; -import { RawNTMsg2Onebot } from '@/onebot/helper'; const SchemaData = { type: 'object', @@ -41,7 +39,8 @@ export class GoCQHTTPGetForwardMsgAction extends BaseAction { } const msgList = data.msgList; const messages = (await Promise.all(msgList.map(async msg => { - const resMsg = await RawNTMsg2Onebot(this.CoreContext, this.OneBotContext, msg); + const resMsg = await this.OneBotContext.apiContext.MsgApi + .parseMessage(msg); if (!resMsg) return; resMsg.message_id = MessageUnique.createMsg({ guildId: '', diff --git a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts index 83759ab3..9b436a1f 100644 --- a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts @@ -1,11 +1,9 @@ import BaseAction from '../BaseAction'; -import { OB11Message } from '../../types'; +import { OB11Message } from '@/onebot'; import { ActionName } from '../types'; import { ChatType, RawMessage } from '@/core/entities'; -import { OB11Constructor } from '@/onebot/helper/converter'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/utils/MessageUnique'; -import { RawNTMsg2Onebot } from '@/onebot/helper'; interface Response { messages: OB11Message[]; @@ -54,7 +52,9 @@ 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 => RawNTMsg2Onebot(this.CoreContext, this.OneBotContext, msg)))).filter(msg => !!msg); + const ob11MsgList = (await Promise.all( + msgList.map(msg => this.OneBotContext.apiContext.MsgApi.parseMessage(msg))) + ).filter(msg => msg !== undefined); return { 'messages': ob11MsgList }; } } diff --git a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts index d714f8ea..43d413f0 100644 --- a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -1,11 +1,9 @@ import BaseAction from '../BaseAction'; -import { OB11Message } from '../../types'; +import { OB11Message } from '@/onebot'; import { ActionName } from '../types'; import { ChatType, Peer, RawMessage } from '@/core/entities'; -import { OB11Constructor } from '@/onebot/helper/converter'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/utils/MessageUnique'; -import { RawNTMsg2Onebot } from '@/onebot/helper'; interface Response { messages: OB11Message[]; @@ -49,7 +47,9 @@ export default class GoCQHTTPGetGroupMsgHistory extends BaseAction RawNTMsg2Onebot(this.CoreContext, this.OneBotContext, msg)))).filter(msg => !!msg); + const ob11MsgList = (await Promise.all( + msgList.map(msg => this.OneBotContext.apiContext.MsgApi.parseMessage(msg))) + ).filter(msg => msg !== undefined); return { 'messages': ob11MsgList }; } } diff --git a/src/onebot/action/msg/GetMsg.ts b/src/onebot/action/msg/GetMsg.ts index 656a97dc..2eb9ebe7 100644 --- a/src/onebot/action/msg/GetMsg.ts +++ b/src/onebot/action/msg/GetMsg.ts @@ -1,10 +1,8 @@ -import { OB11Message } from '../../types'; -import { OB11Constructor } from '@/onebot/helper/converter'; +import { OB11Message } from '@/onebot'; import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/utils/MessageUnique'; -import { RawNTMsg2Onebot } from '@/onebot/helper'; export type ReturnDataType = OB11Message @@ -38,13 +36,14 @@ class GetMsg extends BaseAction { const msg = await NTQQMsgApi.getMsgsByMsgId( peer, [msgIdWithPeer?.MsgId || payload.message_id.toString()]); - const retMsg = await RawNTMsg2Onebot(this.CoreContext, this.OneBotContext, msg.msgList[0], 'array'); + const retMsg = await this.OneBotContext.apiContext.MsgApi.parseMessage(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; retMsg.real_id = retMsg.message_id; } catch (e) { + // ignored } return retMsg; } diff --git a/src/onebot/action/user/GetRecentContact.ts b/src/onebot/action/user/GetRecentContact.ts index 4b2c61db..dc243983 100644 --- a/src/onebot/action/user/GetRecentContact.ts +++ b/src/onebot/action/user/GetRecentContact.ts @@ -1,8 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import BaseAction from '../BaseAction'; import { ActionName } from '../types'; -import { OB11Constructor } from '@/onebot/helper/converter'; -import { RawNTMsg2Onebot } from '@/onebot/helper'; const SchemaData = { type: 'object', @@ -21,11 +19,11 @@ export default class GetRecentContact extends BaseAction { const NTQQUserApi = this.CoreContext.apis.UserApi; const NTQQMsgApi = this.CoreContext.apis.MsgApi; const ret = await NTQQUserApi.getRecentContactListSnapShot(parseInt((payload.count || 10).toString())); - const data = await Promise.all(ret.info.changedList.map(async (t) => { + return await Promise.all(ret.info.changedList.map(async (t) => { const FastMsg = await NTQQMsgApi.getMsgsByMsgId({ chatType: t.chatType, peerUid: t.peerUid }, [t.msgId]); if (FastMsg.msgList.length > 0) { //扩展ret.info.changedList - const lastestMsg = await RawNTMsg2Onebot(this.CoreContext, this.OneBotContext,FastMsg.msgList[0], 'array'); + const lastestMsg = await this.OneBotContext.apiContext.MsgApi.parseMessage(FastMsg.msgList[0], 'array'); return { lastestMsg: lastestMsg, peerUin: t.peerUin, @@ -49,6 +47,5 @@ export default class GetRecentContact extends BaseAction { peerName: t.peerName, }; })); - return data; } } diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 5d957e67..1ffba3af 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -1,8 +1,10 @@ import { UUIDConverter } from '@/common/utils/helper'; import { MessageUnique } from '@/common/utils/MessageUnique'; -import { AtType, FaceIndex, MessageElement, NapCatCore, RawMessage } from '@/core'; -import { NapCatOneBot11Adapter, OB11MessageData, OB11MessageDataType } from '@/onebot'; -import { RawNTMsg2Onebot } from '../helper'; +import { AtType, ChatType, FaceIndex, MessageElement, NapCatCore, RawMessage } from '@/core'; +import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType } from '@/onebot'; +import { OB11Constructor } from '../helper'; +import { EventType } from '@/onebot/event/OB11BaseEvent'; +import { encodeCQCode } from '@/onebot/helper/cqcode'; export class OneBotMsgApi { obContext: NapCatOneBot11Adapter; @@ -12,11 +14,121 @@ export class OneBotMsgApi { this.obContext = obContext; this.coreContext = coreContext; } + + async parseMessage( + msg: RawMessage, + messagePostFormat: string = this.obContext.configLoader.configData.messagePostFormat + ) { + if (msg.senderUin == "0" || msg.senderUin == "") return; + if (msg.peerUin == "0" || msg.peerUin == "") return; + //跳过空消息 + const NTQQGroupApi = this.coreContext.apis.GroupApi; + const NTQQUserApi = this.coreContext.apis.UserApi; + const NTQQMsgApi = this.coreContext.apis.MsgApi; + const resMsg: OB11Message = { + self_id: parseInt(this.coreContext.selfInfo.uin), + user_id: parseInt(msg.senderUin!), + time: parseInt(msg.msgTime) || Date.now(), + message_id: msg.id!, + message_seq: msg.id!, + real_id: msg.id!, + message_type: msg.chatType == ChatType.KCHATTYPEGROUP ? 'group' : 'private', + sender: { + user_id: parseInt(msg.senderUin || '0'), + nickname: msg.sendNickName, + card: msg.sendMemberName || '', + }, + raw_message: '', + font: 14, + sub_type: 'friend', + message: messagePostFormat === 'string' ? '' : [], + message_format: messagePostFormat === 'string' ? 'string' : 'array', + post_type: this.coreContext.selfInfo.uin == msg.senderUin ? EventType.MESSAGE_SENT : EventType.MESSAGE, + }; + if (msg.chatType == ChatType.KCHATTYPEGROUP) { + resMsg.sub_type = 'normal'; // 这里go-cqhttp是group,而onebot11标准是normal, 蛋疼 + resMsg.group_id = parseInt(msg.peerUin); + let member = await NTQQGroupApi.getGroupMember(msg.peerUin, msg.senderUin); + if (!member) member = await NTQQGroupApi.getGroupMember(msg.peerUin, msg.senderUin); + if (member) { + resMsg.sender.role = OB11Constructor.groupMemberRole(member.role); + resMsg.sender.nickname = member.nick; + } + } else if (msg.chatType == ChatType.KCHATTYPEC2C) { + resMsg.sub_type = 'friend'; + resMsg.sender.nickname = (await NTQQUserApi.getUserDetailInfo(msg.senderUid)).nick; + } else if (msg.chatType == ChatType.KCHATTYPETEMPC2CFROMGROUP) { + resMsg.sub_type = 'group'; + const ret = await NTQQMsgApi.getTempChatInfo(ChatType.KCHATTYPETEMPC2CFROMGROUP, msg.senderUid); + if (ret.result === 0) { + resMsg.group_id = parseInt(ret.tmpChatInfo!.groupCode); + resMsg.sender.nickname = ret.tmpChatInfo!.fromNick; + } else { + resMsg.group_id = 284840486; //兜底数据 + resMsg.sender.nickname = "临时会话"; + } + } + for (const element of msg.elements) { + let message_data: OB11MessageData = { + data: {} as any, + type: 'unknown' as any, + }; + if (element.textElement && element.textElement?.atType !== AtType.notAt) { + const textAtMsgData = await this.obContext.apiContext.MsgApi.parseTextElemntWithAt(msg, element); + if (textAtMsgData) message_data = textAtMsgData; + } else if (element.textElement) { + const textMsgData = await this.obContext.apiContext.MsgApi.parseTextElement(msg, element); + if (textMsgData) message_data = textMsgData; + } else if (element.replyElement) { + const replyMsgData = await this.obContext.apiContext.MsgApi.parseReplyElement(msg, element); + if (replyMsgData) message_data = replyMsgData; + } else if (element.picElement) { + const PicMsgData = await this.obContext.apiContext.MsgApi.parsePicElement(msg, element); + if (PicMsgData) message_data = PicMsgData; + } else if (element.fileElement) { + const FileMsgData = await this.obContext.apiContext.MsgApi.parseFileElement(msg, element); + if (FileMsgData) message_data = FileMsgData; + } else if (element.videoElement) { + const videoMsgData = await this.obContext.apiContext.MsgApi.parseVideoElement(msg, element); + if (videoMsgData) message_data = videoMsgData; + } else if (element.pttElement) { + const pttMsgData = await this.obContext.apiContext.MsgApi.parsePTTElement(msg, element); + if (pttMsgData) message_data = pttMsgData; + } else if (element.arkElement) { + const arkMsgData = await this.obContext.apiContext.MsgApi.parseArkElement(msg, element); + if (arkMsgData) message_data = arkMsgData; + } else if (element.faceElement) { + const faceMsgData = await this.obContext.apiContext.MsgApi.parseFaceElement(msg, element); + if (faceMsgData) message_data = faceMsgData; + } else if (element.marketFaceElement) { + const marketFaceMsgData = await this.obContext.apiContext.MsgApi.parseMarketFaceElement(msg, element); + if (marketFaceMsgData) message_data = marketFaceMsgData; + } else if (element.markdownElement) { + message_data['type'] = OB11MessageDataType.markdown; + message_data['data']['data'] = element.markdownElement.content; + } else if (element.multiForwardMsgElement) { + const multiForwardMsgData = await this.obContext.apiContext.MsgApi.parseMultForwardElement(msg, element, messagePostFormat); + if (multiForwardMsgData) message_data = multiForwardMsgData; + } + if ((message_data.type as string) !== 'unknown' && message_data.data) { + const cqCode = encodeCQCode(message_data); + + if (messagePostFormat === 'string') { + (resMsg.message as string) += cqCode; + } else (resMsg.message as OB11MessageData[]).push(message_data); + resMsg.raw_message += cqCode; + } + + } + resMsg.raw_message = resMsg.raw_message.trim(); + return resMsg; + } + async parseFileElement(msg: RawMessage, element: MessageElement) { const fileElement = element.fileElement; if (!fileElement) return undefined; const NTQQFileApi = this.coreContext.apis.FileApi; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -46,12 +158,8 @@ export class OneBotMsgApi { const textElement = element.textElement; if (!textElement) return undefined; const NTQQUserApi = this.coreContext.apis.UserApi; - let message_data: OB11MessageData = { - data: {} as any, - type: 'unknown' as any, - }; let qq: `${number}` | 'all'; - let name: string | undefined; + // let name: string | undefined; if (textElement.atType == AtType.atAll) { qq = 'all'; } else { @@ -62,23 +170,22 @@ export class OneBotMsgApi { } if (atQQ) { qq = atQQ as `${number}`; - name = content.replace('@', ''); + // name = content.replace('@', ''); } } - message_data = { + return { type: OB11MessageDataType.at, data: { qq: qq!, - //name, + // name, }, }; - return message_data; } async parseTextElement(msg: RawMessage, element: MessageElement) { const textElement = element.textElement; if (!textElement) return undefined; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -99,7 +206,7 @@ export class OneBotMsgApi { const picElement = element.picElement; if (!picElement) return undefined; const NTQQFileApi = this.coreContext.apis.FileApi; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -121,7 +228,7 @@ export class OneBotMsgApi { } async parseMarketFaceElement(msg: RawMessage, element: MessageElement) { const NTQQFileApi = this.coreContext.apis.FileApi; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -150,7 +257,7 @@ export class OneBotMsgApi { const replyElement = element.replyElement; if (!replyElement) return undefined; const NTQQMsgApi = this.coreContext.apis.MsgApi; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -201,7 +308,7 @@ export class OneBotMsgApi { const videoElement = element.videoElement; if (!videoElement) return undefined; const NTQQFileApi = this.coreContext.apis.FileApi; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -262,7 +369,7 @@ export class OneBotMsgApi { const pttElement = element.pttElement; if (!pttElement) return undefined; const NTQQFileApi = this.coreContext.apis.FileApi; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -278,13 +385,13 @@ export class OneBotMsgApi { chatType: msg.chatType, guildId: '', }, - msg.msgId, - msg.msgSeq, - msg.senderUid, - element.elementId, - element.elementType.toString(), - pttElement.fileSize || '0', - pttElement.fileUuid || '' + msg.msgId, + msg.msgSeq, + msg.senderUid, + element.elementId, + element.elementType.toString(), + pttElement.fileSize || '0', + pttElement.fileUuid || '' ); //以uuid作为文件名 return message_data; @@ -292,7 +399,7 @@ export class OneBotMsgApi { async parseFaceElement(msg: RawMessage, element: MessageElement) { const faceElement = element.faceElement; if (!faceElement) return undefined; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -313,7 +420,7 @@ export class OneBotMsgApi { const NTQQMsgApi = this.coreContext.apis.MsgApi; const faceElement = element.multiForwardMsgElement; if (!faceElement) return undefined; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; @@ -340,7 +447,7 @@ export class OneBotMsgApi { MultiMsg.parentMsgPeer = ParentMsgPeer; MultiMsg.parentMsgIdList = msg.parentMsgIdList; MultiMsg.id = MessageUnique.createMsg(ParentMsgPeer, MultiMsg.msgId); //该ID仅用查看 无法调用 - const msgList = await RawNTMsg2Onebot(this.coreContext, this.obContext, MultiMsg, messagePostFormat); + const msgList = await this.parseMessage(MultiMsg, messagePostFormat); if (!msgList) continue; message_data['data']['content'].push(msgList); //console.log("合并消息", msgList); @@ -350,7 +457,7 @@ export class OneBotMsgApi { async parseArkElement(msg: RawMessage, element: MessageElement) { const arkElement = element.arkElement; if (!arkElement) return undefined; - let message_data: OB11MessageData = { + const message_data: OB11MessageData = { data: {} as any, type: 'unknown' as any, }; diff --git a/src/onebot/helper/index.ts b/src/onebot/helper/index.ts index 3ec6f3c0..3cfdbea9 100644 --- a/src/onebot/helper/index.ts +++ b/src/onebot/helper/index.ts @@ -1,6 +1,5 @@ export * from './config'; -export * from './parseMessage'; export * from './converter'; export * from './quick'; export * from './genMessage'; -export * from './event'; \ No newline at end of file +export * from './event'; diff --git a/src/onebot/helper/parseMessage.ts b/src/onebot/helper/parseMessage.ts deleted file mode 100644 index 93d1f110..00000000 --- a/src/onebot/helper/parseMessage.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType } from '..'; -import { AtType, ChatType, NapCatCore, RawMessage } from '@/core'; -import { EventType } from '../event/OB11BaseEvent'; -import { OB11Constructor } from './converter'; -import { encodeCQCode } from './cqcode'; - - -export async function RawNTMsg2Onebot( - core: NapCatCore, - obcore: NapCatOneBot11Adapter, - msg: RawMessage, - messagePostFormat: string = obcore.configLoader.configData.messagePostFormat -): Promise { - if (msg.senderUin == "0" || msg.senderUin == "") return; - if (msg.peerUin == "0" || msg.peerUin == "") return; - //跳过空消息 - const NTQQGroupApi = core.apis.GroupApi; - const NTQQUserApi = core.apis.UserApi; - const NTQQMsgApi = core.apis.MsgApi; - const resMsg: OB11Message = { - self_id: parseInt(core.selfInfo.uin), - user_id: parseInt(msg.senderUin!), - time: parseInt(msg.msgTime) || Date.now(), - message_id: msg.id!, - message_seq: msg.id!, - real_id: msg.id!, - message_type: msg.chatType == ChatType.KCHATTYPEGROUP ? 'group' : 'private', - sender: { - user_id: parseInt(msg.senderUin || '0'), - nickname: msg.sendNickName, - card: msg.sendMemberName || '', - }, - raw_message: '', - font: 14, - sub_type: 'friend', - message: messagePostFormat === 'string' ? '' : [], - message_format: messagePostFormat === 'string' ? 'string' : 'array', - post_type: core.selfInfo.uin == msg.senderUin ? EventType.MESSAGE_SENT : EventType.MESSAGE, - }; - if (msg.chatType == ChatType.KCHATTYPEGROUP) { - resMsg.sub_type = 'normal'; // 这里go-cqhttp是group,而onebot11标准是normal, 蛋疼 - resMsg.group_id = parseInt(msg.peerUin); - let member = await NTQQGroupApi.getGroupMember(msg.peerUin, msg.senderUin); - if (!member) member = await NTQQGroupApi.getGroupMember(msg.peerUin, msg.senderUin); - if (member) { - resMsg.sender.role = OB11Constructor.groupMemberRole(member.role); - resMsg.sender.nickname = member.nick; - } - } else if (msg.chatType == ChatType.KCHATTYPEC2C) { - resMsg.sub_type = 'friend'; - resMsg.sender.nickname = (await NTQQUserApi.getUserDetailInfo(msg.senderUid)).nick; - } else if (msg.chatType == ChatType.KCHATTYPETEMPC2CFROMGROUP) { - resMsg.sub_type = 'group'; - const ret = await NTQQMsgApi.getTempChatInfo(ChatType.KCHATTYPETEMPC2CFROMGROUP, msg.senderUid); - if (ret.result === 0) { - resMsg.group_id = parseInt(ret.tmpChatInfo!.groupCode); - resMsg.sender.nickname = ret.tmpChatInfo!.fromNick; - } else { - resMsg.group_id = 284840486; //兜底数据 - resMsg.sender.nickname = "临时会话"; - } - } - for (const element of msg.elements) { - let message_data: OB11MessageData = { - data: {} as any, - type: 'unknown' as any, - }; - if (element.textElement && element.textElement?.atType !== AtType.notAt) { - let textAtMsgData = await obcore.apiContext.MsgApi.parseTextElemntWithAt(msg, element); - if (textAtMsgData) message_data = textAtMsgData - } else if (element.textElement) { - let textMsgData = await obcore.apiContext.MsgApi.parseTextElement(msg, element); - if (textMsgData) message_data = textMsgData; - } else if (element.replyElement) { - let replyMsgData = await obcore.apiContext.MsgApi.parseReplyElement(msg, element); - if (replyMsgData) message_data = replyMsgData; - } else if (element.picElement) { - let PicMsgData = await obcore.apiContext.MsgApi.parsePicElement(msg, element); - if (PicMsgData) message_data = PicMsgData; - } else if (element.fileElement) { - let FileMsgData = await obcore.apiContext.MsgApi.parseFileElement(msg, element); - if (FileMsgData) message_data = FileMsgData; - } else if (element.videoElement) { - let videoMsgData = await obcore.apiContext.MsgApi.parseVideoElement(msg, element); - if (videoMsgData) message_data = videoMsgData; - } else if (element.pttElement) { - let pttMsgData = await obcore.apiContext.MsgApi.parsePTTElement(msg, element); - if (pttMsgData) message_data = pttMsgData; - } else if (element.arkElement) { - let arkMsgData = await obcore.apiContext.MsgApi.parseArkElement(msg, element); - if (arkMsgData) message_data = arkMsgData; - } else if (element.faceElement) { - let faceMsgData = await obcore.apiContext.MsgApi.parseFaceElement(msg, element); - if (faceMsgData) message_data = faceMsgData; - } else if (element.marketFaceElement) { - let marketFaceMsgData = await obcore.apiContext.MsgApi.parseMarketFaceElement(msg, element); - if (marketFaceMsgData) message_data = marketFaceMsgData; - } else if (element.markdownElement) { - message_data['type'] = OB11MessageDataType.markdown; - message_data['data']['data'] = element.markdownElement.content; - } else if (element.multiForwardMsgElement) { - let multiForwardMsgData = await obcore.apiContext.MsgApi.parseMultForwardElement(msg, element, messagePostFormat); - if (multiForwardMsgData) message_data = multiForwardMsgData; - } - if ((message_data.type as string) !== 'unknown' && message_data.data) { - const cqCode = encodeCQCode(message_data); - - if (messagePostFormat === 'string') { - (resMsg.message as string) += cqCode; - } else (resMsg.message as OB11MessageData[]).push(message_data); - resMsg.raw_message += cqCode; - } - - } - resMsg.raw_message = resMsg.raw_message.trim(); - return resMsg; -} diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 5bf805d4..d034277f 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -35,7 +35,7 @@ import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; import { OB11FriendRecallNoticeEvent } from '@/onebot/event/notice/OB11FriendRecallNoticeEvent'; import { OB11GroupRecallNoticeEvent } from '@/onebot/event/notice/OB11GroupRecallNoticeEvent'; import { LRUCache } from '@/common/utils/LRU'; -import { NT2GroupEvent, NT2PrivateEvent, RawNTMsg2Onebot } from './helper'; +import { NT2GroupEvent, NT2PrivateEvent } from './helper'; //OneBot实现类 export class NapCatOneBot11Adapter { @@ -258,7 +258,7 @@ export class NapCatOneBot11Adapter { if (msg.sendStatus == SendStatusType.KSEND_STATUS_SUCCESS && !msgIdSend.get(msg.msgId)) { msgIdSend.put(msg.msgId, true); // 完成后再post - RawNTMsg2Onebot(this.core, this, msg) + this.apiContext.MsgApi.parseMessage(msg) .then((ob11Msg) => { if (!ob11Msg) return; ob11Msg.target_id = parseInt(msg.peerUin); @@ -456,7 +456,7 @@ export class NapCatOneBot11Adapter { private async emitMsg(message: RawMessage) { const { debug, reportSelfMessage, messagePostFormat } = this.configLoader.configData; this.context.logger.logDebug('收到新消息 RawMessage', message); - RawNTMsg2Onebot(this.core, this, message, messagePostFormat).then((ob11Msg) => { + this.apiContext.MsgApi.parseMessage(message, messagePostFormat).then((ob11Msg) => { if (!ob11Msg) return; this.context.logger.logDebug('转化为 OB11Message', ob11Msg); if (debug) { @@ -497,7 +497,7 @@ export class NapCatOneBot11Adapter { for (const message of msgList) { // log("message update", message.sendStatus, message.msgId, message.msgSeq) if (message.recallTime != '0' && !cache.get(message.msgId)) { //todo: 这个判断方法不太好,应该使用灰色消息元素来判断? - cache.put(message.msgId, true) + cache.put(message.msgId, true); // 撤回消息上报 const oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId); if (!oriMessageId) {