From 76d62c4f5a0f18b85482e0e3bc6b8e770fd6a867 Mon Sep 17 00:00:00 2001 From: "Wesley F. Young" Date: Wed, 28 Aug 2024 20:45:02 +0800 Subject: [PATCH] feat: emit group/admin by member info change --- src/core/events.ts | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/core/events.ts b/src/core/events.ts index 882aecb7..89686f44 100644 --- a/src/core/events.ts +++ b/src/core/events.ts @@ -1,9 +1,9 @@ import { BuddyReqType, - ChatType, + ChatType, DataSource, FileElement, FriendRequest, - GrayTipElement, + GrayTipElement, GroupMemberRole, GroupNotify, GroupNotifyMsgStatus, GroupNotifyMsgType, @@ -297,5 +297,27 @@ export class NapCatEventChannel extends } } }; + + groupListener.onMemberInfoChange = async (groupCode, dataSource, members) => { + if (dataSource === DataSource.LOCAL) { + const existMembers = this.core.apis.GroupApi.groupMemberCache.get(groupCode); + if (!existMembers) return; + members.forEach(member => { + const existMember = existMembers.get(member.uid); + if (!existMember?.isChangeRole) return; + this.core.context.logger.logDebug('变动管理员', member); + this.emit( + 'group/admin', + groupCode, + member.uin, + member.role === GroupMemberRole.admin ? 'set' : 'unset', + ); + }); + } + }; + + this.core.context.session.getGroupService().addKernelGroupListener( + proxiedListenerOf(groupListener, this.core.context.logger), + ); } }