diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 02cf1f1d..fa2a31ee 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -17,6 +17,7 @@ import { SendTextElement, BaseEmojiType, FaceType, + GrayTipElement, } from '@/core'; import faceConfig from '@/core/external/face_config.json'; import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, OB11MessageForward, } from '@/onebot'; @@ -664,20 +665,13 @@ export class OneBotMsgApi { this.core = core; } - async parsePrivateMsgEvent(msg: RawMessage) { - if (msg.chatType !== ChatType.KCHATTYPEC2C) { - return; - } - for (const element of msg.elements) { - if (element.grayTipElement && element.grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) { - if (element.grayTipElement.jsonGrayTipElement.busiId == 1061) { - const PokeEvent = await this.obContext.apis.FriendApi.parsePrivatePokeEvent(element.grayTipElement); - if (PokeEvent) return PokeEvent; - } - //好友添加成功事件 - if (element.grayTipElement.jsonGrayTipElement.busiId == 19324 && msg.peerUid !== '') { - return new OB11FriendAddNoticeEvent(this.core, Number(await this.core.apis.UserApi.getUinByUidV2(msg.peerUid))); - } + async parsePrivateMsgEvent(msg: RawMessage, grayTipElement: GrayTipElement) { + if (grayTipElement && grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) { + if (grayTipElement.jsonGrayTipElement.busiId == 1061) { + const PokeEvent = await this.obContext.apis.FriendApi.parsePrivatePokeEvent(grayTipElement); + if (PokeEvent) return PokeEvent; + } else if (grayTipElement.jsonGrayTipElement.busiId == 19324 && msg.peerUid !== '') { + return new OB11FriendAddNoticeEvent(this.core, Number(await this.core.apis.UserApi.getUinByUidV2(msg.peerUid))); } } } @@ -733,7 +727,7 @@ export class OneBotMsgApi { if (this.core.selfInfo.uin == msg.senderUin) { resMsg.message_sent_type = 'self'; } - + if (msg.chatType == ChatType.KCHATTYPEGROUP) { await this.handleGroupMessage(resMsg, msg); } else if (msg.chatType == ChatType.KCHATTYPEC2C) { diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 882fef00..6b32ad95 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -626,14 +626,19 @@ export class NapCatOneBot11Adapter { private async handlePrivateMsgEvent(message: RawMessage) { try { - const privateEvent = await this.apis.MsgApi.parsePrivateMsgEvent(message); - if (privateEvent) { - this.networkManager.emitEvent(privateEvent); + if (message.msgType === NTMsgType.KMSGTYPEGRAYTIPS) { + // 灰条为单元素消息 + const grayTipElement = message.elements[0].grayTipElement; + if (grayTipElement) { + const event = await this.apis.MsgApi.parsePrivateMsgEvent(message, grayTipElement); + event && await this.networkManager.emitEvent(event); + } } } catch (e) { this.context.logger.logError('constructPrivateEvent error: ', e); } } + private async emitRecallMsg(msgList: RawMessage[], cache: LRUCache) { for (const message of msgList) { // log("message update", message.sendStatus, message.msgId, message.msgSeq)