Class: Subcommand<PreParseReturn, Options>
The class to extends for commands that have subcommands. Specify the subcommands through the Subcommand.Options.subcommands option.
Note that you should not make all your commands extend this class, only the ones that have subcommands. The reason for this is that this class implements Command.messageRun and Command.chatInputRun which you wouldn't necessarily want to do for commands that don't have subcommands. Furthermore, it also just adds general unnecessary memory overhead.
Extends
Command
<PreParseReturn
,Options
>
Type Parameters
Type Parameter | Default type |
---|---|
PreParseReturn extends Args | Args |
Options extends Options | Options |
Constructors
new Subcommand()
new Subcommand<
PreParseReturn
,Options
>(context
:LoaderContext
,options
:Options
):Subcommand
<PreParseReturn
,Options
>
Parameters
Parameter | Type |
---|---|
context | LoaderContext |
options | Options |
Returns
Subcommand
<PreParseReturn
, Options
>
Overrides
`Command< PreParseReturn, Options
.constructor`
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:59
Properties
aliases
aliases: readonly
string
[]
The aliases for the piece.
Inherited from
Command.aliases
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:877
applicationCommandRegistry
readonly
applicationCommandRegistry:ApplicationCommandRegistry
The application command registry associated with this command.
Since
3.0.0
Inherited from
Command.applicationCommandRegistry
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:963
caseInsensitiveSubcommands
caseInsensitiveSubcommands:
boolean
=false
Whether to use case insensitive subcommands. This is only relevant for message-command styled commands as
chat input commands are always lowercase. This can be enabled through clientOptions.caseInsensitiveCommands
.
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:57
description
description:
string
A basic summary about the command
Since
1.0.0
Inherited from
Command.description
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:925
detailedDescription
detailedDescription:
DetailedDescriptionCommand
Longer version of command's summary and how to use it
Since
1.0.0
Inherited from
Command.detailedDescription
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:935
enabled
enabled:
boolean
Whether or not the piece is enabled.
Inherited from
Command.enabled
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:234
fullCategory
readonly
fullCategory: readonlystring
[]
The full category for the command, can be overridden by setting the Command.Options.fullCategory option.
If Command.Options.fullCategory is not set, then:
- If the command is loaded from the file system, then this is the command's location in file system relative to
the commands folder. For example, if you have a command located at
commands/General/Information/info.ts
then this property will be['General', 'Info']
. - If the command is virtual, then this will be
[]
.
Since
2.0.0
Inherited from
Command.fullCategory
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:947
lexer
private
lexer:Lexer
The lexer to be used for command parsing
Since
1.0.0
Inherited from
Command.lexer
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:969
location
readonly
location:PieceLocation
The location metadata for the piece's file.
Inherited from
Command.location
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:226
name
readonly
name:string
The name of the piece.
Inherited from
Command.name
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:230
options
readonly
options:Options
The raw options passed to this Piece
Inherited from
Command.options
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:238
parsedSubcommandMappings
parsedSubcommandMappings:
SubcommandMappingArray
The parsed subcommand mappings that were provided with the SubcommandOptions.subcommands option. This is built at construction time and is used to determine which subcommand to run.
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:51
preconditions
preconditions:
PreconditionContainerArray
The preconditions to be run.
Since
1.0.0
Inherited from
Command.preconditions
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:930
rawName
rawName:
string
The raw name of the command as provided through file name or constructor options.
This is exactly what is set by the developer, completely unmodified internally by the framework.
Unlike the name
which gets lowercased for storing it uniquely in the CommandStore.
Inherited from
Command.rawName
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:920
store
readonly
store:CommandStore
The store that contains the piece.
Inherited from
Command.store
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:222
strategy
strategy:
IUnorderedStrategy
The strategy to use for the lexer.
Since
1.0.0
Inherited from
Command.strategy
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:952
subcommandPreconditions
readonly
subcommandPreconditions:Map
<string
,PreconditionContainerArray
>
The preconditions to be run for each specified subcommand.
Since
4.1.0
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:45
typing
typing:
boolean
If SapphireClient.typing is true, it can be overridden for a specific command using this property, set via its options. Otherwise, this property will be ignored.
Default
true
Inherited from
Command.typing
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:958
Accessors
category
Get Signature
get category():
null
|string
The main category for the command, if any.
This getter retrieves the first value of Command.fullCategory, if it has at least one item, otherwise it
returns null
.
Note
You can set Command.Options.fullCategory to override the built-in category resolution.
Returns
null
| string
Inherited from
Command.category
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:991
container
Get Signature
get container():
Container
A reference to the Container object for ease of use.
See
container
Returns
Container
Inherited from
Command.container
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:244
parentCategory
Get Signature
get parentCategory():
null
|string
The parent category for the command.
This getter retrieves the last value of Command.fullCategory, if it has at least one item, otherwise it
returns null
.
Note
You can set Command.Options.fullCategory to override the built-in category resolution.
Returns
null
| string
Inherited from
Command.parentCategory
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1009
subCategory
Get Signature
get subCategory():
null
|string
The sub-category for the command, if any.
This getter retrieves the second value of Command.fullCategory, if it has at least two items, otherwise
it returns null
.
Note
You can set Command.Options.fullCategory to override the built-in category resolution.
Returns
null
| string
Inherited from
Command.subCategory
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1000
Methods
#findSubcommand()
private
#findSubcommand(mappings
:SubcommandMappingMethod
[],expectedName
:string
):object
|object
Parameters
Parameter | Type |
---|---|
mappings | SubcommandMappingMethod [] |
expectedName | string |
Returns
object
| object
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:537
#getCommandPrefix()
private
#getCommandPrefix(content
:string
,prefix
:string
|RegExp
):string
Parameters
Parameter | Type |
---|---|
content | string |
prefix | string | RegExp |
Returns
string
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:390
#getMessageParametersAsString()
private
#getMessageParametersAsString(args
:Args
):Promise
<Partial
<Pick
<MessageCommandDeniedPayload
,"parameters"
>>>
Parameters
Parameter | Type |
---|---|
args | Args |
Returns
Promise
<Partial
<Pick
<MessageCommandDeniedPayload
, "parameters"
>>>
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:394
#handleChatInputInteractionRun()
private
#handleChatInputInteractionRun(interaction
:Interaction
<CacheType
>,context
:ChatInputCommandContext
,subcommand
:SubcommandMappingMethod
,subcommandGroupName
:undefined
|string
):Promise
<void
>
Parameters
Parameter | Type |
---|---|
interaction | Interaction <CacheType > |
context | ChatInputCommandContext |
subcommand | SubcommandMappingMethod |
subcommandGroupName | undefined | string |
Returns
Promise
<void
>
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:474
#handleMessageRun()
private
#handleMessageRun(message
:Message
<boolean
>,args
:Args
,context
:MessageCommandContext
,subcommand
:SubcommandMappingMethod
,subcommandGroupName
:undefined
|string
):Promise
<void
>
Parameters
Parameter | Type |
---|---|
message | Message <boolean > |
args | Args |
context | MessageCommandContext |
subcommand | SubcommandMappingMethod |
subcommandGroupName | undefined | string |
Returns
Promise
<void
>
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:408
#supportsCommandType()
private
#supportsCommandType(commandType
:"chatInputRun"
|"messageRun"
):boolean
Parameters
Parameter | Type |
---|---|
commandType | "chatInputRun" | "messageRun" |
Returns
boolean
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:555
autocompleteRun()?
optional
autocompleteRun(interaction
:AutocompleteInteraction
<CacheType
>):unknown
Executes the autocomplete logic.
You may use this, or alternatively create an InteractionHandler interaction handler to handle autocomplete interactions. Keep in mind that commands take precedence over interaction handlers.
Parameters
Parameter | Type | Description |
---|---|---|
interaction | AutocompleteInteraction <CacheType > | The interaction that triggered the autocomplete. |
Returns
unknown
Inherited from
Command.autocompleteRun
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1041
chatInputRun()
chatInputRun(
interaction
:Interaction
<CacheType
>,context
:ChatInputCommandContext
):Promise
<void
>
The method that is ran when a chat input based subcommand is ran.
DO NOT override this in your implementation of a subcommand!
Parameters
Parameter | Type |
---|---|
interaction | Interaction <CacheType > |
context | ChatInputCommandContext |
Returns
Promise
<void
>
Overrides
Command.chatInputRun
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:352
contextMenuRun()?
optional
contextMenuRun(interaction
:ContextMenuCommandInteraction
<CacheType
>,context
:ContextMenuCommandContext
):unknown
Executes the context menu's logic.
Parameters
Parameter | Type | Description |
---|---|---|
interaction | ContextMenuCommandInteraction <CacheType > | The interaction that triggered the command. |
context | ContextMenuCommandContext | The context menu command run context. |
Returns
unknown
Inherited from
Command.contextMenuRun
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1028
messagePreParse()
messagePreParse(
message
:Message
<boolean
>,parameters
:string
,context
:MessageCommandContext
):Awaitable
<PreParseReturn
>
The message pre-parse method. This method can be overridden by plugins to define their own argument parser.
Parameters
Parameter | Type | Description |
---|---|---|
message | Message <boolean > | The message that triggered the command. |
parameters | string | The raw parameters as a single string. |
context | MessageCommandContext | The command-context used in this execution. |
Returns
Awaitable
<PreParseReturn
>
Inherited from
Command.messagePreParse
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:982
messageRun()
messageRun(
message
:Message
<boolean
>,args
:PreParseReturn
,context
:MessageCommandContext
):Promise
<void
>
The method that is ran when a message-based subcommand is ran.
DO NOT override this in your implementation of a subcommand!
Parameters
Parameter | Type |
---|---|
message | Message <boolean > |
args | PreParseReturn |
context | MessageCommandContext |
Returns
Promise
<void
>
Overrides
Command.messageRun
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:253
onLoad()
onLoad():
void
Per-piece listener that is called when the piece is loaded into the store. Useful to set-up asynchronous initialization tasks.
Returns
void
Overrides
Command.onLoad
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:221
onUnload()
onUnload():
unknown
Per-piece listener that is called when the piece is unloaded from the store. Useful to set-up clean-up tasks.
Returns
unknown
Inherited from
Command.onUnload
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:254
parseConstructorPreConditions()
protected
parseConstructorPreConditions(options
:CommandOptions
):void
Parses the command's options and processes them, calling Command#parseConstructorPreConditionsRunIn, Command#parseConstructorPreConditionsNsfw, Command#parseConstructorPreConditionsRequiredClientPermissions, and Command#parseConstructorPreConditionsCooldown.
Parameters
Parameter | Type | Description |
---|---|---|
options | CommandOptions | The command options given from the constructor. |
Returns
void
Since
2.0.0
Inherited from
Command.parseConstructorPreConditions
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1076
parseConstructorPreConditionsCooldown()
protected
parseConstructorPreConditionsCooldown(options
:CommandOptions
):void
Appends the Cooldown
precondition when Command.Options.cooldownLimit and
Command.Options.cooldownDelay are both non-zero.
Parameters
Parameter | Type | Description |
---|---|---|
options | CommandOptions | The command options given from the constructor. |
Returns
void
Inherited from
Command.parseConstructorPreConditionsCooldown
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1105
parseConstructorPreConditionsNsfw()
protected
parseConstructorPreConditionsNsfw(options
:CommandOptions
):void
Appends the NSFW
precondition if Command.Options.nsfw is set to true.
Parameters
Parameter | Type | Description |
---|---|---|
options | CommandOptions | The command options given from the constructor. |
Returns
void
Inherited from
Command.parseConstructorPreConditionsNsfw
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1081
parseConstructorPreConditionsRequiredClientPermissions()
protected
parseConstructorPreConditionsRequiredClientPermissions(options
:CommandOptions
):void
Appends the ClientPermissions
precondition when Command.Options.requiredClientPermissions resolves to a
non-zero bitfield.
Parameters
Parameter | Type | Description |
---|---|---|
options | CommandOptions | The command options given from the constructor. |
Returns
void
Inherited from
Command.parseConstructorPreConditionsRequiredClientPermissions
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1093
parseConstructorPreConditionsRequiredUserPermissions()
protected
parseConstructorPreConditionsRequiredUserPermissions(options
:CommandOptions
):void
Appends the UserPermissions
precondition when Command.Options.requiredUserPermissions resolves to a
non-zero bitfield.
Parameters
Parameter | Type | Description |
---|---|---|
options | CommandOptions | The command options given from the constructor. |
Returns
void
Inherited from
Command.parseConstructorPreConditionsRequiredUserPermissions
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1099
parseConstructorPreConditionsRunIn()
protected
parseConstructorPreConditionsRunIn(options
:CommandOptions
):void
Appends the RunIn
precondition based on the values passed, defaulting to null
, which doesn't add a
precondition.
Parameters
Parameter | Type | Description |
---|---|---|
options | CommandOptions | The command options given from the constructor. |
Returns
void
Inherited from
Command.parseConstructorPreConditionsRunIn
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1087
registerApplicationCommands()?
optional
registerApplicationCommands(registry
:ApplicationCommandRegistry
):Awaitable
<void
>
Registers the application commands that should be handled by this command.
Parameters
Parameter | Type | Description |
---|---|---|
registry | ApplicationCommandRegistry | This command's registry |
Returns
Awaitable
<void
>
Inherited from
Command.registerApplicationCommands
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1050
reload()
reload():
Promise
<void
>
Reloads the piece by loading the same path in the store.
Returns
Promise
<void
>
Inherited from
Command.reload
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1067
resolveConstructorPreConditionsRunType()
protected
resolveConstructorPreConditionsRunType(types
:CommandRunInUnion
):null
| readonlyChannelType
[]
Resolves the Command.Options.runIn option into a Command.RunInTypes array.
Parameters
Parameter | Type | Description |
---|---|---|
types | CommandRunInUnion | The types to resolve. |
Returns
null
| readonly ChannelType
[]
The resolved types, or null
if no types were resolved.
Inherited from
Command.resolveConstructorPreConditionsRunType
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1111
supportsAutocompleteInteractions()
supportsAutocompleteInteractions():
this is AutocompleteCommand
Type-guard that ensures the command supports handling autocomplete interactions by checking if the handler for it is present
Returns
this is AutocompleteCommand
Inherited from
Command.supportsAutocompleteInteractions
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1066
supportsChatInputCommands()
supportsChatInputCommands():
this is ChatInputCommand
Whether this command has chat input subcommands or not
Returns
this is ChatInputCommand
true
if this command has chat input subcommands, otherwise false
Overrides
Command.supportsChatInputCommands
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:244
supportsContextMenuCommands()
supportsContextMenuCommands():
this is ContextMenuCommand
Type-guard that ensures the command supports context menu commands by checking if the handler for it is present
Returns
this is ContextMenuCommand
Inherited from
Command.supportsContextMenuCommands
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1062
supportsMessageCommands()
supportsMessageCommands():
this is MessageCommand
Whether this command has message-based subcommands or not
Returns
this is MessageCommand
true
if this command has message-based subcommands, otherwise false
Overrides
Command.supportsMessageCommands
Defined in
projects/plugins/packages/subcommands/src/lib/Subcommand.ts:236
toJSON()
toJSON():
CommandJSON
Defines the JSON.stringify behavior of the command.
Returns
CommandJSON
Inherited from
Command.toJSON
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1045
unload()
unload():
Promise
<void
>
Unloads and disables the piece.
Returns
Promise
<void
>
Inherited from
Command.unload
Defined in
node_modules/@sapphire/pieces/dist/esm/index.d.mts:258
runInTypeIsSpecificsObject()
static
runInTypeIsSpecificsObject(types
:CommandRunInUnion
|CommandSpecificRunIn
):types is CommandSpecificRunIn
Parameters
Parameter | Type |
---|---|
types | CommandRunInUnion | CommandSpecificRunIn |
Returns
types is CommandSpecificRunIn
Inherited from
Command.runInTypeIsSpecificsObject
Defined in
node_modules/@sapphire/framework/dist/esm/index.d.mts:1112