fix: 优化处理

This commit is contained in:
手瓜一十雪
2024-12-03 21:36:55 +08:00
parent 501bbbe4df
commit 94e9c87978
2 changed files with 15 additions and 12 deletions

View File

@@ -175,8 +175,13 @@ export class NTQQGroupApi {
async refreshGroupMemberCache(groupCode: string) { async refreshGroupMemberCache(groupCode: string) {
try { try {
const members = await this.getGroupMemberAll(groupCode, true); const members = await this.getGroupMemberAll(groupCode, true);
let groupData = (await this.GetGroupMembersV3(groupCode)).infos; // 首先填入基础信息
if (groupData.size === 0 || groupData.size !== members.result.infos.size) { const existingMembers = this.groupMemberCache.get(groupCode) ?? new Map<string, GroupMember>();
members.result.infos.forEach((value, key) => {
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); 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 => { data.forEach(e => {
const existingMember = members.result.infos.get(e.uid); const existingMember = members.result.infos.get(e.uid);
@@ -184,14 +189,12 @@ export class NTQQGroupApi {
members.result.infos.set(e.uid, { ...existingMember, ...e }); members.result.infos.set(e.uid, { ...existingMember, ...e });
} }
}); });
} else { this.groupMemberCache.set(groupCode, members.result.infos);
groupData.forEach((v, k) => { })().then().catch(e => this.context.logger.logError(e));
if (members.result.infos.has(k)) { // 处理首次空缺
members.result.infos.set(k, { ...members.result.infos.get(k), ...v }); if (!this.groupMemberCache.get(groupCode)) {
} await event;
});
} }
this.groupMemberCache.set(groupCode, members.result.infos);
} catch (e) { } catch (e) {
this.context.logger.logError(`刷新群成员缓存失败, ${e}`); this.context.logger.logError(`刷新群成员缓存失败, ${e}`);
} }
@@ -202,7 +205,7 @@ export class NTQQGroupApi {
const memberUinOrUidStr = memberUinOrUid.toString(); const memberUinOrUidStr = memberUinOrUid.toString();
let members = this.groupMemberCache.get(groupCodeStr); let members = this.groupMemberCache.get(groupCodeStr);
if (!members) { if (!members) {
this.refreshGroupMemberCache(groupCodeStr); await this.refreshGroupMemberCache(groupCodeStr);
} }
function getMember() { function getMember() {

View File

@@ -970,7 +970,7 @@ export class OneBotMsgApi {
const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg));
if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) {
const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent);
await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch();
return new OB11GroupIncreaseEvent( return new OB11GroupIncreaseEvent(
this.core, this.core,
groupChange.groupUin, groupChange.groupUin,
@@ -990,7 +990,7 @@ export class OneBotMsgApi {
); );
} else if (SysMessage.contentHead.type == 44 && SysMessage.body?.msgContent) { } else if (SysMessage.contentHead.type == 44 && SysMessage.body?.msgContent) {
const groupAmin = new NapProtoMsg(GroupAdmin).decode(SysMessage.body.msgContent); const groupAmin = new NapProtoMsg(GroupAdmin).decode(SysMessage.body.msgContent);
await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()).then().catch(); this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()).then().catch();
let enabled = false; let enabled = false;
let uid = ''; let uid = '';
if (groupAmin.body.extraEnable != null) { if (groupAmin.body.extraEnable != null) {