ZMN Bot Documentation
Setup guides and configuration reference for every ZMN module — security, moderation, roles, leveling, and access control.
Quick Navigation
Roles Manager
Give and remove roles from Discord with one simple command
Overview
Roles Manager exists to make one job easy: handing roles out and taking them back. You group the roles you want managed into a panel, say who is allowed to touch that panel, and your team does the rest from Discord with /roles. Nothing is posted to your server — this module is command-driven from end to end.
Perfect for
- • Team leads who need to give their own members roles without full Manage Roles permission
- • Event staff handing a role to everyone who showed up in a voice channel
- • Any server that wants role changes logged with who did it and why
Key features
Panels as a safety boundary
A panel holds a list of roles. The command can only give or remove roles that are on that list — everything else is refused, by name, so it is obvious what happened.
Slash and text commands
/roles works as a slash command with autocomplete for both the panel and the roles. Set a prefix in the dashboard and the same command works as plain text.
Bulk grants from a voice channel
Give or remove roles for everyone currently in a voice channel, with a live progress message and a Cancel button. Premium only.
Escalation-proof by design
Nobody can hand out a role that sits at or above their own highest role — not even through a panel an admin configured. Bot and booster roles are refused too.
Setting it up
- Enable the module and pick a global log channel.
- Add the manager roles that should be able to use every panel.
- Create a panel, name it, and drop the roles it may hand out into its role list.
- Optionally give the panel its own manager roles and its own log channel.
Using the command
Every subcommand starts with the panel name, so the bot knows which role list it is working from.
/roles give <panel> <user> <roles...>
/roles remove <panel> <user> <roles...>
/roles giveall <panel> <voice channel> <roles...>
/roles removeall <panel> <voice channel> <roles...>
/roles cancelWith a prefix set, the same command works as text. Multi-word panel names can be typed without the spaces:
.roles give teamalpha @Someone @Moderator @HelperBulk grants
giveall and removeall always target a voice channel — there is no whole-server variant, which keeps every run bounded and predictable.
- Members are taken as a snapshot when the job starts, so anyone joining mid-run is not included.
- Members who already have the roles are skipped without an API call.
- A progress message updates every few seconds with a count, an ETA and a Cancel button.
- Only one bulk job runs per server at a time. Use /roles cancel if the progress message is gone.
Who can do what
Two levels of manager
Module manager roles can use every panel. A panel's own manager roles can use only that panel — use this to let one team manage their roles without touching anyone else's.
Discord's own hierarchy still applies
A role must sit below the invoker's highest role and below the bot's highest role. Server owners are exempt from the first rule, never the second.
Free vs premium
1 / 255 / 50Premium