From 5e53ea0bc3a870fe153fc3ca30a7e698d16320f0 Mon Sep 17 00:00:00 2001 From: Fripine Date: Fri, 20 Sep 2024 04:38:09 +0800 Subject: [PATCH 1/4] fix: cant emit FriendAddNoticeEvent --- src/onebot/index.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/onebot/index.ts b/src/onebot/index.ts index b21f0060..f362906b 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -40,6 +40,7 @@ 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'; @@ -310,8 +311,17 @@ export class NapCatOneBot11Adapter { private initBuddyListener() { const buddyListener = new NodeIKernelBuddyListener(); + let buddyPendingReqs: string[] = []; buddyListener.onBuddyReqChange = async reqs => { + for(const req of reqs.buddyReqs){ + if (req.isDecide && !req.isInitiator && req.reqType === BuddyReqType.KMEAGREEDANDADDED && buddyPendingReqs.includes(req.friendUid)) { + buddyPendingReqs = buddyPendingReqs.filter(item => item !== req.friendUid); + const friendAddNoticeEvent = new OB11FriendAddNoticeEvent(this.core, Number(await this.core.apis.UserApi.getUinByUidV2(req.friendUid))); + await this.networkManager.emitEvent(friendAddNoticeEvent); + } + } + this.core.apis.FriendApi.clearBuddyReqUnreadCnt(); for (let i = 0; i < reqs.unreadNums; i++) { const req = reqs.buddyReqs[i]; @@ -320,6 +330,7 @@ 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!), From 24bf9cf121649bc2ab17c35525500c990fdcfe17 Mon Sep 17 00:00:00 2001 From: Fripine Date: Fri, 20 Sep 2024 10:17:30 +0800 Subject: [PATCH 2/4] =?UTF-8?q?chore:=20=E6=8D=A2=E4=B8=80=E7=A7=8D?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/index.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/onebot/index.ts b/src/onebot/index.ts index f362906b..47b29e2d 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -311,14 +311,13 @@ export class NapCatOneBot11Adapter { private initBuddyListener() { const buddyListener = new NodeIKernelBuddyListener(); - let buddyPendingReqs: string[] = []; + const buddyPendingReqs: string[] = []; buddyListener.onBuddyReqChange = async reqs => { - for(const req of reqs.buddyReqs){ - if (req.isDecide && !req.isInitiator && req.reqType === BuddyReqType.KMEAGREEDANDADDED && buddyPendingReqs.includes(req.friendUid)) { - buddyPendingReqs = buddyPendingReqs.filter(item => item !== req.friendUid); - const friendAddNoticeEvent = new OB11FriendAddNoticeEvent(this.core, Number(await this.core.apis.UserApi.getUinByUidV2(req.friendUid))); - await this.networkManager.emitEvent(friendAddNoticeEvent); + 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)))); } } From 4c9edcc47bfeca135bf5c8403ec1632a65d72e83 Mon Sep 17 00:00:00 2001 From: Fripine Date: Fri, 20 Sep 2024 10:21:26 +0800 Subject: [PATCH 3/4] chore --- src/onebot/api/msg.ts | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 07e6e28d..69f62a46 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -632,18 +632,10 @@ export class OneBotMsgApi { return; } for (const element of msg.elements) { - 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))); - } + 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; } } } From 467003af8c3246b5519b865b97294d47b455150a Mon Sep 17 00:00:00 2001 From: Fripine Date: Fri, 20 Sep 2024 10:24:19 +0800 Subject: [PATCH 4/4] chore --- src/onebot/api/msg.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 69f62a46..0d4f3283 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -33,7 +33,6 @@ 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 = {