NapCatQQ/packages/napcat-protocol/action/index.ts
手瓜一十雪 65bae6b57a
Some checks are pending
Build NapCat Artifacts / Build-Framework (push) Waiting to run
Build NapCat Artifacts / Build-Shell (push) Waiting to run
Introduce NapCat Protocol and adapter management
Added the new napcat-protocol package with protocol config, event, API, and network management modules. Introduced napcat-adapter package to unify protocol adapter management, replacing direct OneBot usage in framework and shell. Updated napcat-framework and napcat-shell to use NapCatAdapterManager for protocol initialization and registration. Adjusted dependencies and Vite configs to include new packages.
2026-01-29 22:14:55 +08:00

52 lines
1.5 KiB
TypeScript

import { NapCatCore } from 'napcat-core';
import { NapCatProtocolResponse } from '@/napcat-protocol/types';
// 前向声明类型,避免循环依赖
import type { NapCatProtocolAdapter } from '@/napcat-protocol/index';
// Action 基类
export abstract class BaseAction<PayloadType = unknown, ReturnType = unknown> {
abstract actionName: string;
protected core: NapCatCore;
protected adapter: NapCatProtocolAdapter;
constructor (adapter: NapCatProtocolAdapter, core: NapCatCore) {
this.adapter = adapter;
this.core = core;
}
protected abstract _handle (payload: PayloadType): Promise<ReturnType>;
async handle (payload: PayloadType): Promise<NapCatProtocolResponse<ReturnType>> {
try {
const result = await this._handle(payload);
return {
status: 'ok',
retcode: 0,
data: result,
};
} catch (e) {
return {
status: 'failed',
retcode: -1,
data: null,
message: e instanceof Error ? e.message : String(e),
};
}
}
}
// Action 映射类型
export type ActionMap = Map<string, BaseAction<unknown, unknown>>;
// 创建 Action 映射
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function createActionMap (_adapter: NapCatProtocolAdapter, _core: NapCatCore): ActionMap {
const actionMap = new Map<string, BaseAction<unknown, unknown>>();
// 这里可以注册各种 Action
// 例如: actionMap.set('send_msg', new SendMsgAction(adapter, core));
return actionMap;
}