mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
fix: 优化处理
This commit is contained in:
@@ -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() {
|
||||||
|
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user