Skip to main content

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)
Exception: moderation commands

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")
Configuration

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:

ModuleSettingOptions
Suggestionsmanage_permission"moderation_roles" or "custom" + manage_roles
Pollscreate_permission"everyone", "moderation_roles", or "custom" + create_roles
Message Buildersend_permission"moderation_roles" or "custom" + send_roles
Presidentsappoint_rolesList of roles that can appoint the president
Alliancesmanagement_rolesList of roles that can manage alliances

4. Alliance Ranks (R1–R5)

Internal system of the Alliances module:

RankPermissions
R5 (Leader)Everything: promote, demote, invite, kick, transfer
R4 (Officer)Invite, kick (only R1–R3)
R3No management permissions
R2No management permissions
R1No 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?

  1. Discord Administrators — automatic access
  2. 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.

tip

Use this feature to give trusted moderators access to the dashboard without granting them full administrator permissions on the Discord server.

warning

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
Common Issue

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:

  1. Is the module enabled? → checks enabled_cogs (@guild_cog_enabled decorator)
  2. Does the user have a role from the list? → checks moderation_roles or custom roles
  3. Does the role hierarchy allow it? → compares role positions (issuer vs target)
  4. 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 (when create_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