From 659aa005b0deb0bc1f07f480b309835507397dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 16 Oct 2024 20:49:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=83=A8=E5=88=86=E7=A6=BB=E8=B0=B1?= =?UTF-8?q?=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 9e01e954..3f48a2ea 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -318,23 +318,33 @@ export class NTQQGroupApi { async getGroupMembersV2(groupQQ: string, num = 3000): Promise> { const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow'); - try { - const [callback, listener] = await this.core.eventWrapper.callNormalEventV2( - 'NodeIKernelGroupService/getNextMemberList', - 'NodeIKernelGroupListener/onMemberListChange', - [sceneId, undefined, num], - (ret) => ret.errCode === 0, - (params) => params.sceneId === sceneId, - 1, - 2000 - ); - if(callback.result.infos.size === 0) { - return listener.infos; - } - return callback.result.infos; - } finally { - this.context.session.getGroupService().destroyMemberListScene(sceneId); + let once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', 1, 2000, (params) => params.sceneId === sceneId) + .catch(); + const result = await this.context.session.getGroupService().getNextMemberList(sceneId!, undefined, num); + if (result.errCode !== 0) { + throw new Error('获取群成员列表出错,' + result.errMsg); } + if (result.result.infos.size === 0) { + return (await once)[0].infos; + } + return result.result.infos; + // try { + // const [callback, listener] = await this.core.eventWrapper.callNormalEventV2( + // 'NodeIKernelGroupService/getNextMemberList', + // 'NodeIKernelGroupListener/onMemberListChange', + // [sceneId, undefined, num], + // (ret) => ret.errCode === 0, + // (params) => params.sceneId === sceneId, + // 1, + // 2000 + // ); + // if (callback.result.infos.size === 0) { + // return listener.infos; + // } + // return callback.result.infos; + // } finally { + // this.context.session.getGroupService().destroyMemberListScene(sceneId); + // } } async getGroupMembers(groupQQ: string, num = 3000): Promise> {