Reaction roles
Users pick their own roles with a click
Reaction roles let users give themselves or remove roles — simply by clicking a button, reacting with an emoji, or selecting from a dropdown. This is ideal for interest roles, colour roles, ping options, or anything users should be able to choose freely.
Concepts: parts and messages
A reaction role configuration consists of one or more "parts". Each part is a group of role options with a shared message. Multiple parts can be published to a single Discord message.
A published message is the Discord message the bot posts in a channel. It contains the buttons or dropdown that users interact with.
Interaction types
| Type | Max. options | Description |
|---|---|---|
| Button | 25 (5 rows of 5) | Coloured buttons (Primary/Secondary/Success/Danger), optional emoji, label max. 80 characters |
| Emoji reaction | 20 | User reacts with an emoji to the message — classic reaction role style |
| Dropdown | 25 | Dropdown menu with label and optional description (max. 100 characters) |
Modes: standard vs. inverted
Standard: user clicks → role is assigned. Click again → role is removed.
Inverted: user has the role by default. Click → role is removed. Click again → role is restored.
In single mode (one dropdown or button group), a user can only hold one role from that group at a time. Selecting a new one automatically removes the previous.
In multi mode, users can combine any number of roles from the group.
Embed editor
Each part can have its own Embed message: title (max. 256 characters), description (max. 4,096 characters), colour, and up to 25 fields. The bot publishes this Embed together with the buttons/emojis as a single Discord message.
Publish flow
- Create a part: configure interaction type, mode (standard/inverted), and role options
- Design the Embed: enter title, description, and colour
- Select the target channel
- Click "Publish" — the bot posts the message
- After changes: click "Update" to have the bot edit the existing message (no new message is posted)
Limits
| Setting | Limit |
|---|---|
| Parts per server | 40 |
| Buttons per message | 25 (5×5 ActionRows) |
| Dropdown options | 25 |
| Emoji options | 20 |
| Button label | max. 80 characters |
Frequently asked questions
- What happens to existing reaction role messages if I re-invite the bot?
- The configuration is preserved. However, you need to manually re-link existing messages via "Update" for the bot to respond to clicks again.
- Can I apply reaction roles to messages I wrote myself?
- No, the bot can only manage messages it posted itself. Always publish via the publish flow in the dashboard.
- How do I prevent users from receiving a role they are not eligible for?
- Reaction roles have no prerequisite system. If you want to make roles available only to certain users, use Discord permissions to make the channel invisible to ineligible users.