From 6b0d96fe8d297a7c090ba45d577c048ccc530aaa 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: Tue, 3 Dec 2024 22:07:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E5=A4=8D=E6=9D=82?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 8a5eb9a1..b0dd6dae 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -146,31 +146,33 @@ export class NTQQGroupApi { async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); - // 首先填入基础信息 - const existingMembers = this.groupMemberCache.get(groupCode) ?? new Map(); - members.result.infos.forEach((value, key) => { + let existingMembers = this.groupMemberCache.get(groupCode); + if (!existingMembers) { + existingMembers = new Map(); + this.groupMemberCache.set(groupCode, existingMembers); + } + members.result.infos.forEach((value) => { existingMembers.set(value.uid, { ...value, ...existingMembers.get(value.uid) }); }); - // 后台补全复杂信息 - let event = (async () => { - let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); - data.forEach(e => { - const existingMember = members.result.infos.get(e.uid); - if (existingMember) { - members.result.infos.set(e.uid, { ...existingMember, ...e }); - } - }); - this.groupMemberCache.set(groupCode, members.result.infos); - })().then().catch(e => this.context.logger.logError(e)); - // 处理首次空缺 - if (!this.groupMemberCache.get(groupCode)) { - await event; - } } catch (e) { - this.context.logger.logError(`刷新群成员缓存失败, ${e}`); + this.context.logger.logError(`刷新群成员缓存失败, 群号: ${groupCode}, 错误: ${e}`); } } - + // 后台补全复杂信息 + // let event = (async () => { + // let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); + // data.forEach(e => { + // const existingMember = members.result.infos.get(e.uid); + // if (existingMember) { + // members.result.infos.set(e.uid, { ...existingMember, ...e }); + // } + // }); + // this.groupMemberCache.set(groupCode, members.result.infos); + // })().then().catch(e => this.context.logger.logError(e)); + // 处理首次空缺 + // if (!this.groupMemberCache.get(groupCode)) { + // await event; + // } async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString();