From 41748c0b3f1956974dfacb860515c641be47ed3b 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, 4 Dec 2024 10:55:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=95=B0=E6=8D=AE=E6=B8=85?= =?UTF-8?q?=E7=90=86=E4=B8=8E=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 19 +++++-------------- .../action/go-cqhttp/CreateGroupFileFolder.ts | 2 +- .../action/go-cqhttp/DeleteGroupFile.ts | 2 +- .../action/go-cqhttp/DeleteGroupFileFolder.ts | 2 +- src/onebot/api/msg.ts | 9 ++++++++- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index fd347c3e..35674530 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -1,6 +1,5 @@ import { GeneralCallResult, - Group, GroupMember, NTGroupMemberRole, NTGroupRequestOperateTypes, @@ -112,24 +111,16 @@ export class NTQQGroupApi { return this.context.session.getGroupService().getAllMemberList(groupCode, forced); } - async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); - 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) }); - }); + this.groupMemberCache.set(groupCode, members.result.infos); } catch (e) { this.context.logger.logError(`刷新群成员缓存失败, 群号: ${groupCode}, 错误: ${e}`); } return this.groupMemberCache; } - + async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); @@ -161,15 +152,15 @@ export class NTQQGroupApi { return this.context.session.getGroupService().getGroupRecommendContactArkJson(groupCode); } - async CreatGroupFileFolder(groupCode: string, folderName: string) { + async creatGroupFileFolder(groupCode: string, folderName: string) { return this.context.session.getRichMediaService().createGroupFolder(groupCode, folderName); } - async DelGroupFile(groupCode: string, files: Array) { + async delGroupFile(groupCode: string, files: Array) { return this.context.session.getRichMediaService().deleteGroupFile(groupCode, [102], files); } - async DelGroupFileFolder(groupCode: string, folderId: string) { + async delGroupFileFolder(groupCode: string, folderId: string) { return this.context.session.getRichMediaService().deleteGroupFolder(groupCode, folderId); } diff --git a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts index 01af44c6..3764f148 100644 --- a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts @@ -13,6 +13,6 @@ export class CreateGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_CreateGroupFileFolder; payloadSchema = SchemaData; async _handle(payload: Payload) { - return (await this.core.apis.GroupApi.CreatGroupFileFolder(payload.group_id.toString(), payload.folder_name)).resultWithGroupItem; + return (await this.core.apis.GroupApi.creatGroupFileFolder(payload.group_id.toString(), payload.folder_name)).resultWithGroupItem; } } diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts index 244a5368..85b43cce 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts @@ -17,6 +17,6 @@ export class DeleteGroupFile extends OneBotAction { async _handle(payload: Payload) { const data = FileNapCatOneBotUUID.decodeModelId(payload.file_id); if (!data) throw new Error('Invalid file_id'); - return await this.core.apis.GroupApi.DelGroupFile(payload.group_id.toString(), [data.fileId]); + return await this.core.apis.GroupApi.delGroupFile(payload.group_id.toString(), [data.fileId]); } } diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts index c6e20df9..f8a813a4 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts @@ -14,7 +14,7 @@ export class DeleteGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_DeleteGroupFileFolder; payloadSchema = SchemaData; async _handle(payload: Payload) { - return (await this.core.apis.GroupApi.DelGroupFileFolder( + return (await this.core.apis.GroupApi.delGroupFileFolder( payload.group_id.toString(), payload.folder ?? payload.folder_id ?? '')).groupFileCommonResult; } } diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index a9decfea..94c99fd1 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -980,7 +980,14 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); + if (groupChange.memberUid === this.core.selfInfo.uid) { + setTimeout(() => { + this.core.apis.GroupApi.groupMemberCache.delete(groupChange.groupUin.toString()); + }, 5000); + // 自己被踢了 5S后回收 + } else { + this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); + } return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin,