Custom commands
Create your own slash commands for a server, and toggle the bot's built-in ones.
The Commands feature is on by default. Open Commands in the sidebar. It has two tabs: Custom commands and Default commands.
Commands take a little while to appear
Discord can take up to an hour to register command changes. If a new or renamed command does not show up right away, give it some time and check back.
Creating a custom command
On the Custom commands tab, click New command and fill in:
- Command name (slug): the
/namepeople type. Lowercase letters, digits, hyphens, and underscores, 1 to 32 characters. - Description: shown by Discord in the command list (up to 100 characters).
- Enabled: turn the command on or off without deleting it.
Then choose what the command does.
Text reply
The simplest type: the bot replies with a fixed message.
- Response message: a rich-text editor (up to 2000 characters). Format the text and insert placeholders from the
{ }menu, such as{user.name}(the invoker's display name) and{user.mention}(a mention that pings them). See the placeholder reference. - Who can see the message: Everyone in the channel, or Only the user who executed the command (a private reply).
Run action (advanced)
Instead of a fixed reply, run a sequence of actions when the command is used. The available actions are the same building blocks as automations:
| Action | What it does |
|---|---|
| Reply to the command | Replies to the slash command itself; each reply picks its own visibility (everyone or just the invoker). |
| Send a message to a channel | Posts a message to a channel. |
| Give roles | Grants roles to the person who ran the command. |
| Remove roles | Removes roles from them. |
| DM the user | Sends a direct message to the invoker, with an optional fallback channel if their DMs are closed. |
| Kick member | Kicks them, with an optional audit-log reason. |
| Ask a question | Posts buttons and branches on the answer. |
| If / else | Branches on conditions (member roles, XP, message text, and more); see automations. |
The number of actions per command depends on your plan (the editor shows the current limit).
Permissions
Under Permissions, pick the Allowed roles. Leave it empty to let everyone use the command, or list roles to restrict it.
Default commands
The Default commands tab lists the bot's built-in commands and lets you turn the optional ones on or off for this server.
| Command | Toggleable | What it shows |
|---|---|---|
/help | Always on | The commands you can use here, plus dashboard and docs links. |
/pizza | Always on | A pizza emoji, just for fun. |
/serverinfo | Yes (on by default) | Server name, member count, boosts, and age. |
/userinfo | Yes (on by default) | A user's profile: avatar, names, account age, join date, and roles. |
/roleinfo | Yes (on by default) | A role's colour, position, key permissions, and flags. |
/channelinfo | Yes (on by default) | A channel's type, category, topic, slowmode, and age. |
/membercount | Yes (on by default) | The server's member count. |
Other built-in commands
Commands like /rank, /leaderboard, /xp, /warn, /note, and /warnings are not listed here. They appear automatically when their feature is on (XP & levels, or Moderation records) and disappear when it is off. See the slash command reference.
Limits
Custom commands are capped per server by your plan: a number of text-reply commands and a number of action commands. The page shows your usage. See Plans & limits.
Tagging roles, members and channels
In the Response message box (and in the message boxes of the advanced actions) you can type @ to tag a role or member, or # to link a channel, the same way as on Send a message. Each role and member tag gets a Ping switch underneath. Ping means Discord sends those people a notification, and Tag only shows the tag without notifying anyone. @everyone and @here start on Tag only, so nobody pings the whole server by accident.
If a member leaves, or a role or channel is deleted, the tag keeps showing its old name when you edit the message, but you can no longer pick it again. In Discord it then shows as a broken tag.
Commands saved before the Ping switches existed keep working as they did: role and member tags in their reply still ping, but @everyone and @here never do.