Your slash commands do not appear

Discord Bots Reviewed September 6, 2026 1 min read

Writing a command handler does not make the command exist. Discord has to be told about the command separately, and where you register it decides how long it takes to show up.

Guild versus global registration

GuildGlobal
Appears inOne serverEvery server the bot is in
Takes effectImmediatelyUp to an hour
Good forDevelopment and testingThe finished command

What to do

  1. Register during development to one guild

    Instant updates mean you can iterate without waiting. Point it at your own test server.

  2. Switch to global when it is ready

    Then wait. The delay is on Discord's side and nothing you do speeds it up.

  3. Check the bot was invited with applications.commands

    An invite link missing that scope produces a bot that joins fine and can never have slash commands. Re-inviting with the right scope fixes it without removing the bot.

  4. Restart your Discord client

    The client caches the command list. Ctrl + R refreshes it, and this alone explains a surprising share of «it's not there».

Do not register on every startup in production

Registration is rate-limited. A bot that crash-loops while re-registering will get throttled, and then the commands stop updating for reasons that have nothing to do with your code. Register when they change, not when the process starts.

Removing a command needs a deliberate action too

Deleting the handler leaves the command visible and broken. You have to overwrite the registered set with one that no longer includes it.

How to confirm it worked

Typing / in the server shows your command with its description, and running it gets a reply.