Subcommands are a great way to nest seperate commands under one base command, each subcommand is their own seperate command and can be called as such.
In practise
import { Interaction } from 'detritus-client'
import { BaseSlashCommand, BaseCommandOption } from '../base'
export default class PingCommand extends BaseSlashCommand {
constructor () {
super({
name: 'ping',
// With subcommands, the description doesn't matter,
// since it doesn't get shown to end users.
description: '',
options: [
new PongCommand()
]
})
}
// The base command should not have a run(), it never gets called
}
export class PongCommand extends BaseCommandOption {
constructor () {
super({
name: 'pong'
description: 'Pong!'
})
}
async run (context: Interaction.InteractionContext): Promise<void> {
await context.editOrRespond(context, 'Pong!')
}
}