diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 12852d5f..6d7c9c74 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -318,7 +318,7 @@ export class NTQQGroupApi { throw ('获取群成员列表出错,' + result.errMsg); } - //logDebug(`获取群(${groupQQ})成员列表结果:`, `finish: ${result.result.finish}`); //, Array.from(result.result.infos.values())); + this.context.logger.logDebug(`获取群(${groupQQ})成员列表结果:`, `members: ${result.result.infos.size}`); //, Array.from(result.result.infos.values())); return result.result.infos; /* console.log(sceneId); diff --git a/src/core/core.ts b/src/core/core.ts index 942cce96..59d9cbc7 100644 --- a/src/core/core.ts +++ b/src/core/core.ts @@ -197,12 +197,12 @@ export class NapCatCore { } }; this.context.session.getGroupService().addKernelGroupListener( - proxiedListenerOf(profileListener, this.context.logger) as any + proxiedListenerOf(groupListener, this.context.logger) as any ); } checkAdminEvent(groupCode: string, memberNew: GroupMember, memberOld: GroupMember | undefined): boolean { if (memberNew.role !== memberOld?.role) { - this.context.logger.log(`群 ${groupCode} ${memberNew.nick} 角色变更为 ${memberNew.role === 3 ? '管理员' : '群员'}`); + this.context.logger.logDebug(`群 ${groupCode} ${memberNew.nick} 角色变更为 ${memberNew.role === 3 ? '管理员' : '群员'}`); return true; } return false; diff --git a/src/core/listeners/NodeIKernelProfileListener.ts b/src/core/listeners/NodeIKernelProfileListener.ts index f11fe151..985b203a 100644 --- a/src/core/listeners/NodeIKernelProfileListener.ts +++ b/src/core/listeners/NodeIKernelProfileListener.ts @@ -43,4 +43,48 @@ export class ProfileListener implements IProfileListener { onStrangerRemarkChanged(...args: unknown[]) { } + + onMemberListChange(...args: unknown[]){ + + } + + onMemberInfoChange(...args: unknown[]){ + + } + + onGroupListUpdate(...args: unknown[]){ + + } + + onGroupAllInfoChange(...args: unknown[]){ + + } + + onGroupDetailInfoChange(...args: unknown[]){ + + } + + onGroupConfMemberChange(...args: unknown[]){ + + } + + onGroupExtListUpdate(...args: unknown[]){ + + } + + onGroupNotifiesUpdated(...args: unknown[]){ + + } + + onGroupNotifiesUnreadCountUpdated(...args: unknown[]){ + + } + + onGroupMemberLevelInfoChange(...args: unknown[]){ + + } + + onGroupBulletinChange(...args: unknown[]){ + + } } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 5740bb59..5bf805d4 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -249,8 +249,9 @@ export class NapCatOneBot11Adapter { } }; const msgIdSend = new LRUCache(100); + const recallMsgs = new LRUCache(100); msgListener.onMsgInfoListUpdate = async msgList => { - this.emitRecallMsg(msgList) + this.emitRecallMsg(msgList, recallMsgs) .catch(e => this.context.logger.logError('处理消息失败', e)); for (const msg of msgList.filter(e => e.senderUin == this.core.selfInfo.uin)) { @@ -492,10 +493,11 @@ export class NapCatOneBot11Adapter { }).catch(e => this.context.logger.logError('constructPrivateEvent error: ', e)); } - private async emitRecallMsg(msgList: RawMessage[]) { + private async emitRecallMsg(msgList: RawMessage[], cache: LRUCache) { for (const message of msgList) { // log("message update", message.sendStatus, message.msgId, message.msgSeq) - if (message.recallTime != '0') { //todo: 这个判断方法不太好,应该使用灰色消息元素来判断? + if (message.recallTime != '0' && !cache.get(message.msgId)) { //todo: 这个判断方法不太好,应该使用灰色消息元素来判断? + cache.put(message.msgId, true) // 撤回消息上报 const oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId); if (!oriMessageId) {