Skip to main content

Restrictions

Control who can run a custom command with allow lists, deny lists, and required permissions.

Evaluation order

1

Deny list always wins

If the invoker, one of their roles, or the current channel is denied, the command stops immediately — no matter what else is configured.
2

Allow list gates entry

If any allow entry exists, the invoker must match one of them (as a user, through a role, or by running it in an allowed channel). If no allow entries exist at all, everyone passes this step.
3

Required permissions are always checked

Whatever ;cc requireperm lists must be held by the invoker. Matching an allow entry does not skip this.
4

Action permissions are checked last

If the script runs actions, the invoker needs the mapped permission — unless a user or role allow entry covers them, which bypasses this step only.
A channel allow entry lets the command run in that channel. It never bypasses a permission check — only user and role entries do that, and only for action permissions.

Commands

All of these require Manage Server.

Worked example

Goal: a ;quiet command that times someone out for 10 minutes, usable only by moderators, only in the staff channel, and never by a suspended moderator.
1

Create it

You must hold Moderate Members yourself to save this, because of the {mod:timeout} action.
2

Limit it to the staff channel and the mod role

Only members with @Moderator get through, and only inside #staff-commands. Because @Moderator is a role allow entry, those members no longer need Moderate Members for the action itself.
3

Require a Discord permission on top

This check is never bypassed by an allow entry, so an allowed moderator who lost the permission is still refused.
4

Suspend one person without touching the rest

The deny entry beats their @Moderator allow entry.
5

Confirm the result