face-smirkingReaction Roles

A comprehensive guide to setting up and configuring reaction role panels in DrakoBot.

Overview

Reaction roles allow members to self-assign roles by clicking buttons, selecting from dropdowns, or reacting with emojis. DrakoBot supports three panel types with advanced features like role limits, conditions, and auto-granting.


Configuration Location

Edit the reaction roles in: config/modules/roles.yml

All panels go under the ReactionRoles: section.


Panel Types

Type
Description
Best For

BUTTON

Interactive buttons below the message

2-5 roles, clean look

SELECT

Dropdown menu

5+ roles, saves space

REACT

Traditional emoji reactions

Simple setups, legacy style


Basic Setup

Minimal Configuration

Required Fields:

  • type - Panel type (BUTTON, SELECT, or REACT)

  • ChannelID - Where to post the panel (supports arrays for multi-guild)

  • Reactions - Array of role configurations

Per-Reaction Fields:

  • Name - Display name for the role

  • Emoji - Emoji to show

  • RoleID - Role ID to assign (supports arrays for multi-guild)

  • RemoveRoles - Roles to remove when this is selected (optional)

Button Styles: Primary (blue), Success (green), Danger (red), Secondary (gray)


Advanced Features

Panel-Level Options

Options:

  • MaxSelections - Limit how many roles can be selected from this panel

  • RequiredRoles - Member must have ALL these roles to use the panel

  • resetReacts - Remove user's reaction after clicking (REACT type only)

  • UseComponentsV2 - Enable modern Discord UI components

Per-Role Advanced Options

  • RemoveRoles - Automatically removes these roles when selected (e.g., remove "Blue" when selecting "Red")

  • GrantRoles - Automatically grants additional roles (e.g., give "Has Color Role" category separator)

Conditions:

  • RequiredRoles - Must have ALL of these to select this role

  • ExcludedRoles - Cannot select if member has ANY of these

  • ForbiddenRoles - Can only select if member has NONE of these


Quick Examples

1

Simple Notification Roles (Buttons)

2

Color Roles with Limits (Select Menu)

3

Pronoun Roles (Buttons)

4

Gaming Roles with Auto-Grant (Select)

5

VIP Roles with Requirements (Buttons)

6

Region Selection (Reactions)


ComponentsV2 (Modern UI)

ComponentsV2 provides a modern Discord UI experience with rich formatting and media support.

Basic ComponentsV2 Example

ComponentsV2 Structure:

  • Type: "container" - Main container

  • AccentColor - Hex color for the accent bar

  • Type: "section" - Content section

  • Text.Content - Markdown-formatted content

  • Accessory.Type: "thumbnail" - Optional thumbnail image


Multi-Guild Support

All ID fields support arrays for multi-guild setups:

The bot will match the channel ID's index with the role ID's index (first channel uses first role, second channel uses second role).


How to Deploy Panels

  1. Edit config/modules/roles.yml

  2. Add or modify panels under ReactionRoles:

  3. Restart the bot completely

  4. Panels will automatically appear in their configured channels

Note: Any time you edit a panel configuration, you must restart the bot for changes to take effect.


Troubleshooting

chevron-rightโŒ Buttons/Reactions Not Workinghashtag

Check:

  • ReactionRoles.Enabled: true is set

  • Bot has Manage Roles permission

  • Bot's highest role is above all roles being assigned

  • Member meets panel's RequiredRoles (if set)

  • Member meets reaction's Conditions (if set)

chevron-rightโŒ Panel Not Appearinghashtag

Solutions:

  • Verify ChannelID is correct (right-click channel โ†’ Copy ID)

  • Ensure Developer Mode is enabled in Discord settings

  • Restart the bot completely

  • Check bot has Send Messages and Embed Links permissions in channel

chevron-rightโŒ Roles Not Being Assignedhashtag

Check:

  • Replace all ROLE_ID placeholders with actual role IDs

  • Bot's role is higher in the role hierarchy than assigned roles

  • Bot has Manage Roles permission

  • Roles aren't marked as "managed" (bot roles, booster roles can't be assigned)

chevron-rightโŒ "Max Selections Reached" Errorhashtag

Solution:

  • Remove some roles first, then add new ones

  • Or increase MaxSelections value

chevron-rightโŒ "Missing Required Roles" Errorhashtag

Check:

  • Member has all roles listed in panel's RequiredRoles

  • Member has all roles listed in reaction's Conditions.RequiredRoles

chevron-rightโŒ "Excluded By Role" Errorhashtag

Solution:

  • Member has a role in ExcludedRoles or ForbiddenRoles

  • Remove the conflicting role first

chevron-rightโŒ Multiple Panels Interferinghashtag

Solution:

  • Each panel must have a unique name (e.g., Panel1, Panel2, not both named Roles)

  • Use descriptive names like ColorRoles, NotificationRoles, GamingRoles

chevron-rightโŒ Panel Posted in Wrong Channelhashtag

Solutions:

  • Double-check ChannelID value

  • For multi-guild: ensure channel IDs are in correct order matching role IDs

  • Delete old panel messages manually if needed


Best Practices

  • Use descriptive panel names (ColorRoles not Panel1)

  • Set MaxSelections for exclusive role categories

  • Use RemoveRoles to prevent conflicting role combinations

  • Add RequiredRoles to panels for verified members only

  • Use ComponentsV2 for modern, polished appearance

  • Use appropriate button styles (Primary/Success/Danger/Secondary)


Getting Role & Channel IDs

  1. Enable Developer Mode in Discord:

    • User Settings โ†’ App Settings โ†’ Advanced โ†’ Developer Mode: ON

  2. Get Role ID:

    • Server Settings โ†’ Roles โ†’ Right-click role โ†’ Copy ID

  3. Get Channel ID:

    • Right-click channel โ†’ Copy ID

Last updated