diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 7b1ed6925..ef58f651c 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -18,7 +18,6 @@ export class NTQQGroupApi { context: InstanceContext; core: NapCatCore; groupMemberCache: Map> = new Map>(); - groupMemberCacheEvent: Map = new Map(); essenceLRU = new LimitedHashTable(1000); constructor(context: InstanceContext, core: NapCatCore) { @@ -128,15 +127,12 @@ export class NTQQGroupApi { } async refreshGroupMemberCache(groupCode: string, isWait = true) { - this.groupMemberCacheEvent.set(groupCode, true); const updateCache = async () => { try { const members = await this.getGroupMemberAll(groupCode, true); this.groupMemberCache.set(groupCode, members.result.infos); } catch (e) { this.context.logger.logError(`刷新群成员缓存失败, 群号: ${groupCode}, 错误: ${e}`); - } finally { - this.groupMemberCacheEvent.set(groupCode, false); } }; diff --git a/src/onebot/action/group/GetGroupMemberInfo.ts b/src/onebot/action/group/GetGroupMemberInfo.ts index d1e3d49d1..28525bac8 100644 --- a/src/onebot/action/group/GetGroupMemberInfo.ts +++ b/src/onebot/action/group/GetGroupMemberInfo.ts @@ -35,13 +35,7 @@ class GetGroupMemberInfo extends OneBotAction { this.core.apis.UserApi.getUserDetailInfo(uid), ]); - if (!member) throw new Error(`群(${payload.group_id})成员${payload.user_id}不存在`); - - if (!groupMember && this.core.apis.GroupApi.groupMemberCacheEvent.get(payload.group_id.toString())) { - groupMember = (await this.core.apis.GroupApi.refreshGroupMemberCache(payload.group_id.toString(), true))?.get(uid); - } - - if (!groupMember) throw new Error(`群(${payload.group_id})成员${payload.user_id}不存在`); + if (!member || !groupMember) throw new Error(`群(${payload.group_id})成员${payload.user_id}不存在`); return info ? { ...groupMember, ...member, ...info } : member; } diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 9f34c5a4d..af57ed7d7 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -223,7 +223,7 @@ export class OneBotGroupApi { } else if (element.type === TipGroupElementType.KMEMBERADD) { // 自己的通知 协议推送为type->85 在这里实现为了避免邀请出现问题 if (element.memberUid == this.core.selfInfo.uid) { - await this.core.apis.GroupApi.refreshGroupMemberCache(msg.peerUid, false); + await this.core.apis.GroupApi.refreshGroupMemberCache(msg.peerUid, true); return new OB11GroupIncreaseEvent( this.core, parseInt(msg.peerUid), diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 2e6b62c81..6f0fa300e 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -1022,7 +1022,7 @@ export class OneBotMsgApi { // 邀请需要解grayTipElement if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString(), false); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString(), true); let operatorUid = await this.waitGroupNotify( groupChange.groupUin.toString(), groupChange.memberUid, @@ -1052,7 +1052,7 @@ export class OneBotMsgApi { }, 5000); // 自己被踢了 5S后回收 } else { - await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString(), false); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString(), true); } return new OB11GroupDecreaseEvent( this.core, @@ -1063,7 +1063,7 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 44 && SysMessage.body?.msgContent) { const groupAmin = new NapProtoMsg(GroupAdmin).decode(SysMessage.body.msgContent); - await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString(), false); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString(), true); let enabled = false; let uid = ''; if (groupAmin.body.extraEnable != null) {