@jadl/cmd
Version:
A command handler for JADL
40 lines (39 loc) • 2.49 kB
TypeScript
import { Symbols } from '../Symbols';
import type { APIApplicationCommandOption, RESTPostAPIApplicationCommandsJSONBody } from 'discord-api-types/v9';
import { CommandInteraction } from '../types';
import { CommandHandler } from '../handler/CommandHandler';
import { WorkerInject } from '../structures/WorkerInject';
export interface CommandMeta {
canRun: Array<RunningFunction<boolean>>;
onRun: Array<RunningFunction<void>>;
name: string | symbol;
params: ParamResolver[];
interactionOptions?: APIApplicationCommandOption[];
indexToOption: {
[key: number]: string;
};
method: string;
}
export declare type ParamResolver = (int: CommandInteraction, handler: CommandHandler) => any;
export declare type RunningFunction<R extends any> = (interaction: CommandInteraction, handler: CommandHandler) => R | Promise<R>;
declare const baseSymbols: {
[Symbols.commandName]: string;
[Symbols.aliases]: string[];
[Symbols.interaction]: RESTPostAPIApplicationCommandsJSONBody;
[Symbols.guild]: string | undefined;
[Symbols.commands]: CommandMeta[];
[Symbols.injections]: WorkerInject<import("jadl").Worker<{}>>[];
};
export declare type BaseSymbols = typeof baseSymbols;
export declare type baseDecorator<O extends any> = (options: O, command: BaseSymbols) => void | Promise<void>;
export declare type commandDecorator<O extends any> = (options: O, command: CommandMeta, base: BaseSymbols, descriptor: TypedPropertyDescriptor<Function>) => void | Promise<void>;
export declare type parameterDecorator<O extends any, R extends any = ParamResolver> = (options: O, command: CommandMeta, base: BaseSymbols, index: number) => R;
export declare const Decorators: {
createBaseDecorator: <O extends any[] = undefined[]>(handler: baseDecorator<O>) => (...options: O) => ClassDecorator;
setupCommandMeta: (target: BaseSymbols) => void;
getCommandMeta(target: BaseSymbols, method: string): CommandMeta;
createCommandDecorator: <O_1 extends any[] = undefined[]>(running: commandDecorator<O_1>, extension?: MethodDecorator) => (...options: O_1) => MethodDecorator;
createParameterDecorator: <O_2 extends any[] = undefined[]>(paramHandler: parameterDecorator<O_2, ParamResolver>) => (...options: O_2) => ParameterDecorator;
createParameterAddition: <O_3 extends any[] = undefined[]>(paramHandler: parameterDecorator<O_3, void>) => (...options: O_3) => ParameterDecorator;
};
export {};