Skip to main content

Interface: SubcommandMappingMethod

@sapphire/plugin-subcommands.SubcommandMappingMethod

Describes how a subcommand method maps to the actual implementation of that subcommand.

Hierarchy

  • SubcommandMappingBase

  • Pick<Command.Options, "preconditions" | "runIn" | "nsfw" | "cooldownLimit" | "cooldownDelay" | "cooldownScope" | "cooldownFilteredUsers" | "requiredClientPermissions" | "requiredUserPermissions">

    SubcommandMappingMethod

Properties

chatInputRun

Optional chatInputRun: string | (interaction: ChatInputCommandInteraction<CacheType>, context: ChatInputCommandContext) => unknown

The class method to call when invoking this subcommand through a chat input command, or a callback implementation of the subcommand.

Note that when providing a string you have to first define the method that will be called within your function before this will allow any values. This is to ensure that the property is strictly typed to the context of the class.

Example

chatInputRun: 'runModeratorConfig'

Example

chatInputRun(interaction: Subcommand.Interaction) {
return interaction.reply(`<@${interaction.user.id}> has been granted moderator`);
}

Defined in

projects/plugins/packages/subcommands/src/lib/types/SubcommandMappings.ts:93


cooldownDelay

Optional cooldownDelay: number

The time in milliseconds for the cooldown entries to reset, if set to a non-zero value alongside CommandOptions.cooldownLimit, the Cooldown precondition will be added to the list.

Since

2.0.0

Default

0

Inherited from

Pick.cooldownDelay

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1224


cooldownFilteredUsers

Optional cooldownFilteredUsers: string[]

The users that are exempt from the Cooldown precondition. Use this to filter out someone like a bot owner

Since

2.0.0

Default

undefined

Inherited from

Pick.cooldownFilteredUsers

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1237


cooldownLimit

Optional cooldownLimit: number

The amount of entries the cooldown can have before filling up, if set to a non-zero value alongside CommandOptions.cooldownDelay, the Cooldown precondition will be added to the list.

Since

2.0.0

Default

1

Inherited from

Pick.cooldownLimit

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1218


cooldownScope

Optional cooldownScope: BucketScope

The scope of the cooldown entries.

Since

2.0.0

Default

BucketScope.User

Inherited from

Pick.cooldownScope

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1230


default

Optional default: boolean

Whether this is the default subcommand when none is provided.

Note that this is effectively only used for Message based subcommand (those implementing SubcommandMappingMethod.messageRun) because the subcommand is always provided for chat input commands.

Defined in

projects/plugins/packages/subcommands/src/lib/types/SubcommandMappings.ts:51


messageRun

Optional messageRun: string | (message: Message<boolean>, args: Args, context: MessageCommandContext) => unknown

The class method to call when invoking this subcommand through a message command, or a callback implementation of the subcommand.

Note that when providing a string you have to first define the method that will be called within your function before this will allow any values. This is to ensure that the property is strictly typed to the context of the class.

Example

messageRun: 'runAdminConfig'

Example

messageRun(message: Message) {
return message.reply(`<@${message.author.id}> has been granted admin`);
}

Defined in

projects/plugins/packages/subcommands/src/lib/types/SubcommandMappings.ts:72


name

name: string

The name of this subcommand, or subcommand group

Inherited from

SubcommandMappingBase.name

Defined in

projects/plugins/packages/subcommands/src/lib/types/SubcommandMappings.ts:14


nsfw

Optional nsfw: boolean

Sets whether the command should be treated as NSFW. If set to true, the NSFW precondition will be added to the list.

Since

2.0.0

Default

false

Inherited from

Pick.nsfw

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1212


preconditions

Optional preconditions: readonly PreconditionEntryResolvable[]

The Preconditions to be run, accepts an array of their names.

Seealso

PreconditionContainerArray

Since

1.0.0

Default

[]

Inherited from

Pick.preconditions

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1194


requiredClientPermissions

Optional requiredClientPermissions: PermissionResolvable

The required permissions for the client.

Since

2.0.0

Default

0

Inherited from

Pick.requiredClientPermissions

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1243


requiredUserPermissions

Optional requiredUserPermissions: PermissionResolvable

The required permissions for the user.

Since

2.0.0

Default

0

Inherited from

Pick.requiredUserPermissions

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1249


runIn

Optional runIn: CommandRunInUnion | CommandSpecificRunIn

The channels the command should run in. If set to null, no precondition entry will be added. Some optimizations are applied when given an array to reduce the amount of preconditions run (e.g. 'GUILD_TEXT' and 'GUILD_NEWS' becomes 'GUILD_ANY', and if both 'DM' and 'GUILD_ANY' are defined, then no precondition entry is added as it runs in all channels).

This can be both CommandRunInUnion which will have the same precondition apply to all the types of commands, or you can use CommandSpecificRunIn to apply different preconditions to different types of commands.

Since

2.0.0

Default

null

Inherited from

Pick.runIn

Defined in

node_modules/@sapphire/framework/dist/esm/index.d.mts:1261


type

Optional type: "method"

This subcommand mapping describes a subcommand method and can therefore only ever be 'method'

Overrides

SubcommandMappingBase.type

Defined in

projects/plugins/packages/subcommands/src/lib/types/SubcommandMappings.ts:43