Reaction Roles
Create and manage reaction role panels with button, dropdown, and emoji styles, full embed customization, and access control through the dashboard
Overview
Reaction roles let members assign roles to themselves by clicking buttons, selecting from dropdowns, or reacting with emojis on a panel message. Navigate to Left sidebar > Reaction Roles on your server dashboard to create and manage panels. Each panel is a standalone message with its own embed content, role options, UI style, and access control. You can create up to 20 panels per server, each with up to 25 role options.
Creating a Panel
Click the Create Panel button on the Reaction Roles dashboard page. Each panel has these basic settings:
name (text input, max 80 characters, default 'Reaction Role Panel'): A descriptive name for the panel, visible only on the dashboard for organization.
enabled (toggle, default on): Turn the panel on or off. When disabled, members cannot interact with the published message.
The panel is automatically assigned a unique panelId. All changes are saved to the database when you click Save.
name (text input, max 80 characters, default 'Reaction Role Panel'): A descriptive name for the panel, visible only on the dashboard for organization.
enabled (toggle, default on): Turn the panel on or off. When disabled, members cannot interact with the published message.
The panel is automatically assigned a unique panelId. All changes are saved to the database when you click Save.
Message Content
Configure what the panel message looks like in Discord. You can choose between plain text or a rich embed:
text (text input, max 2000 characters, default 'Select your roles below.'): Plain text content displayed above the embed.
Embed fields for rich formatting:
title (text input, max 256 characters): The embed title.
description (text area, max 4096 characters): The main embed body text.
color (color picker): The embed accent color shown on the left border.
author name (text input, max 256 characters): Author text displayed above the title.
author url (text input): A clickable link on the author name.
author icon (text input): URL for the small icon next to the author name.
thumbnail (text input): URL for a small image in the top-right corner of the embed.
image (text input): URL for a large image displayed below the description.
footer text (text input, max 2048 characters): Text shown at the bottom of the embed.
footer icon (text input): URL for the small icon next to the footer text.
timestamp (toggle): Show the current timestamp in the embed footer.
fields (up to 25): Custom fields with name (max 256 chars), value (max 1024 chars), and an inline toggle.
For advanced users, the advancedJson field accepts raw Discord message JSON for full control over the message payload.
text (text input, max 2000 characters, default 'Select your roles below.'): Plain text content displayed above the embed.
Embed fields for rich formatting:
title (text input, max 256 characters): The embed title.
description (text area, max 4096 characters): The main embed body text.
color (color picker): The embed accent color shown on the left border.
author name (text input, max 256 characters): Author text displayed above the title.
author url (text input): A clickable link on the author name.
author icon (text input): URL for the small icon next to the author name.
thumbnail (text input): URL for a small image in the top-right corner of the embed.
image (text input): URL for a large image displayed below the description.
footer text (text input, max 2048 characters): Text shown at the bottom of the embed.
footer icon (text input): URL for the small icon next to the footer text.
timestamp (toggle): Show the current timestamp in the embed footer.
fields (up to 25): Custom fields with name (max 256 chars), value (max 1024 chars), and an inline toggle.
For advanced users, the advancedJson field accepts raw Discord message JSON for full control over the message payload.
Role Options
Each panel can have up to 25 role options. Each option maps an emoji or label to a Discord role:
roleId (role picker, required): The role that will be assigned or removed when a member interacts with this option.
label (text input, max 80 characters, default 'Role'): The display text shown on the button or in the dropdown menu.
description (text input, max 100 characters): A short description shown in dropdown menus below the option label.
emoji (emoji picker): An emoji displayed on the button or next to the dropdown option. Supports both Unicode emojis and custom server emojis.
buttonStyle (select: primary, secondary, success, danger): The color of the button when using button UI. Primary is blue, secondary is gray, success is green, danger is red.
groupKey (text input, max 32 characters): An optional grouping key to organize options into logical groups.
Surface toggles control where each option appears:
button (toggle, default on): Show this option as a clickable button.
dropdown (toggle, default on): Include this option in the dropdown menu.
emoji (toggle, default off): Add this option as an emoji reaction on the message.
roleId (role picker, required): The role that will be assigned or removed when a member interacts with this option.
label (text input, max 80 characters, default 'Role'): The display text shown on the button or in the dropdown menu.
description (text input, max 100 characters): A short description shown in dropdown menus below the option label.
emoji (emoji picker): An emoji displayed on the button or next to the dropdown option. Supports both Unicode emojis and custom server emojis.
buttonStyle (select: primary, secondary, success, danger): The color of the button when using button UI. Primary is blue, secondary is gray, success is green, danger is red.
groupKey (text input, max 32 characters): An optional grouping key to organize options into logical groups.
Surface toggles control where each option appears:
button (toggle, default on): Show this option as a clickable button.
dropdown (toggle, default on): Include this option in the dropdown menu.
emoji (toggle, default off): Add this option as an emoji reaction on the message.
UI Configuration
Control which interaction styles are available on the panel. You can enable multiple styles simultaneously:
buttonEnabled (toggle, default on): Display role options as clickable buttons below the message. Buttons are the most common and visible interaction style.
dropdownEnabled (toggle, default off): Display a dropdown select menu. Members click the dropdown and choose one or more roles from the list.
Dropdown-specific settings:
menuCount (number, 1-3, default 1): How many dropdown menus to create. Use multiple menus if you have many options and want to split them into groups.
minValues (number, 0-25, default 1): Minimum number of roles a member must select.
maxValues (number, 1-25, default 1): Maximum number of roles a member can select at once.
placeholder (text input, max 150 characters, default 'Select your roles...'): The placeholder text shown in the dropdown before any selection.
emojiEnabled (toggle, default off): Add emoji reactions to the message. Members react with the corresponding emoji to receive the role.
buttonEnabled (toggle, default on): Display role options as clickable buttons below the message. Buttons are the most common and visible interaction style.
dropdownEnabled (toggle, default off): Display a dropdown select menu. Members click the dropdown and choose one or more roles from the list.
Dropdown-specific settings:
menuCount (number, 1-3, default 1): How many dropdown menus to create. Use multiple menus if you have many options and want to split them into groups.
minValues (number, 0-25, default 1): Minimum number of roles a member must select.
maxValues (number, 1-25, default 1): Maximum number of roles a member can select at once.
placeholder (text input, max 150 characters, default 'Select your roles...'): The placeholder text shown in the dropdown before any selection.
emojiEnabled (toggle, default off): Add emoji reactions to the message. Members react with the corresponding emoji to receive the role.
Access Control
Restrict which members can use the reaction role panel:
allowRoleIds (multi-role picker): Only members with at least one of these roles can interact with the panel. Leave empty to allow everyone.
denyRoleIds (multi-role picker): Members with any of these roles are blocked from using the panel, even if they match the allow list.
This is useful for creating role panels that are only available to certain member tiers, or for preventing staff from accidentally changing their own roles.
allowRoleIds (multi-role picker): Only members with at least one of these roles can interact with the panel. Leave empty to allow everyone.
denyRoleIds (multi-role picker): Members with any of these roles are blocked from using the panel, even if they match the allow list.
This is useful for creating role panels that are only available to certain member tiers, or for preventing staff from accidentally changing their own roles.
Publishing
After configuring your panel, publish it to a Discord channel so members can interact with it.
Publish mode (select: new or existing):
new: Send a new message to a selected channel. Choose the target channel from the channel picker, then click Publish. The bot creates the message with your configured embed, buttons, dropdowns, and emoji reactions.
existing: Attach the panel to an existing message. Enter the messageId of a message the bot has already sent. The bot will update that message with the panel content and components.
After publishing, the panel tracks the channelId and messageId. If you update the panel settings and save, you can republish to update the live message in Discord.
Publish mode (select: new or existing):
new: Send a new message to a selected channel. Choose the target channel from the channel picker, then click Publish. The bot creates the message with your configured embed, buttons, dropdowns, and emoji reactions.
existing: Attach the panel to an existing message. Enter the messageId of a message the bot has already sent. The bot will update that message with the panel content and components.
After publishing, the panel tracks the channelId and messageId. If you update the panel settings and save, you can republish to update the live message in Discord.
Unpublishing and Deleting
Unpublish removes the link between the panel and the Discord message. The message itself remains in the channel, but the bot stops tracking interactions on it. You can then republish to a different channel or message.
Deleting a panel permanently removes it from the dashboard and database. If the panel was published, the message remains in Discord but becomes non-functional. You should manually delete the message from the channel after deleting the panel.
To edit a panel, select it from the panel list on the dashboard, make your changes, and click Save. If the panel is published, republish to apply changes to the live message.
Deleting a panel permanently removes it from the dashboard and database. If the panel was published, the message remains in Discord but becomes non-functional. You should manually delete the message from the channel after deleting the panel.
To edit a panel, select it from the panel list on the dashboard, make your changes, and click Save. If the panel is published, republish to apply changes to the live message.
Limits
System limits for reaction role panels:
Maximum 20 panels per server.
Maximum 25 options per panel.
Maximum 3 dropdown menus per panel.
Maximum 10 embeds per message.
Panel name: 80 characters.
Option label: 80 characters.
Option description: 100 characters.
Dropdown placeholder: 150 characters.
Message text content: 2000 characters.
Group key: 32 characters.
These limits are enforced by the dashboard and API. Exceeding them will show a validation error.
Maximum 20 panels per server.
Maximum 25 options per panel.
Maximum 3 dropdown menus per panel.
Maximum 10 embeds per message.
Panel name: 80 characters.
Option label: 80 characters.
Option description: 100 characters.
Dropdown placeholder: 150 characters.
Message text content: 2000 characters.
Group key: 32 characters.
These limits are enforced by the dashboard and API. Exceeding them will show a validation error.
Tips
Use buttons for panels with 5 or fewer options — they are the most visible and easiest to interact with. Switch to dropdowns for panels with many options to keep the message compact. Combine buttons and dropdowns on the same panel to give members multiple ways to select roles. Use descriptive labels and descriptions for dropdown options so members understand what each role does. Set the embed color to match your server's theme for a polished look. Use the denyRoleIds field to prevent bots or staff from interacting with public role panels. Group related options using the groupKey field for better organization in complex panels.