feat: emit group/admin by member info change

This commit is contained in:
Wesley F. Young 2024-08-28 20:45:02 +08:00
parent 63f37d971c
commit 76d62c4f5a

View File

@ -1,9 +1,9 @@
import { import {
BuddyReqType, BuddyReqType,
ChatType, ChatType, DataSource,
FileElement, FileElement,
FriendRequest, FriendRequest,
GrayTipElement, GrayTipElement, GroupMemberRole,
GroupNotify, GroupNotify,
GroupNotifyMsgStatus, GroupNotifyMsgStatus,
GroupNotifyMsgType, 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),
);
} }
} }