UNPKG

advanced-command-handler

Version:

A package to help you create a bot with only 1 main file, directories for your events/commands, with some helpers classes and functions.

89 lines (88 loc) 3.84 kB
import { Channel, Emoji, Guild, GuildMember, Message, Snowflake, User } from 'discord.js'; import { TextChannelLike } from '../types'; import { Command } from './commands'; import { ArgumentContext } from './contexts'; import { Event } from './Event'; declare type ArgumentValidator = (argument: string, ctx: ArgumentContext) => boolean; declare type ArgumentParser<T> = (argument: string, ctx: ArgumentContext) => T | null | Promise<T | null>; export declare type ArgumentFunction<T> = (options: ArgumentBuilder<T>) => Argument<T>; export declare class Argument<T> { type: ArgumentType; options: ArgumentOptions<T>; validator: ArgumentValidator; parser: ArgumentParser<T>; constructor(type: ArgumentType, options: ArgumentOptions<T>, validator: ArgumentValidator, parser: ArgumentParser<T>); } export declare class CommandArgument<T> { name: string; index: number; coalescing: boolean; defaultValue: T | undefined; description: string; optional: boolean; parse: ArgumentParser<T>; type: ArgumentType; validate: ArgumentValidator; constructor(name: string, index: number, argument: Argument<T>); get isSimple(): boolean; } export declare function booleanArgument(options?: ArgumentBuilder<boolean>): Argument<boolean>; export declare function channelArgument(options?: ArgumentBuilder<Channel>): Argument<Channel>; export declare function choiceArgument(options: ArgumentBuilder<string> & { values: string[]; }): Argument<string>; export declare function commandArg(options?: ArgumentBuilder<Command>): Argument<Command>; export declare function emojiArgument(options?: ArgumentBuilder<Emoji>): Argument<Emoji>; export declare function enumArgument<E extends Record<string, V>, V>(options: ArgumentBuilder<V> & { values: E; }): Argument<V>; export declare function eventArgument(options?: ArgumentBuilder<Event>): Argument<Event>; export declare function floatArgument(options?: ArgumentBuilder<number>): Argument<number>; export declare function guildArgument(options?: ArgumentBuilder<Guild>): Argument<Guild>; export declare function guildMemberArgument(options?: ArgumentBuilder<GuildMember>): Argument<GuildMember>; export declare function intArgument(options?: ArgumentBuilder<number>): Argument<number>; export declare function messageArgument(options?: ArgumentBuilder<Message>): Argument<Message>; export declare function snowflakeArgument(options?: ArgumentBuilder<Snowflake>): Argument<string>; export declare function stringArgument(options?: ArgumentBuilder<string> & { regex?: RegExp; }): Argument<string>; export declare function regexArgument(options?: ArgumentBuilder<RegExp>): Argument<RegExp>; export declare function textChannelArgument(options?: ArgumentBuilder<TextChannelLike>): Argument<import("discord.js").TextChannel | import("discord.js").NewsChannel>; export declare function userArgument(options?: ArgumentBuilder<User>): Argument<User>; interface ArgumentOptions<T> { coalescing?: boolean; defaultValue?: T; description?: string; optional?: boolean; } declare type ArgumentBuilder<T> = { description?: string; coalescing?: boolean; } | { description?: string; defaultValue?: T; } | { description?: string; optional?: boolean; }; export declare enum ArgumentType { BOOLEAN = "boolean", CHANNEL = "channel", COMMAND = "command", CHOICE = "choice", EMOJI = "emoji", ENUM = "enum", EVENT = "event", FLOAT = "float", GUILD = "guild", GUILD_MEMBER = "guild_member", INTEGER = "integer", MESSAGE = "message", REGEX = "regex", ROLE = "role", SNOWFLAKE = "snowflake", STRING = "string", TEXT_CHANNEL = "text_channel", USER = "user" } export {};