Reaction 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
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 roleEmoji- Emoji to showRoleID- 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 panelRequiredRoles- Member must have ALL these roles to use the panelresetReacts- 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 roleExcludedRoles- Cannot select if member has ANY of theseForbiddenRoles- Can only select if member has NONE of these
Quick Examples
ComponentsV2 (Modern UI)
ComponentsV2 provides a modern Discord UI experience with rich formatting and media support.
Basic ComponentsV2 Example
ComponentsV2 Structure:
Type: "container"- Main containerAccentColor- Hex color for the accent barType: "section"- Content sectionText.Content- Markdown-formatted contentAccessory.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
Edit
config/modules/roles.ymlAdd or modify panels under
ReactionRoles:Restart the bot completely
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
Best Practices
Use descriptive panel names (
ColorRolesnotPanel1)Set
MaxSelectionsfor exclusive role categoriesUse
RemoveRolesto prevent conflicting role combinationsAdd
RequiredRolesto panels for verified members onlyUse ComponentsV2 for modern, polished appearance
Use appropriate button styles (Primary/Success/Danger/Secondary)
Getting Role & Channel IDs
Enable Developer Mode in Discord:
User Settings → App Settings → Advanced → Developer Mode: ON
Get Role ID:
Server Settings → Roles → Right-click role → Copy ID
Get Channel ID:
Right-click channel → Copy ID
Last updated