Class CommandBase<Type, GuildOnly, RefuseUncached, ReturnType, ResolveType>

Type Parameters

  • Type extends CommandType
  • GuildOnly extends boolean
  • RefuseUncached extends boolean
  • ReturnType
  • ResolveType extends NonNullable<unknown> | null

Hierarchy (View Summary)

Constructors

Properties

category: string
controllers: Record<
    string,
    CommandController<
        ReturnType,
        CommandInteraction<Type, CacheTypeResolver<GuildOnly, RefuseUncached>>,
    >,
>
debug: Debugger
id: string
idWithoutPrefix: string
resolver: Type extends AutoComplete
    ? AutoCompleteResolver<GuildOnly, RefuseUncached, ResolveType>
    : null
type: Type
defaults: {
    enabled: { global: boolean; nsfw: boolean } & {
        dm: boolean;
        guildOnly: false;
        guilds: boolean | string[];
        privateChannel: boolean;
    };
    interactions: CommandInteractionOptions<false>;
    permissions: CommandPermissionOptions;
    throttle: CommandThrottleOptions;
} = commandDefaults

Accessors

Methods

  • Reply to an interaction with a message, dynamically resolving which reply function to use depending on wether or not the interaction has been acknowledged. ephemeral is resolved from this#isEphemeral if not overriden.

    Please note that using MessageFlags in the content is not supported with a dynamic function like this. If you need specific flags, use reply, editReply, followUp, etc. directly, instead of using this convenience method.

    Type Parameters

    • I extends RepliableInteraction
    • WithResponse extends boolean = false

    Parameters

    Returns Promise<WithResponseType<WithResponse>>

  • Returns string

  • Run a function, throttled by the configured throttle options.

    Type Parameters

    • T extends () => unknown

    Parameters

    • consumer: ThrottleConsumer

      The function to be called before the throttled function is executed, should return wether or not to proceed to fn.

    • fn: T

      The function to be executed, can return a value or a promise. Not executed if before returns false.

    • throttleAutoComplete: boolean = false

      Whether or not to throttle auto-complete commands. If set to false, the function will be executed immediately.

    Returns Promise<readonly [unknown, ThrottleConsumerResult]>

    A tuple of the result of the fn function and a promise for the after function.

  • Type Parameters

    • I extends Interaction<CacheType>

    Parameters

    • interaction: I

    Returns string

  • Type Parameters

    • Interaction extends RepliableInteraction

    Parameters

    Returns Promise<void>

  • Parameters

    • id: string
    • data: (
          | RESTPostAPIChatInputApplicationCommandsJSONBody
          | RESTPostAPIContextMenuApplicationCommandsJSONBody
      )[]

    Returns
        | undefined
        | RESTPostAPIChatInputApplicationCommandsJSONBody
        | RESTPostAPIContextMenuApplicationCommandsJSONBody

  • Parameters

    Returns InteractionContextType[]

  • Parameters

    • command: APICommand
    • contexts: InteractionContextType[]

    Returns ApplicationIntegrationType[]

  • Type Parameters

    • Type extends CommandType
    • GuildOnly extends boolean
    • RefuseUncached extends boolean
    • ReturnType

    Returns Promise<
        | [
            | "discord.memberCount"
            | "discord.joinedServer"
            | "discord.joinedDiscord"
            | "discord.accountCreated"
            | "discord.messageHasNoEmbeds"
            | "discord.memberJoined.description"
            | "discord.memberJoined.title"
            | "discord.memberLeft.description"
            | "discord.memberLeft.title"
            | "commands.error"
            | "commands.disabled"
            | "commands.guildOnly"
            | "commands.cachedGuildOnly"
            | "commands.nsfwChannelOnly"
            | "commands.notTargetUser"
            | "commands.noOptionSelected"
            | "permissions.yourLevel"
            | "permissions.theirLevel"
            | "permissions.levelTooLow"
            | "permissions.missingBotScope"
            | "permissions.missingPermissions"
            | "permissions.botMissingPermissions"
            | "permissions.unavailable.guild"
            | "permissions.unavailable.channel"
            | "permissions.unavailable.cachedGuild"
            | "permissions.unavailable.channelCategory"
            | "permissions.unavailable.missingRoles"
            | "permissions.unavailable.unauthorized"
            | "permissions.unavailable.disabledByServer"
            | "permissions.levels.User"
            | "permissions.levels.Moderator"
            | "permissions.levels.Administrator"
            | "permissions.levels.Server Owner"
            | "permissions.levels.Developer"
            | "permissions.levels.Bot Administrator"
            | "permissions.levels.Bot Owner"
            | "core:discord.memberCount"
            | "core:discord.joinedServer"
            | "core:discord.joinedDiscord"
            | "core:discord.accountCreated"
            | "core:discord.messageHasNoEmbeds"
            | "core:discord.memberJoined.description"
            | "core:discord.memberJoined.title"
            | "core:discord.memberLeft.description"
            | "core:discord.memberLeft.title"
            | "core:commands.error"
            | "core:commands.disabled"
            | "core:commands.guildOnly"
            | "core:commands.cachedGuildOnly"
            | "core:commands.nsfwChannelOnly"
            | "core:commands.notTargetUser"
            | "core:commands.noOptionSelected"
            | "core:permissions.yourLevel"
            | "core:permissions.theirLevel"
            | "core:permissions.levelTooLow"
            | "core:permissions.missingBotScope"
            | "core:permissions.missingPermissions"
            | "core:permissions.botMissingPermissions"
            | "core:permissions.unavailable.guild"
            | "core:permissions.unavailable.channel"
            | "core:permissions.unavailable.cachedGuild"
            | "core:permissions.unavailable.channelCategory"
            | "core:permissions.unavailable.missingRoles"
            | "core:permissions.unavailable.unauthorized"
            | "core:permissions.unavailable.disabledByServer"
            | "core:permissions.levels.User"
            | "core:permissions.levels.Moderator"
            | "core:permissions.levels.Administrator"
            | "core:permissions.levels.Server Owner"
            | "core:permissions.levels.Developer"
            | "core:permissions.levels.Bot Administrator"
            | "core:permissions.levels.Bot Owner"
            | "common:time.runtime"
            | "common:time.singular.seconds"
            | "common:time.singular.minutes"
            | "common:time.singular.hours"
            | "common:time.singular.days"
            | "common:time.plural.seconds"
            | "common:time.plural.minutes"
            | "common:time.plural.hours"
            | "common:time.plural.days"
            | "common:word.archived"
            | "common:word.pending"
            | "common:word.info"
            | "common:word.unknown"
            | "common:word.error"
            | "common:word.disabled"
            | "common:word.unavailable"
            | "common:word.none"
            | "common:word.loading"
            | "common:word.success"
            | "common:word.warning"
            | "common:word.yes"
            | "common:word.no"
            | "common:word.on"
            | "common:word.off"
            | "common:word.enabled"
            | "common:word.active"
            | "common:word.inactive"
            | "common:word.online"
            | "common:word.offline"
            | "common:word.available"
            | "common:word.connected"
            | "common:word.disconnected"
            | "common:word.completed"
            | "common:word.failed"
            | "common:word.cancelled"
            | "common:word.accepted"
            | "common:word.rejected"
            | "common:word.created"
            | "common:word.updated"
            | "common:word.deleted"
            | "common:word.restored"
            | "common:word.added"
            | "common:word.removed"
            | "common:word.changed"
            | "common:word.modified"
            | "common:word.viewed"
            | "common:word.opened"
            | "common:word.closed"
            | "common:word.started"
            | "common:word.stopped"
            | "common:word.paused"
            | "common:word.resumed"
            | "common:word.finished"
            | "common:word.startedAt"
            | "common:word.stoppedAt"
            | "common:word.pausedAt"
            | "common:word.resumedAt"
            | "common:word.finishedAt"
            | "common:actions.delete"
            | "common:actions.edit"
            | "common:actions.cancel"
            | "common:actions.confirm"
            | "common:actions.save"
            | "common:actions.close"
            | "common:confirmation.cancel.message"
            | "common:confirmation.cancel.title"
            | "common:confirmation.confirm.message"
            | "common:confirmation.confirm.title"
            | "common:confirmation.prompt.message"
            | "common:confirmation.prompt.title"
            | "common:errors.tryAgainLater"
            | "common:errors.issueReportedToSupport"
            | "common:errors.rateLimit.message"
            | "common:errors.rateLimit.title",
            null
            | Record<string, string>,
        ]
        | CommandInteraction<Type, CacheTypeResolver<GuildOnly, RefuseUncached>>,
    >

  • Type Parameters

    • Type extends CommandType
    • GuildOnly extends boolean
    • RefuseUncached extends boolean
    • ReturnType

    Returns Promise<
        | true
        | [
            | "discord.memberCount"
            | "discord.joinedServer"
            | "discord.joinedDiscord"
            | "discord.accountCreated"
            | "discord.messageHasNoEmbeds"
            | "discord.memberJoined.description"
            | "discord.memberJoined.title"
            | "discord.memberLeft.description"
            | "discord.memberLeft.title"
            | "commands.error"
            | "commands.disabled"
            | "commands.guildOnly"
            | "commands.cachedGuildOnly"
            | "commands.nsfwChannelOnly"
            | "commands.notTargetUser"
            | "commands.noOptionSelected"
            | "permissions.yourLevel"
            | "permissions.theirLevel"
            | "permissions.levelTooLow"
            | "permissions.missingBotScope"
            | "permissions.missingPermissions"
            | "permissions.botMissingPermissions"
            | "permissions.unavailable.guild"
            | "permissions.unavailable.channel"
            | "permissions.unavailable.cachedGuild"
            | "permissions.unavailable.channelCategory"
            | "permissions.unavailable.missingRoles"
            | "permissions.unavailable.unauthorized"
            | "permissions.unavailable.disabledByServer"
            | "permissions.levels.User"
            | "permissions.levels.Moderator"
            | "permissions.levels.Administrator"
            | "permissions.levels.Server Owner"
            | "permissions.levels.Developer"
            | "permissions.levels.Bot Administrator"
            | "permissions.levels.Bot Owner"
            | "core:discord.memberCount"
            | "core:discord.joinedServer"
            | "core:discord.joinedDiscord"
            | "core:discord.accountCreated"
            | "core:discord.messageHasNoEmbeds"
            | "core:discord.memberJoined.description"
            | "core:discord.memberJoined.title"
            | "core:discord.memberLeft.description"
            | "core:discord.memberLeft.title"
            | "core:commands.error"
            | "core:commands.disabled"
            | "core:commands.guildOnly"
            | "core:commands.cachedGuildOnly"
            | "core:commands.nsfwChannelOnly"
            | "core:commands.notTargetUser"
            | "core:commands.noOptionSelected"
            | "core:permissions.yourLevel"
            | "core:permissions.theirLevel"
            | "core:permissions.levelTooLow"
            | "core:permissions.missingBotScope"
            | "core:permissions.missingPermissions"
            | "core:permissions.botMissingPermissions"
            | "core:permissions.unavailable.guild"
            | "core:permissions.unavailable.channel"
            | "core:permissions.unavailable.cachedGuild"
            | "core:permissions.unavailable.channelCategory"
            | "core:permissions.unavailable.missingRoles"
            | "core:permissions.unavailable.unauthorized"
            | "core:permissions.unavailable.disabledByServer"
            | "core:permissions.levels.User"
            | "core:permissions.levels.Moderator"
            | "core:permissions.levels.Administrator"
            | "core:permissions.levels.Server Owner"
            | "core:permissions.levels.Developer"
            | "core:permissions.levels.Bot Administrator"
            | "core:permissions.levels.Bot Owner"
            | "common:time.runtime"
            | "common:time.singular.seconds"
            | "common:time.singular.minutes"
            | "common:time.singular.hours"
            | "common:time.singular.days"
            | "common:time.plural.seconds"
            | "common:time.plural.minutes"
            | "common:time.plural.hours"
            | "common:time.plural.days"
            | "common:word.archived"
            | "common:word.pending"
            | "common:word.info"
            | "common:word.unknown"
            | "common:word.error"
            | "common:word.disabled"
            | "common:word.unavailable"
            | "common:word.none"
            | "common:word.loading"
            | "common:word.success"
            | "common:word.warning"
            | "common:word.yes"
            | "common:word.no"
            | "common:word.on"
            | "common:word.off"
            | "common:word.enabled"
            | "common:word.active"
            | "common:word.inactive"
            | "common:word.online"
            | "common:word.offline"
            | "common:word.available"
            | "common:word.connected"
            | "common:word.disconnected"
            | "common:word.completed"
            | "common:word.failed"
            | "common:word.cancelled"
            | "common:word.accepted"
            | "common:word.rejected"
            | "common:word.created"
            | "common:word.updated"
            | "common:word.deleted"
            | "common:word.restored"
            | "common:word.added"
            | "common:word.removed"
            | "common:word.changed"
            | "common:word.modified"
            | "common:word.viewed"
            | "common:word.opened"
            | "common:word.closed"
            | "common:word.started"
            | "common:word.stopped"
            | "common:word.paused"
            | "common:word.resumed"
            | "common:word.finished"
            | "common:word.startedAt"
            | "common:word.stoppedAt"
            | "common:word.pausedAt"
            | "common:word.resumedAt"
            | "common:word.finishedAt"
            | "common:actions.delete"
            | "common:actions.edit"
            | "common:actions.cancel"
            | "common:actions.confirm"
            | "common:actions.save"
            | "common:actions.close"
            | "common:confirmation.cancel.message"
            | "common:confirmation.cancel.title"
            | "common:confirmation.confirm.message"
            | "common:confirmation.confirm.title"
            | "common:confirmation.prompt.message"
            | "common:confirmation.prompt.title"
            | "common:errors.tryAgainLater"
            | "common:errors.issueReportedToSupport"
            | "common:errors.rateLimit.message"
            | "common:errors.rateLimit.title",
            null
            | Record<string, string>,
        ],
    >

  • Parameters

    Returns boolean

  • Parameters

    Returns InteractionType

  • Parameters

    Returns string