What the bot asks Discord for
No privileged intents are required. Commands arrive as interactions and role assignment uses
the REST API rather than the member cache.
bot and applications.commands scopes.
If you don’t configure a verified role or any License Operations role, Manage Roles isn’t
needed at all — the bot degrades gracefully and reports why a role couldn’t be assigned rather
than failing silently.
Role hierarchy
Any command that assigns or removes a Discord role needs the bot’s own role to sit above that role in your server’s role list. Discord refuses a role change from a lower role regardless of what permissions the bot holds — this is the single most common setup failure, for both/key redeem’s verified role and every role mapped with /licops roles map.
Who can run what
KeyAuth Bot layers two separate permission models on top of Discord’s own command visibility:Base admin commands
/key generate/delete/list/info, /admin ..., and /app var/data — gated by the bot’s
configured administrator list.License Operations
/license ... and /licops ... — gated by 17 granular capabilities mapped to Discord
roles. See Support Operations.Base admin access
Commands marked [Admin] — key generation and deletion, user management, reseller accounts, the audit log, and application variables — check the bot’s configured administrator list:- A Discord user configured as a bot administrator can always run them.
- If no administrators are configured, the fallback is the server owner or anyone holding Manage Server.
License Operations capabilities
License Operations (/license, /licops) does not use the bot’s administrator list as its
primary gate. Instead:
- Configured administrators and the guild owner hold every capability — the existing admin model is preserved, not replaced, so nobody who already administers the bot is locked out of it.
- Otherwise, a member’s effective capabilities are the union of whatever’s been granted to
their Discord roles with
/licops permissions grantor/licops permissions preset. - Otherwise, nothing — default deny. An unconfigured guild grants no License Operations capability to non-admins at all.
/admin and /licops are registered with a Discord-side default_permissions of
Manage Server, which controls whether a role can see the command in Discord — server
admins can loosen this per-role in Integrations settings. Either way, the capability check
above runs again when the command actually executes, so visibility alone never grants access.
See Support Operations for the full capability list and
what each one grants, and License Operations for the
permission model in depth.