From ed9cd2fe3832ba631c4d3519c192dc9cace7b9ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 12 Nov 2024 18:37:44 +0800 Subject: [PATCH] fix: #513 --- src/core/listeners/NodeIKernelMsgListener.ts | 4 ++-- src/onebot/event/notice/BotOfflineEvent.ts | 16 ++++++++++++++++ src/onebot/index.ts | 7 ++++++- 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 src/onebot/event/notice/BotOfflineEvent.ts diff --git a/src/core/listeners/NodeIKernelMsgListener.ts b/src/core/listeners/NodeIKernelMsgListener.ts index 08636920..26739f4c 100644 --- a/src/core/listeners/NodeIKernelMsgListener.ts +++ b/src/core/listeners/NodeIKernelMsgListener.ts @@ -1,4 +1,4 @@ -import { ChatType, RawMessage } from '@/core/entities'; +import { ChatType, KickedOffLineInfo, RawMessage } from '@/core/entities'; import { CommonFileInfo } from '@/core'; export interface OnRichMediaDownloadCompleteParams { @@ -212,7 +212,7 @@ export class NodeIKernelMsgListener { } - onKickedOffLine(kickedInfo: unknown) { + onKickedOffLine(kickedInfo: KickedOffLineInfo) { } diff --git a/src/onebot/event/notice/BotOfflineEvent.ts b/src/onebot/event/notice/BotOfflineEvent.ts new file mode 100644 index 00000000..6718a561 --- /dev/null +++ b/src/onebot/event/notice/BotOfflineEvent.ts @@ -0,0 +1,16 @@ +import { OB11BaseNoticeEvent } from './OB11BaseNoticeEvent'; +import { NapCatCore } from '@/core'; + +export class BotOfflineEvent extends OB11BaseNoticeEvent { + notice_type = 'bot_offline'; + user_id: number; + tag: string = 'BotOfflineEvent'; + message: string = 'BotOfflineEvent'; + + public constructor(core: NapCatCore, tag: string, message: string) { + super(core); + this.user_id = +core.selfInfo.uin; + this.tag = tag; + this.message = message; + } +} diff --git a/src/onebot/index.ts b/src/onebot/index.ts index ecc17613..e66faa84 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -47,6 +47,7 @@ import { LRUCache } from '@/common/lru-cache'; import { NodeIKernelRecentContactListener } from '@/core/listeners/NodeIKernelRecentContactListener'; import { Native } from '@/native'; import { decodeMessage, decodeRecallGroup } from '@/core/packet/proto/old/Message'; +import { BotOfflineEvent } from './event/notice/BotOfflineEvent'; //OneBot实现类 export class NapCatOneBot11Adapter { @@ -343,7 +344,11 @@ export class NapCatOneBot11Adapter { } } }; - + msgListener.onKickedOffLine = async (kick) => { + let event = new BotOfflineEvent(this.core, kick.tipsTitle, kick.tipsDesc); + this.networkManager.emitEvent(event) + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理Bot掉线失败', e)); + } this.context.session.getMsgService().addKernelMsgListener( proxiedListenerOf(msgListener, this.context.logger), );