From 5e53ea0bc3a870fe153fc3ca30a7e698d16320f0 Mon Sep 17 00:00:00 2001 From: Fripine Date: Fri, 20 Sep 2024 04:38:09 +0800 Subject: [PATCH] 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!),