From 9f1d4c4db2646d389224e90b430c61a41758bf40 Mon Sep 17 00:00:00 2001 From: Alen <33656288+cnxysoft@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改群管变更事件获取渠道,让所有群角色都能收到群管变更通知 --- src/main/main.ts | 58 +++++++++++++++++++++++---------------------- src/ntqqapi/hook.ts | 8 +++++++ 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/src/main/main.ts b/src/main/main.ts index cb86fa6..c103f37 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -318,34 +318,36 @@ function onLoad() { // if (notify.user2.uid) { // member2 = await getGroupMember(notify.group.groupCode, null, notify.user2.uid); // } - if ( - [GroupNotifyTypes.ADMIN_SET, GroupNotifyTypes.ADMIN_UNSET, GroupNotifyTypes.ADMIN_UNSET_OTHER].includes( - notify.type, - ) - ) { - const member1 = await getGroupMember(notify.group.groupCode, notify.user1.uid) - log('有管理员变动通知') - refreshGroupMembers(notify.group.groupCode).then() - let groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent() - groupAdminNoticeEvent.group_id = parseInt(notify.group.groupCode) - log('开始获取变动的管理员') - if (member1) { - log('变动管理员获取成功') - groupAdminNoticeEvent.user_id = parseInt(member1.uin) - groupAdminNoticeEvent.sub_type = [ - GroupNotifyTypes.ADMIN_UNSET, - GroupNotifyTypes.ADMIN_UNSET_OTHER, - ].includes(notify.type) - ? 'unset' - : 'set' - // member1.role = notify.type == GroupNotifyTypes.ADMIN_SET ? GroupMemberRole.admin : GroupMemberRole.normal; - postOb11Event(groupAdminNoticeEvent, true) - } - else { - log('获取群通知的成员信息失败', notify, getGroup(notify.group.groupCode)) - } - } - else if (notify.type == GroupNotifyTypes.MEMBER_EXIT || notify.type == GroupNotifyTypes.KICK_MEMBER) { + // 原本的群管变更通知事件处理 + // if ( + // [GroupNotifyTypes.ADMIN_SET, GroupNotifyTypes.ADMIN_UNSET, GroupNotifyTypes.ADMIN_UNSET_OTHER].includes( + // notify.type, + // ) + // ) { + // const member1 = await getGroupMember(notify.group.groupCode, notify.user1.uid) + // log('有管理员变动通知') + // refreshGroupMembers(notify.group.groupCode).then() + // let groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent() + // groupAdminNoticeEvent.group_id = parseInt(notify.group.groupCode) + // log('开始获取变动的管理员') + // if (member1) { + // log('变动管理员获取成功') + // groupAdminNoticeEvent.user_id = parseInt(member1.uin) + // groupAdminNoticeEvent.sub_type = [ + // GroupNotifyTypes.ADMIN_UNSET, + // GroupNotifyTypes.ADMIN_UNSET_OTHER, + // ].includes(notify.type) + // ? 'unset' + // : 'set' + // // member1.role = notify.type == GroupNotifyTypes.ADMIN_SET ? GroupMemberRole.admin : GroupMemberRole.normal; + // postOb11Event(groupAdminNoticeEvent, true) + // } + // else { + // log('获取群通知的成员信息失败', notify, getGroup(notify.group.groupCode)) + // } + // } + // else + if (notify.type == GroupNotifyTypes.MEMBER_EXIT || notify.type == GroupNotifyTypes.KICK_MEMBER) { log('有成员退出通知', notify) try { const member1 = await NTQQUserApi.getUserDetailInfo(notify.user1.uid) diff --git a/src/ntqqapi/hook.ts b/src/ntqqapi/hook.ts index ca2708d..3e9fee6 100644 --- a/src/ntqqapi/hook.ts +++ b/src/ntqqapi/hook.ts @@ -23,6 +23,7 @@ import { log } from '@/common/utils' import { isNumeric, sleep } from '@/common/utils' import { OB11Constructor } from '../onebot11/constructor' import { OB11GroupCardEvent } from '../onebot11/event/notice/OB11GroupCardEvent' +import { OB11GroupAdminNoticeEvent } from '../onebot11/event/notice/OB11GroupAdminNoticeEvent' export let hookApiCallbacks: Record void> = {} @@ -369,6 +370,13 @@ export async function startHook() { postOb11Event( new OB11GroupCardEvent(parseInt(groupCode), parseInt(member.uin), member.cardName, existMember.cardName), ) + } else if (member.role != existMember.role) { + log('有管理员变动通知') + let groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent() + groupAdminNoticeEvent.group_id = parseInt(groupCode) + groupAdminNoticeEvent.user_id = parseInt(member.uin) + groupAdminNoticeEvent.sub_type = member.role == GroupMemberRole.admin ? 'set' : 'unset' + postOb11Event(groupAdminNoticeEvent, true) } Object.assign(existMember, member) }