From f484c6e5feb14aff01a181833e9bd6e9b37456df Mon Sep 17 00:00:00 2001 From: Alen <33656288+cnxysoft@users.noreply.github.com> Date: Tue, 20 Aug 2024 14:28:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E5=A4=84=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修复group_card事件上报 2.修复group_admin事件上报 --- src/onebot/helper/data.ts | 20 ++++++++++---------- src/onebot/index.ts | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/onebot/helper/data.ts b/src/onebot/helper/data.ts index 44dbe87f..9c3aaa10 100644 --- a/src/onebot/helper/data.ts +++ b/src/onebot/helper/data.ts @@ -30,6 +30,7 @@ import { EventType } from '../event/OB11BaseEvent'; import { encodeCQCode } from './cqcode'; import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent'; import { OB11GroupBanEvent } from '../event/notice/OB11GroupBanEvent'; +import { OB11GroupCardEvent } from '../event/notice/OB11GroupCardEvent'; import { OB11GroupUploadNoticeEvent } from '../event/notice/OB11GroupUploadNoticeEvent'; import { OB11GroupNoticeEvent } from '../event/notice/OB11GroupNoticeEvent'; import { calcQQLevel, sleep, UUIDConverter } from '@/common/utils/helper'; @@ -421,16 +422,15 @@ export class OB11Constructor { return; } //log("group msg", msg); - // Mlikiowa V2.0.34 Refactor Todo - // if (msg.senderUin && msg.senderUin !== '0') { - // const member = await getGroupMember(msg.peerUid, msg.senderUin); - // if (member && member.cardName !== msg.sendMemberName) { - // const newCardName = msg.sendMemberName || ''; - // const event = new OB11GroupCardEvent(parseInt(msg.peerUid), parseInt(msg.senderUin), newCardName, member.cardName); - // member.cardName = newCardName; - // return event; - // } - // } + if (msg.senderUin && msg.senderUin !== '0') { + const member = await NTQQGroupApi.getGroupMember(msg.peerUid, msg.senderUin); + if (member && member.cardName !== msg.sendMemberName) { + const newCardName = msg.sendMemberName || ''; + const event = new OB11GroupCardEvent(core, parseInt(msg.peerUid), parseInt(msg.senderUin), newCardName, member.cardName); + member.cardName = newCardName; + return event; + } + } for (const element of msg.elements) { const grayTipElement = element.grayTipElement; diff --git a/src/onebot/index.ts b/src/onebot/index.ts index f5472b14..b12ba056 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -9,6 +9,7 @@ import { NapCatCore, RawMessage, SendStatusType, + GroupMemberRole, } from '@/core'; import { OB11Config, OB11ConfigLoader } from '@/onebot/helper/config'; import { OneBotApiContextType } from '@/onebot/types'; @@ -413,6 +414,29 @@ export class NapCatOneBot11Adapter { } }; + groupListener.onMemberInfoChange = async (groupCode, changeType, members) => { + //this.context.logger.logDebug('收到群成员信息变动通知', groupCode, changeType); + if (changeType === 0) { + 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.context.logger.logDebug('变动管理员获取成功'); + const groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent( + this.core, + parseInt(groupCode), + parseInt(member.uin), + member.role === GroupMemberRole.admin ? 'set' : 'unset', + ); + this.networkManager.emitEvent(groupAdminNoticeEvent) + .catch(e => this.context.logger.logError('处理群管理员变动失败', e)); + existMember.isChangeRole = false; + this.context.logger.logDebug('群管理员变动处理完毕'); + }); + } + }; + this.context.session.getGroupService().addKernelGroupListener( new this.context.wrapper.NodeIKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)), );