# How to restrict Discord bot commands to roles or channels

> Restrict Discord bot commands to specific roles or channels — per-command Enabled and Disabled lists, and how they differ from the Integrations page.

- Canonical: https://discordguides.blog/blog/set-up-discord-command-permissions
- Published: 2026-09-15
- Author: The Manual desk
- Facts checked: 2026-08-31
- Sources:
  - Vetox docs — Command management (https://docs.vetox.io/en/server-management/command-management) — checked 2026-08-31
  - Vetox docs — Permissions overview (https://docs.vetox.io/en/permissions) — checked 2026-08-31
  - Discord developer docs — Permissions (https://docs.discord.com/developers/topics/permissions) — checked 2026-08-31
- Publication: The Manual, an independent site not affiliated with Discord Inc.

---
Handing someone Manage Messages so they can run one moderation command also lets them delete any message anywhere, edit pins, and manage every thread — Discord's permission model has no concept of "this one command, nothing else." Vetox's per-command settings exist specifically to close that gap: a role can be granted a command directly, independent of whether it holds the Discord permission that command would otherwise require.

**Before you start:** you need Administrator permission in the server, or to be the owner, to reach the Commands page. No bot permission changes here — this page governs _who may invoke_ a command, not what Discord permission the bot itself needs to carry out the action.

## 1. Open the command you want to restrict

The **Commands** page lists all 70 top-level slash commands, grouped into five tabs — All, General, Moderation, Info, Leveling — with a search box. Selecting one opens its own settings, and a command with subcommands (`/ticket`, `/starboard`, `/coins`) exposes each subcommand as its own row with its own settings, addressable directly.

## 2. Grant it to specific roles without touching Discord permissions

**Enabled Roles** is the setting that does the actual work most servers are looking for: add a role here and members holding it can run the command **even without the Discord permission it would normally require**. This is how you give a Trial Moderator role `/warn-add` and `/timeout` without also handing out Moderate Members anywhere in the server — the command works for them, and nothing else does.

**Disabled Roles** is the reverse — block specific roles from a command regardless of what Discord permission they hold otherwise.

## 3. Restrict it to specific channels

**Enabled Channels**, when non-empty, confines a command to exactly those channels — set it on `/rank`, `/top` and `/profile` to keep bot-spam commands in one dedicated channel. **Disabled Channels** does the opposite: block a command from specific channels while leaving it open everywhere else — the standard use is keeping `/roll` and similar fun commands out of announcements or support channels.

## 4. Add a prefix-free alias, if you want one

**Aliases** let a member trigger a command by typing a plain word — no slash, no command menu — as long as the message does not start with the server's configured prefix. No command ships with a built-in alias; every one is added per server. Set `b` as an alias for `/ban` and a moderator can type `b @user spam` as an ordinary message and have it run exactly like the slash command, subject to the same role, channel and cooldown checks.

This is a genuinely different mechanism from a slash-command rename — Discord's own command picker still shows the original name. The alias is a second, independent way in.

## 5. Turn a command off entirely, if nobody should use it

**Enabled** off stops the command for everyone, including administrators — there is no override once a command is switched off at this level. This differs from restricting it to a role, which still lets _someone_ use it.

## 6. Know what a subcommand row does and does not inherit

A subcommand's settings — `/ticket claim`, `/starboard force` — are evaluated **after** the parent command's own checks pass, and they carry a narrower field set: enabled, the four role and channel lists, and one auto-delete option. Aliases, the other auto-delete toggles and preset reasons are parent-command-only and do not apply at the subcommand level.

## Common use cases

1. **Trial moderators without Discord permissions.** Grant `/warn-add` and `/timeout` to a Trial Moderator role via Enabled Roles — no server permission required, and you can revoke it by removing the role, not by editing anyone's Discord permissions.
2. **Splitting a support team.** Leave `/ticket close` open to every support role; restrict `/ticket merge` to a senior role by setting Enabled Roles on that one subcommand specifically.
3. **Keeping fun commands serious-channel-free.** Add your announcements and support channel IDs to Disabled Channels for `/roll` and similar.
4. **A shorthand for a command your team runs constantly.** An alias like `w` for `/warn-add` saves a moderator the trip through the slash-command picker during a busy moment.

## How this compares to Discord's own command permissions

Discord itself has a native layer for this, reachable from **Server Settings → Integrations → [the bot]**, which lets an administrator restrict which roles or channels can see and use a given application's commands, independent of any bot-side configuration at all. It works on every bot that registers slash commands, Vetox included, and is worth knowing about because the two systems are not mutually exclusive — Discord's layer can hide a command from the picker entirely, while Vetox's layer additionally lets you **grant** a command to a role that would not otherwise have the underlying Discord permission, which Discord's own settings cannot do on their own.

The practical difference: Discord's native restriction is visibility and access at the platform level, and it is the same mechanism for every app you have installed. Vetox's per-command settings are specifically about decoupling "can run this command" from "holds this Discord permission," which is the harder problem a growing staff team actually runs into.

## Common questions

**Does restricting a command here also restrict the same action if a moderator does it manually?**
No — this only governs the command's own invocation. A moderator with the Discord permission to ban directly through Discord's member list is unaffected by a `/ban` restriction here.

**Why does a command still not appear for someone I granted access to?**
Every Vetox command is guild-only — check they are testing in the server, not a DM — and Discord can take a few minutes to sync a newly changed command's visibility after any change; a client restart usually forces it.

**Can I set a cooldown from this page?**
No. Cooldowns are fixed per command in Vetox's own registry and are not editable from the Dashboard.

**A role I granted access to still can't use the command. What's left to check?**
Confirm the command itself is not switched off entirely — Enabled off overrides every role grant — and see [why your bot is not responding](/blog/discord-bot-not-responding) if the issue turns out to be a channel permission rather than this page. For restricting whole _pages_ of the Dashboard rather than individual commands, see [how to set up dashboard access control](/blog/set-up-discord-access-control).