diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 7c2dbe7c..a9b24cb6 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -33,6 +33,7 @@ import { uri2local } from '@/common/file'; import { RequestUtil } from '@/common/request'; import fs from 'node:fs'; import fsPromise from 'node:fs/promises'; +import { OB11FriendAddNoticeEvent } from '@/onebot/event/notice/OB11FriendAddNoticeEvent'; import { SysMessage, SysMessageType } from '@/core/proto/ProfileLike'; type RawToOb11Converters = { @@ -631,10 +632,18 @@ export class OneBotMsgApi { 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) { + if (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.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_XMLMSG) { + //好友添加成功事件 + if (element.grayTipElement.xmlElement.templId === '10229' && msg.peerUin !== '') { + return new OB11FriendAddNoticeEvent(this.core, parseInt(msg.peerUin) || Number(await this.core.apis.UserApi.getUinByUidV2(msg.peerUid))); + } } } } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 47b29e2d..b21f0060 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -40,7 +40,6 @@ import { OB11GroupAdminNoticeEvent } from '@/onebot/event/notice/OB11GroupAdminN import { GroupDecreaseSubType, OB11GroupDecreaseEvent } from '@/onebot/event/notice/OB11GroupDecreaseEvent'; import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; import { OB11FriendRecallNoticeEvent } from '@/onebot/event/notice/OB11FriendRecallNoticeEvent'; -import { OB11FriendAddNoticeEvent } from '@/onebot/event/notice/OB11FriendAddNoticeEvent'; import { OB11GroupRecallNoticeEvent } from '@/onebot/event/notice/OB11GroupRecallNoticeEvent'; import { LRUCache } from '@/common/lru-cache'; import { NodeIKernelRecentContactListener } from '@/core/listeners/NodeIKernelRecentContactListener'; @@ -311,16 +310,8 @@ export class NapCatOneBot11Adapter { private initBuddyListener() { const buddyListener = new NodeIKernelBuddyListener(); - const buddyPendingReqs: string[] = []; buddyListener.onBuddyReqChange = async reqs => { - for (const buddyUid of buddyPendingReqs) { - if (this.context.session.getBuddyService().isBuddy(buddyUid)) { - buddyPendingReqs.splice(buddyPendingReqs.indexOf(buddyUid), 1); - await this.networkManager.emitEvent(new OB11FriendAddNoticeEvent(this.core, Number(await this.core.apis.UserApi.getUinByUidV2(buddyUid)))); - } - } - this.core.apis.FriendApi.clearBuddyReqUnreadCnt(); for (let i = 0; i < reqs.unreadNums; i++) { const req = reqs.buddyReqs[i]; @@ -329,7 +320,6 @@ export class NapCatOneBot11Adapter { } try { const requesterUin = await this.core.apis.UserApi.getUinByUidV2(req.friendUid); - buddyPendingReqs.push(req.friendUid); await this.networkManager.emitEvent(new OB11FriendRequestEvent( this.core, parseInt(requesterUin!),