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), );