Permission System
ArcBot uses a multi-level permission system that combines native Discord permissions with its own per-server configuration.
Access Levels
1. Discord Administrator
Users with the Administrator permission on the server have full access to:
- The configuration panel (dashboard)
- Appointing/removing the president
- Managing alliances (creation, deletion)
- Scheduling events
- Approving/rejecting suggestions, creating polls, sending embeds (configuration role bypass)
Moderation commands (/ban, /kick, /mute, etc.) do not have an automatic bypass for administrators. The user must have a role from the moderation_roles list, even if they have the Administrator permission.
2. Moderation Roles (moderation_roles)
The central permission mechanism for most bot features. A list of roles configured in the Moderation module settings.
Commands requiring a moderation role:
/ban,/kick,/mute,/unmute/warn,/warnings/clear,/setnick/role add,/role remove
Other modules referencing moderation_roles:
- Suggestions — approving/rejecting suggestions (when
manage_permission = "moderation_roles") - Polls — creating polls (when
create_permission = "moderation_roles") - Message Builder — sending embeds (when
send_permission = "moderation_roles")
Dashboard → Your server → Edit Moderation → "Moderation Roles" section
Add roles that should serve as moderators. You can add multiple roles.
3. Per-module Permissions (Custom Roles)
Some modules allow configuring their own role lists, independent of moderation_roles:
| Module | Setting | Options |
|---|---|---|
| Suggestions | manage_permission | "moderation_roles" or "custom" + manage_roles |
| Polls | create_permission | "everyone", "moderation_roles", or "custom" + create_roles |
| Message Builder | send_permission | "moderation_roles" or "custom" + send_roles |
| Presidents | appoint_roles | List of roles that can appoint the president |
| Alliances | management_roles | List of roles that can manage alliances |
4. Alliance Ranks (R1–R5)
Internal system of the Alliances module:
| Rank | Permissions |
|---|---|
| R5 (Leader) | Everything: promote, demote, invite, kick, transfer |
| R4 (Officer) | Invite, kick (only R1–R3) |
| R3 | No management permissions |
| R2 | No management permissions |
| R1 | No management permissions |
5. President
The current server president (Presidents module) has additional permissions:
- Issuing decrees (
/president decree) - Managing armory slots (
/armory assign,/armory clear)
Dashboard Access
Who can use the dashboard?
- Discord Administrators — automatic access
- Dashboard Users — users manually added to the list
Configuring Dashboard Users
In the server settings (Settings tile) there is a Dashboard Users section. It allows granting access to the configuration panel to people without the Administrator permission.
Use this feature to give trusted moderators access to the dashboard without granting them full administrator permissions on the Discord server.
Dashboard Users have full access to the bot configuration for the given server — they can enable/disable modules, change settings, etc. Only add trusted people.
Discord Role Hierarchy
The bot respects the Discord role hierarchy when performing moderation actions:
- A moderator cannot ban/kick/mute users with a higher role
- The bot cannot manage roles higher than its own role
- The bot cannot ban/kick/mute users with a role higher than the bot's role
Owner
├── Admin ← moderator CANNOT moderate Admin
├── [ArcBot] ← bot role — must be above managed roles
├── Moderator ← can moderate: Member
├── Member
└── @everyone
If the bot responds "Missing permission" despite correct configuration, check the bot role position in Server Settings → Roles. The bot's role must be higher than the roles it needs to manage.
Permission Verification — Flow
When a user invokes a command:
- Is the module enabled? → checks
enabled_cogs(@guild_cog_enableddecorator) - Does the user have a role from the list? → checks
moderation_rolesor custom roles - Does the role hierarchy allow it? → compares role positions (issuer vs target)
- Does the bot have Discord permissions? → checks
bot.guild_permissions
If any step fails, the user receives an ephemeral (visible only to them) message with the appropriate error.
Commands Without Restrictions
The following commands do not require special permissions (available to everyone):
/suggest— submitting suggestions (unless the server restricts it to roles)/poll— creating polls (whencreate_permission = "everyone")/setlang— setting language preferences/languages— list of available languages/alliance info— viewing alliance information/alliance list— alliance list/alliance leave— leaving an alliance/event list— list of upcoming events/president info— information about the current president/president history— president history