@zhengxs/wechaty-plugin-assistant
Version:
97 lines (95 loc) • 2.48 kB
TypeScript
import { default as minimist } from 'minimist';
import { Assistant, ConversationContext } from '../interfaces';
export interface OptionParams {
alias?: string;
type?: 'string' | 'boolean';
description?: string;
}
export declare class Option {
name: string;
alias?: string | undefined;
type?: 'string' | 'boolean' | undefined;
description: string | undefined;
assistant: Assistant;
constructor(name: string, opts?: OptionParams);
toString(): string;
}
export interface CommandOptions {
summary?: string | undefined;
description?: string | undefined;
required?: boolean;
disabled?: boolean;
raw?: boolean;
default?: boolean;
}
export type ActionHandler = (ctx: ConversationContext, args: minimist.ParsedArgs & {
raw: string[];
}) => Promise<unknown> | unknown;
export declare class Command {
#private;
/**
* 命令名称
*/
name: string;
/**
* 是否需要输入项
*/
required: boolean;
/**
* 是否禁用
*/
disabled?: boolean;
/**
* 是否默认命令
*/
default?: boolean;
/**
* 父级指令
*/
parent?: Command;
constructor(name: string, options?: CommandOptions);
get commands(): Map<string, Command>;
summary(): string | undefined;
summary(summary: string): Command;
usage(): string;
addCommand(command: Command): this;
/**
* @param name - 命令名称
* @param options - 命令配置
*/
add(cmd: Command): Command;
add(name: string, options?: CommandOptions): Command;
/**
* @param name - 命令名称
* @param options - 命令配置
*/
register(name: string, action: ActionHandler): Command;
register(name: string, options: CommandOptions, action: ActionHandler): Command;
/**
* @param name - 参数名
* @param opts - 参数
*/
option(name: string, opts?: OptionParams): this;
/**
* @param argv - 原始参数
* @returns 解析好的参数
*/
protected parseArgs(argv: string[]): minimist.ParsedArgs & {
raw: string[];
};
/**
* @param handler - 处理函数
* @returns
*/
action(handler: ActionHandler): Promise<this>;
/**
* @param argv - 原始参数
* @param params - 回应参数
* @example
*
* ```sh
* $ /mj --help
* ```
*/
parse(ctx: ConversationContext, argv: string[]): Promise<void> | void;
}