detritus-client
Version:
A Typescript NodeJS library to interact with Discord's API, both Rest and Gateway.
183 lines (182 loc) • 12.8 kB
TypeScript
import { EventSpewer, EventSubscription } from 'detritus-utils';
import { ShardClient } from './client';
import { ClusterClient, ClusterClientOptions, ClusterClientRunOptions } from './clusterclient';
import { ClientEvents } from './constants';
import { GatewayClientEvents } from './gateway/clientevents';
import { InteractionCommandClient } from './interactioncommandclient';
import { Command, CommandCallbackRun, CommandOptions } from './command/command';
import { Context } from './command/context';
import { CommandEvents } from './command/events';
import { CommandRatelimit, CommandRatelimitOptions, CommandRatelimiter } from './commandratelimit';
import { BaseCollection, BaseSet } from './collections';
import { Message } from './structures';
export interface CommandClientOptions extends ClusterClientOptions {
activateOnEdits?: boolean;
ignoreMe?: boolean;
maxEditDuration?: number;
mentionsEnabled?: boolean;
prefix?: string;
prefixes?: Array<string>;
prefixSpace?: boolean;
ratelimit?: CommandRatelimitOptions;
ratelimits?: Array<CommandRatelimitOptions>;
ratelimiter?: CommandRatelimiter;
useClusterClient?: boolean;
onCommandCheck?: CommandClientCommandCheck;
onCommandCancel?: CommandClientCommandCancel;
onMessageCheck?: CommandClientMessageCheck;
onMessageCancel?: CommandClientMessageCancel;
onPrefixCheck?: CommandClientPrefixCheck;
}
export declare type CommandClientCommandCheck = (context: Context, command: Command) => Promise<boolean> | boolean;
export declare type CommandClientCommandCancel = (context: Context, command: Command) => Promise<any> | any;
export declare type CommandClientMessageCheck = (context: Context) => Promise<boolean> | boolean;
export declare type CommandClientMessageCancel = (context: Context) => Promise<any> | any;
export declare type CommandClientPrefixes = Array<string> | BaseSet<string> | Set<string> | string;
export declare type CommandClientPrefixCheck = (context: Context) => CommandClientPrefixes | Promise<CommandClientPrefixes>;
export interface CommandClientAdd extends CommandOptions {
_class?: any;
}
export interface CommandClientRunOptions extends ClusterClientRunOptions {
directories?: Array<string>;
}
export interface CommandAttributes {
content: string;
prefix: string;
}
export interface CommandReply {
command: Command;
context: Context;
reply: Message;
}
/**
* Command Client, hooks onto a ClusterClient or ShardClient to provide easier command handling
* Flow is `onMessageCheck` -> `onPrefixCheck` -> `onCommandCheck`
* @category Clients
*/
export declare class CommandClient extends EventSpewer {
readonly _clientSubscriptions: Array<EventSubscription>;
activateOnEdits: boolean;
client: ClusterClient | ShardClient;
commands: Array<Command>;
directories: BaseCollection<string, {
subdirectories: boolean;
}>;
ignoreMe: boolean;
maxEditDuration: number;
mentionsEnabled: boolean;
prefixes: {
custom: BaseSet<string>;
mention: BaseSet<string>;
};
ran: boolean;
ratelimits: Array<CommandRatelimit>;
ratelimiter: CommandRatelimiter;
replies: BaseCollection<string, CommandReply>;
onCommandCheck?(context: Context, command: Command): Promise<boolean> | boolean;
onCommandCancel?(context: Context, command: Command): Promise<any> | any;
onMessageCheck?(context: Context): Promise<boolean> | boolean;
onMessageCancel?(context: Context): Promise<any> | any;
onPrefixCheck?(context: Context): CommandClientPrefixes | Promise<CommandClientPrefixes>;
constructor(token: ClusterClient | ShardClient | InteractionCommandClient | string, options?: CommandClientOptions);
get rest(): import("detritus-client-rest").Client | import("./rest").RestClient;
setActivateOnEdits(value: boolean): void;
setMaxEditDuration(value: number): void;
setMentionsEnabled(value: boolean): void;
setPrefixSpace(value: boolean): void;
add(options: Command | CommandClientAdd | string, run?: CommandCallbackRun): CommandClient;
addMultiple(commands?: Array<CommandOptions>): CommandClient;
addMultipleIn(directory: string, options?: {
isAbsolute?: boolean;
subdirectories?: boolean;
}): Promise<CommandClient>;
clear(): void;
clearSubscriptions(): void;
resetCommands(): Promise<void>;
addMentionPrefixes(): void;
getAttributes(context: Context): Promise<CommandAttributes | null>;
getCommand(attributes: CommandAttributes): Command | null;
getPrefixes(context: Context): Promise<BaseSet<string>>;
setSubscriptions(): void;
kill(): void;
run(options?: CommandClientRunOptions): Promise<ClusterClient | ShardClient>;
storeReply(messageId: string, command: Command, context: Context, reply: Message): void;
handleMessageCreate(event: GatewayClientEvents.MessageCreate): Promise<void>;
handleMessageUpdate(event: GatewayClientEvents.MessageUpdate): Promise<void>;
handle(name: ClientEvents.MESSAGE_CREATE, event: GatewayClientEvents.MessageCreate): Promise<void>;
handle(name: ClientEvents.MESSAGE_UPDATE, event: GatewayClientEvents.MessageUpdate): Promise<void>;
handleDelete(name: string, deletePayload: {
raw: {
id: string;
};
}): Promise<void>;
on(event: string | symbol, listener: (...args: any[]) => void): this;
on(event: ClientEvents.COMMAND_DELETE, listener: (payload: CommandEvents.CommandDelete) => any): this;
on(event: 'commandDelete', listener: (payload: CommandEvents.CommandDelete) => any): this;
on(event: ClientEvents.COMMAND_ERROR, listener: (payload: CommandEvents.CommandError) => any): this;
on(event: 'commandError', listener: (payload: CommandEvents.CommandError) => any): this;
on(event: ClientEvents.COMMAND_FAIL, listener: (payload: CommandEvents.CommandFail) => any): this;
on(event: 'commandFail', listener: (payload: CommandEvents.CommandFail) => any): this;
on(event: ClientEvents.COMMAND_NONE, listener: (payload: CommandEvents.CommandNone) => any): this;
on(event: 'commandNone', listener: (payload: CommandEvents.CommandNone) => any): this;
on(event: ClientEvents.COMMAND_PERMISSIONS_FAIL_CLIENT, listener: (payload: CommandEvents.CommandPermissionsFailClient) => any): this;
on(event: 'commandPermissionsFailClient', listener: (payload: CommandEvents.CommandPermissionsFailClient) => any): this;
on(event: ClientEvents.COMMAND_PERMISSIONS_FAIL, listener: (payload: CommandEvents.CommandPermissionsFail) => any): this;
on(event: 'commandPermissionsFail', listener: (payload: CommandEvents.CommandPermissionsFail) => any): this;
on(event: ClientEvents.COMMAND_RAN, listener: (payload: CommandEvents.CommandRan) => any): this;
on(event: 'commandRan', listener: (payload: CommandEvents.CommandRan) => any): this;
on(event: ClientEvents.COMMAND_RATELIMIT, listener: (payload: CommandEvents.CommandRatelimit) => any): this;
on(event: 'commandRatelimit', listener: (payload: CommandEvents.CommandRatelimit) => any): this;
on(event: ClientEvents.COMMAND_RESPONSE_DELETE, listener: (payload: CommandEvents.CommandResponseDelete) => any): this;
on(event: 'commandResponseDelete', listener: (payload: CommandEvents.CommandResponseDelete) => any): this;
on(event: ClientEvents.COMMAND_RUN_ERROR, listener: (payload: CommandEvents.CommandRunError) => any): this;
on(event: 'commandRunError', listener: (payload: CommandEvents.CommandRunError) => any): this;
on(event: ClientEvents.KILLED, listener: () => any): this;
on(event: 'killed', listener: () => any): this;
once(event: string | symbol, listener: (...args: any[]) => void): this;
once(event: ClientEvents.COMMAND_DELETE, listener: (payload: CommandEvents.CommandDelete) => any): this;
once(event: 'commandDelete', listener: (payload: CommandEvents.CommandDelete) => any): this;
once(event: ClientEvents.COMMAND_ERROR, listener: (payload: CommandEvents.CommandError) => any): this;
once(event: 'commandError', listener: (payload: CommandEvents.CommandError) => any): this;
once(event: ClientEvents.COMMAND_FAIL, listener: (payload: CommandEvents.CommandFail) => any): this;
once(event: 'commandFail', listener: (payload: CommandEvents.CommandFail) => any): this;
once(event: ClientEvents.COMMAND_NONE, listener: (payload: CommandEvents.CommandNone) => any): this;
once(event: 'commandNone', listener: (payload: CommandEvents.CommandNone) => any): this;
once(event: ClientEvents.COMMAND_PERMISSIONS_FAIL_CLIENT, listener: (payload: CommandEvents.CommandPermissionsFailClient) => any): this;
once(event: 'commandPermissionsFailClient', listener: (payload: CommandEvents.CommandPermissionsFailClient) => any): this;
once(event: ClientEvents.COMMAND_PERMISSIONS_FAIL, listener: (payload: CommandEvents.CommandPermissionsFail) => any): this;
once(event: 'commandPermissionsFail', listener: (payload: CommandEvents.CommandPermissionsFail) => any): this;
once(event: ClientEvents.COMMAND_RAN, listener: (payload: CommandEvents.CommandRan) => any): this;
once(event: 'commandRan', listener: (payload: CommandEvents.CommandRan) => any): this;
once(event: ClientEvents.COMMAND_RATELIMIT, listener: (payload: CommandEvents.CommandRatelimit) => any): this;
once(event: 'commandRatelimit', listener: (payload: CommandEvents.CommandRatelimit) => any): this;
once(event: ClientEvents.COMMAND_RESPONSE_DELETE, listener: (payload: CommandEvents.CommandResponseDelete) => any): this;
once(event: 'commandResponseDelete', listener: (payload: CommandEvents.CommandResponseDelete) => any): this;
once(event: ClientEvents.COMMAND_RUN_ERROR, listener: (payload: CommandEvents.CommandRunError) => any): this;
once(event: 'commandRunError', listener: (payload: CommandEvents.CommandRunError) => any): this;
once(event: ClientEvents.KILLED, listener: () => any): this;
once(event: 'killed', listener: () => any): this;
subscribe(event: string | symbol, listener: (...args: any[]) => void): EventSubscription;
subscribe(event: ClientEvents.COMMAND_DELETE, listener: (payload: CommandEvents.CommandDelete) => any): EventSubscription;
subscribe(event: 'commandDelete', listener: (payload: CommandEvents.CommandDelete) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_ERROR, listener: (payload: CommandEvents.CommandError) => any): EventSubscription;
subscribe(event: 'commandError', listener: (payload: CommandEvents.CommandError) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_FAIL, listener: (payload: CommandEvents.CommandFail) => any): EventSubscription;
subscribe(event: 'commandFail', listener: (payload: CommandEvents.CommandFail) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_NONE, listener: (payload: CommandEvents.CommandNone) => any): EventSubscription;
subscribe(event: 'commandNone', listener: (payload: CommandEvents.CommandNone) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_PERMISSIONS_FAIL_CLIENT, listener: (payload: CommandEvents.CommandPermissionsFailClient) => any): EventSubscription;
subscribe(event: 'commandPermissionsFailClient', listener: (payload: CommandEvents.CommandPermissionsFailClient) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_PERMISSIONS_FAIL, listener: (payload: CommandEvents.CommandPermissionsFail) => any): EventSubscription;
subscribe(event: 'commandPermissionsFail', listener: (payload: CommandEvents.CommandPermissionsFail) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_RAN, listener: (payload: CommandEvents.CommandRan) => any): EventSubscription;
subscribe(event: 'commandRan', listener: (payload: CommandEvents.CommandRan) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_RATELIMIT, listener: (payload: CommandEvents.CommandRatelimit) => any): EventSubscription;
subscribe(event: 'commandRatelimit', listener: (payload: CommandEvents.CommandRatelimit) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_RESPONSE_DELETE, listener: (payload: CommandEvents.CommandResponseDelete) => any): EventSubscription;
subscribe(event: 'commandResponseDelete', listener: (payload: CommandEvents.CommandResponseDelete) => any): EventSubscription;
subscribe(event: ClientEvents.COMMAND_RUN_ERROR, listener: (payload: CommandEvents.CommandRunError) => any): EventSubscription;
subscribe(event: 'commandRunError', listener: (payload: CommandEvents.CommandRunError) => any): EventSubscription;
subscribe(event: ClientEvents.KILLED, listener: () => any): EventSubscription;
subscribe(event: 'killed', listener: () => any): EventSubscription;
}