Discord Slash Commands, Explained for Server Owners
What a slash command actually is, why it might be missing or greyed out, and how to read a command's permission requirements.
Quick answer
A slash command is a structured, Discord-native way to run a bot action — typed as /commandname, with defined options Discord validates before the bot even sees the request. If one is missing from the picker or appears but gets denied, it's almost always a permission, feature-enablement, or sync-timing issue rather than the bot being broken.
What you'll learn
- What makes a slash command different from a bot just reading chat messages
- Why a command can appear but still get denied
- Why a command might be missing entirely
- How to read a command's declared permission requirements
- What response visibility (public vs. private) actually means
Why slash commands replaced older bot command styles
Older Discord bots relied on reading every message and watching for a text prefix (like -ban). That approach was fragile — easy to trigger by accident, impossible for Discord to validate in advance, and invisible until you already knew the exact syntax. Slash commands are registered with Discord directly, which is why Discord can show you exactly what options a command takes before you run it, and why it can enforce permissions before the bot is even involved.
How Discord handles a slash command
When you type /, Discord shows registered commands from every bot in the server, with their described options and types. Discord can independently restrict application commands at the server, role, member, or channel level — entirely separate from whatever permission system the bot itself enforces.
What a command's reference entry actually tells you
Every active Airwavy command has a documented reference entry — worth checking before assuming something's broken.
- Its declared bot permission and any required user permission.
- Any access badges — Premium, staff-only, a vote requirement, or an enabled-feature dependency.
- Its response visibility — public by default, ephemeral (visible only to the user who ran it), or varies by outcome.
- Common errors specific to that command, and related commands worth knowing about.
How to check a command before assuming it's broken
- Open the command's reference entry in the docs command catalogue.
- Check its declared bot permission — does Airwavy actually have it, server-wide and in the relevant channel?
- Check any required user permission or access badge — some commands need Premium, a staff role, or an enabled dashboard feature.
- If it's genuinely missing from the picker, confirm application commands are allowed in that channel and that a recent update has finished syncing.
- Test with the least-privileged account you actually intend to use it with, not an administrator account.
Common mistakes
- Assuming a denied command means the bot is broken, without checking its declared permission requirements first.
- Testing only with an administrator account, which skips exactly the restrictions a regular member would hit.
- Not realizing Discord itself can restrict application commands independently of anything the bot configures.
- Expecting an update to sync instantly — command changes can take a moment to propagate after a bot update.
Troubleshooting
A command is missing from the picker entirely
Confirm you selected the right application, application commands are allowed in that channel, and the command has finished syncing after an update.
A command appears but gets denied when run
Check its reference entry for user permissions, bot permissions, access badges, feature state, role hierarchy, channel overwrites, and cooldown.
The response is only visible to me, is that normal?
Some commands respond ephemerally by design (visible only to the user who ran it) — check the command's reference entry for its documented response visibility.