From 3a03e455c639d94f8152f47d9df5f0c035c76e2f Mon Sep 17 00:00:00 2001 From: "Wesley F. Young" Date: Wed, 28 Aug 2024 10:50:39 +0800 Subject: [PATCH] refactor: extract emoji like parsing logic --- src/onebot/api/group.ts | 25 +++++++++++++++++++------ src/onebot/helper/event.ts | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index b9538b7b..c82e0263 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -112,8 +112,10 @@ export class OneBotGroupApi { return undefined; } - async parseGroupEmjioLikeEvent(GroupCode: string, grayTipElement: GrayTipElement) { - const NTQQMsgApi = this.core.apis.MsgApi; + async parseGroupEmojiLikeEventByGrayTip( + groupCode: string, + grayTipElement: GrayTipElement + ) { const emojiLikeData = new fastXmlParser.XMLParser({ ignoreAttributes: false, attributeNamePrefix: '', @@ -122,16 +124,27 @@ export class OneBotGroupApi { const senderUin = emojiLikeData.gtip.qq.jp; const msgSeq = emojiLikeData.gtip.url.msgseq; const emojiId = emojiLikeData.gtip.face.id; + return await this.createGroupEmojiLikeEvent(groupCode, senderUin, msgSeq, emojiId); + } + + private async createGroupEmojiLikeEvent( + groupCode: string, + senderUin: string, + msgSeq: string, + emojiId: string, + ) { const peer = { chatType: ChatType.KCHATTYPEGROUP, guildId: '', - peerUid: GroupCode, + peerUid: groupCode, }; - const replyMsgList = (await NTQQMsgApi.getMsgExBySeq(peer, msgSeq)).msgList; + const replyMsgList = (await this.core.apis.MsgApi.getMsgExBySeq(peer, msgSeq)).msgList; if (replyMsgList.length < 1) { return; } - const replyMsg = replyMsgList.filter(e => e.msgSeq == msgSeq).sort((a, b) => parseInt(a.msgTime) - parseInt(b.msgTime))[0]; + const replyMsg = replyMsgList + .filter(e => e.msgSeq == msgSeq) + .sort((a, b) => parseInt(a.msgTime) - parseInt(b.msgTime))[0]; //console.log("表情回应消息长度检测", msgSeq, replyMsg.elements); if (!replyMsg) { this.core.context.logger.logError('解析表情回应消息失败: 未找到回应消息'); @@ -139,7 +152,7 @@ export class OneBotGroupApi { } return new OB11GroupMsgEmojiLikeEvent( this.core, - parseInt(GroupCode), + parseInt(groupCode), parseInt(senderUin), MessageUnique.getShortIdByMsgId(replyMsg.msgId)!, [{ diff --git a/src/onebot/helper/event.ts b/src/onebot/helper/event.ts index 251959c9..f220a414 100644 --- a/src/onebot/helper/event.ts +++ b/src/onebot/helper/event.ts @@ -90,7 +90,7 @@ export async function NT2GroupEvent(core: NapCatCore, obContext: NapCatOneBot11A } if (element.grayTipElement) { if (element.grayTipElement.xmlElement?.templId === '10382') { - const emojiLikeEvent = await obContext.apis.GroupApi.parseGroupEmjioLikeEvent(msg.peerUid, element.grayTipElement); + const emojiLikeEvent = await obContext.apis.GroupApi.parseGroupEmojiLikeEventByGrayTip(msg.peerUid, element.grayTipElement); if (emojiLikeEvent) return emojiLikeEvent; } if (element.grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_XMLMSG) {