refactor: parsePrivateMsgEvent

This commit is contained in:
手瓜一十雪
2024-11-25 21:53:35 +08:00
parent 6d0020533c
commit 1adb4a4ba8
2 changed files with 17 additions and 18 deletions

View File

@@ -17,6 +17,7 @@ import {
SendTextElement, SendTextElement,
BaseEmojiType, BaseEmojiType,
FaceType, FaceType,
GrayTipElement,
} from '@/core'; } from '@/core';
import faceConfig from '@/core/external/face_config.json'; import faceConfig from '@/core/external/face_config.json';
import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, OB11MessageForward, } from '@/onebot'; import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, OB11MessageForward, } from '@/onebot';
@@ -664,20 +665,13 @@ export class OneBotMsgApi {
this.core = core; this.core = core;
} }
async parsePrivateMsgEvent(msg: RawMessage) { async parsePrivateMsgEvent(msg: RawMessage, grayTipElement: GrayTipElement) {
if (msg.chatType !== ChatType.KCHATTYPEC2C) { if (grayTipElement && grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) {
return; if (grayTipElement.jsonGrayTipElement.busiId == 1061) {
} const PokeEvent = await this.obContext.apis.FriendApi.parsePrivatePokeEvent(grayTipElement);
for (const element of msg.elements) { if (PokeEvent) return PokeEvent;
if (element.grayTipElement && element.grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) { } else if (grayTipElement.jsonGrayTipElement.busiId == 19324 && msg.peerUid !== '') {
if (element.grayTipElement.jsonGrayTipElement.busiId == 1061) { return new OB11FriendAddNoticeEvent(this.core, Number(await this.core.apis.UserApi.getUinByUidV2(msg.peerUid)));
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)));
}
} }
} }
} }
@@ -733,7 +727,7 @@ export class OneBotMsgApi {
if (this.core.selfInfo.uin == msg.senderUin) { if (this.core.selfInfo.uin == msg.senderUin) {
resMsg.message_sent_type = 'self'; resMsg.message_sent_type = 'self';
} }
if (msg.chatType == ChatType.KCHATTYPEGROUP) { if (msg.chatType == ChatType.KCHATTYPEGROUP) {
await this.handleGroupMessage(resMsg, msg); await this.handleGroupMessage(resMsg, msg);
} else if (msg.chatType == ChatType.KCHATTYPEC2C) { } else if (msg.chatType == ChatType.KCHATTYPEC2C) {

View File

@@ -626,14 +626,19 @@ export class NapCatOneBot11Adapter {
private async handlePrivateMsgEvent(message: RawMessage) { private async handlePrivateMsgEvent(message: RawMessage) {
try { try {
const privateEvent = await this.apis.MsgApi.parsePrivateMsgEvent(message); if (message.msgType === NTMsgType.KMSGTYPEGRAYTIPS) {
if (privateEvent) { // 灰条为单元素消息
this.networkManager.emitEvent(privateEvent); 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) { } catch (e) {
this.context.logger.logError('constructPrivateEvent error: ', e); this.context.logger.logError('constructPrivateEvent error: ', e);
} }
} }
private async emitRecallMsg(msgList: RawMessage[], cache: LRUCache<string, boolean>) { private async emitRecallMsg(msgList: RawMessage[], cache: LRUCache<string, boolean>) {
for (const message of msgList) { for (const message of msgList) {
// log("message update", message.sendStatus, message.msgId, message.msgSeq) // log("message update", message.sendStatus, message.msgId, message.msgSeq)