Skip to content
AzraDocs
Pricing Dashboard
Moderation & access

Permission Manager

Decide exactly who can use each part of Azra — grant modules and fine-tune individual commands for specific members and roles, without ever touching Discord permissions.

13 sections20 min readOpen the dashboard
On this page

Overview#

A custom, always-on permission layer that fully replaces Discord's native permission checks for Azra's commands and dashboard pages.

The Permission Manager lets you answer two questions for every member and every role in your server:

Which modules can they use?#

A module grant unlocks a whole feature — e.g. granting moderation lets someone use every moderation command and open the Moderation dashboard page.

Which individual commands are allowed or denied?#

A per-command override carves an exception into a module — e.g. grant moderation but deny ban, or leave the module off and allow just warn.

How It Works#

Every time someone runs a command or opens a dashboard page, Azra resolves their effective access from your grants.

The three kinds of command#

KindExamplesWho can use it
Gated/ban, /warn, /giveaway, /welcome, Quick Ban (right-click)The server owner & Discord administrators (full access by default), plus anyone with a matching module grant or an explicit allow override.
Public / self-service/rank, /profile, /rewards, /leaderboard, /whois, /ping, /help, entering a giveawayEveryone. These bypass the permission system entirely and can never be denied.
UncataloguedAnything not in Azra's command catalogueLocked to the owner & admins (fail-safe) — a command shipped without a catalogue entry is denied rather than silently public.

All surfaces of a command are treated as one#

A command can be invoked several ways — a slash command, a text/prefix command, a right-click context menu, or a message button. Azra groups every surface of the same capability under one action, so a grant or a denial always spans all of them:

Under the hood#

Grants are stored per-server as two small tables — module grants and per-command overrides. The set of modules and commands (the "catalogue") is defined in Azra's code, so it always matches the bot exactly; the database only stores your grants:

StoreHolds
perm_module_grantsOne row per (subject → module) grant. subject_type is user or role.
perm_command_overridesOne row per (subject → command) override, with effect = allow | deny. No row means "inherit from the module".

Resolution is cached for a few minutes and refreshed instantly when you save a change, so grants take effect within seconds. If Azra can't read the permission data (e.g. a brief database hiccup), it fails closed — access is denied rather than accidentally opened.

Configuring Permissions#

Everything is managed from the dashboard's Permissions Manager page — no commands required.

  1. 1

    Open the Permissions Manager

    Go to Dashboard → your server → Permissions Manager (the key icon in the sidebar). It's visible to the server owner, Discord admins, and anyone you've given the Manage Permissions capability.

  2. 2

    Pick a user or a role

    Use the Users tab to search a member by name, or the Roles tab to choose a role. Roles are almost always the better choice — grant a role once and every member who has it inherits the access.

  3. 3

    Switch on the modules they should have

    Every module is its own card with a single Allow all permissions switch. Turning it on grants the whole module — its commands and its dashboard page — and allows every command inside it. Nothing is written until you save.

    The tabs above the cards only change what you are looking at: Discord Access Moderation keeps the modules Discord also has permissions for (each shown in full, with the rows Discord cannot express marked Azra only), and Azra Dashboard Access keeps everything Discord has no permission for. A card lists the same commands on every tab.

  4. 4

    Fine-tune individual commands (optional)

    Every command inside a module is listed in its card, each with its own Allow / Deny pair — nothing is hidden behind an expander. Deny carves an exception out of a module you granted (a moderator who may kick but not ban); Allow on its own hands out a single command without the module. A command with neither picked follows its module's switch, and re-clicking the side you picked clears it. Most setups never touch these.

  5. 5

    Save your changes

    Edits are staged in a sticky Save changes bar at the bottom — nothing is written until you click Save (or Discard to revert). This lets you set up a full staff role in one pass. You'll be warned before leaving with unsaved changes.

    A big edit is a sequence of writes, so a progress panel floats in the bottom corner while it runs: how many of how many changes are saved, what is still pending, and a percentage bar that moves as each one lands. Minimize it (the minus button) to carry on working elsewhere in the dashboard — the save keeps going, and the small pill it leaves behind shows the same progress. Click that pill to reopen the details. When everything has landed you get a clear success message; if any change is refused, the panel names it, says why, and offers Retry failed — a success message only ever appears once every change is saved.

Removing all of one person grants at once#

Required Permissions#

Two separate things: who is allowed to manage permissions, and what Discord permissions the bot itself still needs.

Who can manage permissions#

RoleWhat they can do
Server ownerFull control. Always has every module, can grant/revoke anything (including Manage Permissions), and can never be locked out.
Discord admin (Manage Server)Full control of the Permissions Manager on the dashboard, exactly like the owner. (For automatic bot-command access, see the admin note below.)
Manage Permissions holderA delegated staff member you've granted the manage_permissions module. They can open this page and manage grants — within the safety limits described in Delegation & Hierarchy.
Everyone elseNo access to the Permissions Manager page.

What the bot itself needs#

The Permission Manager decides who may ask Azra to do something. Azra still needs its own Discord permissions to actually carry it out:

Role & User Assignments#

Grants are attached to a "subject" — either a role or a specific user. A member's access is the union of both.

Attach access to a role once; everyone with that role inherits it, and it updates automatically as you add/remove the role from members. Perfect for a "Moderator" or "Giveaway Host" role.

User grants#

Attach access to one specific person. Best for one-off exceptions — e.g. a trusted community member who should host giveaways without joining the staff role.

How a member's access is combined#

A member's effective permissions are the union of their own user grants plus the grants on every role they hold. If any of those sources grants a module or allows a command, they have it — unless something explicitly denies it (see Inheritance & Overrides).

Module-Specific Permissions#

Each feature of Azra is a module. Granting a module unlocks both its bot commands and its dashboard configuration page.

Some modules are command-driven, some are configured purely from the dashboard, and some are both. A module grant covers whichever surfaces the module has:

What each module unlocks#

Module keyUnlocks
moderationwarn, warnings, kick, ban, unban, timeout, tempban, temprole, purge, nickname, lock, unlock, lockdown, slowmode, massmod; the punishment actions (softban, tempkick, jail, unjail, blacklist, unblacklist, lock_user, unlock_user); the case actions (case_view, case_note, case_edit, case_undo, escalation_preview); the voice actions (voice_mute, voice_unmute, voice_deafen, voice_undeafen, voice_move, voice_disconnect); the Quick Ban/Kick/Timeout right-click menus, and the prefix equivalents
mod_loggingThe central Logging dashboard page & routing
automodAI Auto-Moderation configuration
antispamAnti-Spam and copy-paste-guard configuration
analyticsThe /stats command & the Analytics dashboard
welcome/welcome commands & the Welcome/Goodbye designer
ticketsClaiming, assigning, status & priority, transferring between departments, internal notes, adding/removing members, & the Tickets dashboard. Each is a separate capability
reaction_rolesThe /reactionroles command & the panel builder
anti_nukeAnti-Nuke configuration & nuke-event log
raid_protectionRaid-protection configuration
captchaCaptcha & account-age verification configuration
server_recoveryThe /snapshot command, snapshots & deletion-recovery
bot_detectionBot-detection configuration & flags
sticky_messagesThe /sticky command & the Sticky Messages page
ghost_pingThe /ghostping command & the Ghost Ping page
levelingThe Leveling dashboard (XP rates, level roles, rank cards). Note: /rank, /leaderboard and /setbg are public — no grant needed.
social_integrationsThe /socials command & the Twitch/YouTube manager
giveawaysCreating & managing giveaways (the /giveaway command, the ⚙️ Manage panel, & the dashboard). Entering a giveaway is always public.
brandingPer-server branding & the bot nickname
channelsCreating, editing & deleting channels and webhooks from the dashboard
manage_permissionsThe Permissions Manager itself — the keys-to-the-kingdom capability (owner/admin only to grant)

Paused modules#

Inheritance & Overrides#

Command overrides are how you make exceptions to a module grant. Understanding the precedence is the key to the whole system.

The three states of a command#

StateMeaning
Inherit (default)Follow the module: if the module is granted the command is allowed; if not, it's denied. No override is stored.
AllowForce the command on for this subject, even if the module isn't granted. Great for handing out a single command.
DenyForce the command off for this subject, even if the module is granted. Great for carving one dangerous command out of a role.

Resolution order (highest priority first)#

When a member runs a command, Azra checks, in order:

#CheckResult
1Is it a public / self-service command?✅ Always allowed
2Is the member the server owner?✅ Always allowed
3Is the member a Discord Administrator?✅ Always allowed (full access, like the owner)
4Any Deny override across their user + roles?⛔ Denied — deny always wins (for non-admins)
5Any Allow override across their user + roles?✅ Allowed
6Any module grant covering the command?✅ Allowed
7None of the above⛔ Denied

Worked example#

Suppose your @Trial Mod role is set up like this:

Subject: role @Trial Mod
  module "moderation"     = granted        (all mod commands inherit → allowed)
  command "ban"           = Deny           (override: force off)
  command "kick"          = Deny           (override: force off)
  command "lockdown"      = Deny           (override: force off)

A member with only @Trial Mod can /warn, /timeout, /purge and /slowmode (inherited from the module) but is blocked from /ban, /kick and /channel lockdown — on every surface, including the right-click menus. Give them the senior @Mod role later (no denies) and they immediately gain the full set, because that role's grant has nothing subtracting from it.

Allow without the module#

The reverse pattern hands out a single command with no module access:

Subject: user @Helper
  module "moderation"     = not granted
  command "warn"          = Allow          (override: force on)

@Helper can use /warn (and !warn) but nothing else in moderation, and never sees the Moderation dashboard page (that needs the module grant).

Delegation & Role Hierarchy#

You can safely let trusted staff manage permissions themselves — Azra enforces guardrails that stop them from escalating their own power.

Grant a staff member (or role) the manage_permissions module and they can open the Permissions Manager. To prevent privilege escalation, a delegated manager (anyone who isn't the owner or a Discord admin) is bound by these rules — all enforced on the server, not just hidden in the UI:

GuardrailWhy
Can only grant modules they hold themselvesThey can re-delegate their own powers but never hand out (or self-grant) a module above their level.
Cannot grant or revoke manage_permissionsOnly the owner/admin can mint or remove other permission managers — the keys to the kingdom stay at the top.
Can only manage roles below their own highest granting roleMirrors Discord's own hierarchy — you can't edit a role at or above your own.
Cannot manage the role that grants them their accessStops a manager editing or deleting the very role that gives them power.
Cannot clear a subject that holds manage_permissionsOne manager can't strip another manager's (or the owner's) access.

Discord Sync — Letting Azra Manage Permissions#

Azra can read the permissions your roles already have, and from there you choose one of two ways to keep them: stay in step with Discord, or have Azra own the moderation permissions it supports.

Step 1 — Import the permissions the server already has#

On the Permissions Manager page, press Import Permissions from Discord. Azra reads every role and proposes the grants that match it — a role that can kick but not ban becomes exactly that, and nothing is written until you confirm the preview. Roles that cannot be imported are listed with the reason (the @everyone role, integration-managed roles, roles above Azra's own, and anything with Administrator, which already has everything).

Step 2 — Choose how Azra and Discord work together#

As soon as the import finishes, you are given two options. They are the only two supported ways to run: pick the one that matches who you want holding the permission.

OptionWhat it meansWhat happens in Discord
Sync with Discord Azra keeps the Permissions Manager and your Discord roles in step. Grant or revoke access here and the matching Discord permission is written to the role; change a role in Discord and the change is read back into Azra. When both sides have moved on the same role, Azra reports the conflict instead of guessing which is right — you resolve it. Permissions are added where a grant requires them. Nothing is removed from a role for any reason other than the grant behind it.
Use AZRA Permissions Manager Azra takes over the moderation permissions it supports. Moderation access comes from the Permissions Manager instead of from Discord roles, and the Permissions Manager becomes the source of truth for those permissions: revoke a grant here and Discord follows. The matching permissions are removed from your Discord roles — only after a preview that lists every role and every permission, which you confirm. Everything else in those roles is left exactly as it is.

It is previewed, confirmed and undoable#

Removing a permission from a role is not something Discord can undo — it keeps no record of what a role's permissions used to be — so Azra does not treat it as a side effect. Choosing Use AZRA Permissions Manager saves the mode and then opens the removal preview: you see every role and every permission that would be taken, then confirm again. Before anything is changed, Azra saves what each role had. If you change your mind, Undo last removal on the same page puts the permissions back.

What cannot be imported#

Discord has no equivalent of warnings, the numbered case record, escalation ladders, tickets, forms, giveaways or levelling. Nothing can be imported for those, so grant them in the editor above — the import shows you the list rather than quietly covering part of your setup.

Common Setups#

Recipes you can copy. All of these use role grants — set the role up once and assign it to your team.

Full Moderator#

Role @Mod → grant moderation + mod_logging. Every mod command, plus the ability to configure logging.

Trial Moderator#

Role @Trial Mod → grant moderation, then Deny ban, kick, lockdown, massmod. Warns and timeouts only.

Giveaway Host#

Role @Host → grant giveaways. They can create, edit and manage giveaways without any Discord permissions.

Support Team#

Role @Support → grant tickets. They can claim tickets and add/remove members. Closing a ticket is always open to its opener.

Community Manager#

Role @CM → grant welcome, reaction_roles, social_integrations, leveling, analytics. Runs engagement without mod power.

Head of Staff (delegated admin)#

Role @Head Mod → grant manage_permissions + the modules they oversee. They can then manage grants for roles below theirs. Owner/admin only can assign this.

Best Practices#

A few habits that keep permissions simple and secure as your server grows.

  1. Grant to roles, not people

    Attach access to a "Moderator" / "Host" / "Support" role and assign the role in Discord. It scales, self-documents, and updates automatically as your team changes. Reserve user grants for genuine one-offs.

  2. Grant the whole module, subtract with Deny

    It's cleaner to grant moderation and deny the two commands a junior shouldn't touch than to allow ten commands one by one. Because deny always wins, the carve-outs are guaranteed.

  3. Hand out Manage Permissions sparingly

    It's the most powerful capability. Give it only to your most senior staff, and remember delegated managers are still boxed in by role hierarchy and can only re-share modules they already hold.

  4. Mirror your Discord role hierarchy

    Keep senior staff roles positioned above junior ones in Discord. Delegated managers can only manage roles below their own, so a clean hierarchy makes delegation intuitive.

  5. Review the subjects list periodically

    The "Members & roles with grants" panel is your at-a-glance audit. Clear anyone who's left the team, and confirm no user grant has quietly outlived its purpose.

Troubleshooting#

The usual culprits when access doesn't behave as expected.

Symptoms and fixes#

SymptomLikely cause & fix
Staff member gets "Permission Denied" on a command they should have They have no module grant and no allow override — or a Deny on one of their roles is overriding it (deny always wins). Check every role they hold, not just their staff role.
A staffer with Manage Server (but not Administrator) can't run /ban Automatic bot access requires the full Administrator permission (or being the owner) — Manage Server alone isn't enough. Either grant that staffer's role the moderation module, or give them the Administrator permission.
Command is allowed but silently does nothing That's a bot permission problem, not a Permission Manager one. Ensure Azra's own Discord role has the needed permission (e.g. Ban Members) and sits above the target in the hierarchy.
A change didn't seem to apply Make sure you clicked Save changes in the sticky bar — edits are staged until saved. Grants then take effect within a few seconds (up to a few minutes if the bot was briefly unreachable).
A role is missing from the picker @everyone and managed/integration roles are hidden by design. If you're a delegated manager, roles at or above your own are also hidden — ask the owner/admin to handle those.
A module you expected isn't listed It's been paused by Azra's operators for maintenance (a note explains this at the top of the page). Existing grants are preserved and it returns automatically.
Everyone is denied everything at once Azra fails closed during a database issue. This is temporary — access restores automatically once the connection recovers. The owner is affected too, so it's easy to spot.

FAQ#

Quick answers to the most common questions.

Does this replace Discord permissions?#

For Azra's gated commands and dashboard, yes — Azra ignores Discord permissions entirely and uses only your grants. Your Discord permissions still govern everything else in your server (who can send messages, manage channels manually, etc.).

Can I turn the permission system off?#

No — it's always enforced. There's no per-server switch. On a fresh server, grant your staff the modules they need so they don't lose access; the owner and Discord Administrators always retain full control in the meantime.

Do Discord admins need to be granted anything?#

No. A member with the Discord Administrator permission is treated like the owner — they have every module by default and can run any gated command with no grant (a deny can't block them either). Grants exist for handing precise access to non-admin staff. Note that Manage Server on its own doesn't grant automatic command access — only full Administrator does — though Manage Server is still enough to open and configure the dashboard.

What can new members / regular users do without any grant?#

Only the public, self-service commands: /rank, /profile, /rewards, /leaderboard, /setbg, /whois, /ping, /help, the !prefix viewer, and entering giveaways. Everything else needs a grant.

If I grant a module, does that give dashboard access too?#

Yes. A module grant unlocks both the module's bot commands and its configuration page on the dashboard. That's why a config-only module like welcome or analytics is worth granting even though its dashboard page is the main way to use it.

User grant and role grant conflict — which wins?#

They combine (union), and then the deny rule applies: a Deny on either the user or any of their roles wins over any allow or module grant. Otherwise, an allow/grant from any source is enough.

Can a staff member grant themselves more power?#

No. A delegated manager can only grant modules they already hold, can't touch manage_permissions, and can't manage roles at or above their own. Only the owner or a Discord admin can hand out the top-level capability.

Do denies cover right-click and text commands too?#

Yes. Overrides apply to the whole capability, so denying ban blocks the slash command, the !ban prefix command, and the Quick Ban context menu together — no surface can be used to bypass it.

What happens to grants if I remove a role or the person leaves?#

Role grants simply stop applying to anyone who no longer has the role — the grant stays on the role for whoever keeps it. If you delete a role in Discord, its grants are cleaned up. User grants persist until you clear them from the subjects list.