detritus-client
Version:
A Typescript NodeJS library to interact with Discord's API, both Rest and Gateway.
165 lines (164 loc) • 6.93 kB
TypeScript
import { CommandAttributes, CommandClient } from '../commandclient';
import { CommandRatelimit, CommandRatelimitItem, CommandRatelimitOptions } from '../commandratelimit';
import { Message } from '../structures/message';
import { ArgumentOptions, Argument, ArgumentDefault, ArgumentType } from './argument';
import { ArgumentParser, ParsedArgs, ParsedErrors } from './argumentparser';
import { Context } from './context';
export declare type CommandRatelimitInfo = {
item: CommandRatelimitItem;
ratelimit: CommandRatelimit;
remaining: number;
};
export declare type CommandRatelimitMetadata = {
global: boolean;
now: number;
};
export declare type FailedPermissions = Array<bigint>;
/**
* @category Command
*/
export declare type CommandCallbackDmBlocked = (context: Context) => Promise<any | Message> | any | Message;
/**
* @category Command
*/
export declare type CommandCallbackBefore = (context: Context) => Promise<boolean> | boolean;
/**
* @category Command
*/
export declare type CommandCallbackBeforeRun = (context: Context, args: ParsedArgs) => Promise<boolean> | boolean;
/**
* @category Command
*/
export declare type CommandCallbackCancel = (context: Context) => Promise<any | Message> | any | Message;
/**
* @category Command
*/
export declare type CommandCallbackCancelRun = (context: Context, args: ParsedArgs) => Promise<any | Message> | any | Message;
/**
* @category Command
*/
export declare type CommandCallbackError = (context: Context, args: ParsedArgs, error: any) => Promise<any> | any;
/**
* @category Command
*/
export declare type CommandCallbackPermissionsFail = (context: Context, permissions: FailedPermissions) => Promise<any | Message> | any | Message;
/**
* @category Command
*/
export declare type CommandCallbackSuccess = (context: Context, args: ParsedArgs) => Promise<any> | any;
/**
* @category Command
*/
export declare type CommandCallbackRatelimit = (context: Context, ratelimits: Array<CommandRatelimitInfo>, metadata: CommandRatelimitMetadata) => Promise<any | Message> | any | Message;
/**
* @category Command
*/
export declare type CommandCallbackRun = (context: Context, args: ParsedArgs) => Promise<any | Message> | any | Message;
/**
* @category Command
*/
export declare type CommandCallbackRunError = (context: Context, args: ParsedArgs, error: any) => Promise<any> | any;
/**
* @category Command
*/
export declare type CommandCallbackTypeError = (context: Context, args: ParsedArgs, errors: ParsedErrors) => Promise<any | Message> | any | Message;
/**
* Command Options
* @category Command Options
*/
export interface CommandOptions extends ArgumentOptions {
_file?: string;
args?: Array<ArgumentOptions>;
disableDm?: boolean;
disableDmReply?: boolean;
metadata?: Record<string, any>;
name: string;
permissions?: Array<bigint | number>;
permissionsClient?: Array<bigint | number>;
permissionsIgnoreClientOwner?: boolean;
priority?: number;
ratelimit?: boolean | CommandRatelimitOptions | null;
ratelimits?: Array<CommandRatelimitOptions>;
responseOptional?: boolean;
triggerTypingAfter?: number;
onDmBlocked?: CommandCallbackDmBlocked;
onBefore?: CommandCallbackBefore;
onBeforeRun?: CommandCallbackBeforeRun;
onCancel?: CommandCallbackCancel;
onCancelRun?: CommandCallbackCancelRun;
onError?: CommandCallbackError;
onPermissionsFail?: CommandCallbackPermissionsFail;
onPermissionsFailClient?: CommandCallbackPermissionsFail;
onRatelimit?: CommandCallbackRatelimit;
run?: CommandCallbackRun;
onRunError?: CommandCallbackRunError;
onSuccess?: CommandCallbackSuccess;
onTypeError?: CommandCallbackTypeError;
}
/**
* Command itself
* Command flow is ratelimit check -> dm/permission check -> `onBefore` -> arg parse -> `onBeforeRun` -> `run` -> `onSuccess | onRunError`
* @category Command
*/
export declare class Command<ParsedArgsFinished = ParsedArgs> {
readonly _file?: string;
readonly argParser: ArgumentParser;
readonly commandClient: CommandClient;
arg: Argument;
disableDm: boolean;
disableDmReply: boolean;
metadata: Record<string, any>;
permissions?: Array<bigint>;
permissionsClient?: Array<bigint>;
permissionsIgnoreClientOwner?: boolean;
priority: number;
ratelimits: Array<CommandRatelimit>;
responseOptional: boolean;
triggerTypingAfter: number;
onDmBlocked?(context: Context): Promise<any | Message> | any | Message;
onBefore?(context: Context): Promise<boolean> | boolean;
onBeforeRun?(context: Context, args: ParsedArgs): Promise<boolean> | boolean;
onCancel?(context: Context): Promise<any | Message> | any | Message;
onCancelRun?(context: Context, args: ParsedArgs): Promise<any | Message> | any | Message;
onError?(context: Context, args: ParsedArgs, error: any): Promise<any> | any;
onPermissionsFail?(context: Context, permissions: FailedPermissions): Promise<any | Message> | any | Message;
onPermissionsFailClient?(context: Context, permissions: FailedPermissions): Promise<any | Message> | any | Message;
onRatelimit?(context: Context, ratelimits: Array<CommandRatelimitInfo>, metadata: CommandRatelimitMetadata): Promise<any | Message> | any | Message;
run?(context: Context, args: ParsedArgsFinished): Promise<any | Message> | any | Message;
onRunError?(context: Context, args: ParsedArgsFinished, error: any): Promise<any | Message> | any | Message;
onSuccess?(context: Context, args: ParsedArgsFinished): Promise<any> | any;
onTypeError?(context: Context, args: ParsedArgs, errors: ParsedErrors): Promise<any | Message> | any | Message;
constructor(commandClient: CommandClient, options: CommandOptions);
get aliases(): Array<string>;
set aliases(value: Array<string>);
set args(value: Array<ArgumentOptions>);
get choices(): Array<any> | undefined;
set choices(value: Array<any> | undefined);
get default(): ArgumentDefault;
set default(value: ArgumentDefault);
get fullName(): string;
get help(): string;
set help(value: string);
get label(): string;
set label(value: string);
get name(): string;
set name(value: string);
get names(): string[];
set prefixes(value: Array<string>);
set type(value: ArgumentType);
setAliases(value: Array<string>): this;
setArgs(value: Array<ArgumentOptions>): this;
setChoices(value: Array<any> | undefined): this;
setDefault(value: ArgumentDefault): this;
setHelp(value: string): this;
setLabel(value: string): this;
setName(value: string): this;
setPrefixes(value: Array<string>): this;
setType(value: ArgumentType): this;
check(name: string): boolean;
getArgs(attributes: CommandAttributes, context: Context): Promise<{
errors: ParsedErrors;
parsed: ParsedArgs;
}>;
getName(content: string): null | string;
}