Slash commands

Slash commands are the primary way to interact with bots

Creating commands

Reminder: Check the Detritus Documentation for more advanced settings.

A finished command looks like this:

import { Interaction } from 'detritus-client'
import { BaseSlashCommand } from '../base'

export default class PingCommand extends BaseSlashCommand {
  constructor () {
    super({
      description: 'Ping',
      name: 'ping'
    })
  }

  async run (context: Interaction.InteractionContext): Promise<void> {
    await context.editOrRespond(context, 'Pong!')
  }
}

There are a few things to note with regard to how commands are constructed:

  • All commands are new classes that extend a base class, in this example the command is a plain slash command.

  • The resulting command is exported as the default export.

  • The constructor with a super call is used to set properties of the class instead of directly assigning them, this avoids incompatibilities with Detritus.

In practice

When restarting WildBeast, your newly created command will automatically be registered as a global command, and will be available within a few hours.

Rather want a guild-based command instead of a global one? Add guild IDs to the constructor of your command:

constructor () {
  super({
    description: 'Ping',
    name: 'ping',
    guildIds: ['110462143152803840']
  })
}

What's next?

There are more things you can do with commands, like adding options, creating subcommands, and adding buttons and select menus.

Last updated