steam-family-bot-core
Version:
一个用于新版 Steam 家庭的库存监控 Bot 插件
28 lines (27 loc) • 1.3 kB
TypeScript
import { CmdAlias, CmdExecutor, CmdOption } from '../cmd/interface';
type Extend<BASE extends {}, N extends string, D> = {
[P in N | keyof BASE]?: (P extends keyof BASE ? BASE[P] : unknown) & (P extends N ? D : unknown);
};
type ExtractType<T extends string> = T extends 'string' ? string : T extends 'boolean' ? boolean : T extends 'number' ? number : any;
type Nullable<T> = T | null;
type ExtractNullSafeType<T extends string> = T extends `${infer Type}?` ? Nullable<ExtractType<Type>> : ExtractType<T>;
type OptionType<T extends string> = T extends `${infer L}:${infer R}` ? ExtractNullSafeType<R> : unknown;
export declare class CommandBuilder<CHANNEL, OPT extends {} = {}> {
private name;
private description;
private options;
private aliases;
addOption<N extends string, D extends string>(name: N, description: D): CommandBuilder<CHANNEL, Extend<OPT, N, OptionType<D>>>;
addAlias(alias: string, option?: object): this;
setName<T extends string>(name: T): this;
setDescription(description: string): this;
setExecutor(executor: CmdExecutor<CHANNEL, OPT>): {
name: string;
description: string;
aliases: CmdAlias[];
options: CmdOption[];
callback: CmdExecutor<CHANNEL, OPT>;
children: any[];
};
}
export {};