🎛️ Reaction Roles
Reaction roles let members pick their own roles from a message the agent posts — by adding an emoji reaction, clicking a button, or choosing from a dropdown menu. You design each message in the webapp, then publish it to a channel with a single action.
Overview
- Build reaction role messages (panels), each mapping emojis, buttons, or dropdown options to roles
- Three modes: Emoji reaction, Button (the default), and Dropdown
- Optional rich embed with a title, description, color, image, and thumbnail
- Two-step publishing: save the panel first, then post it to Discord
- Each panel shows its status — Draft, Posted, or Needs update
Configuration
To set up reaction roles:
- Open your project in the Fren One webapp.
- Select the Discord server you want to configure.
- In the sidebar under Agent Configuration, select Role Manager, then the Reaction Roles tab.
- Select "New Message" to create a panel, or Edit on an existing one.
Message basics
| Option | Description |
|---|---|
| Enabled | When off, the message stops handing out roles. Default: on. |
| Message name | A name for the panel. Required; default "Reaction Roles". |
| Mode | How members pick roles: Emoji reaction, Button (default), or Dropdown. |
| Dropdown placeholder | Dropdown mode only. The prompt shown in the closed dropdown. Default: "Choose your role". |
| Channel | Where the message is posted. Optional while drafting, but required before you can post. |
| Content | Text shown above the message, or as the plain message when the embed is off. |
| Reaction mode | Default or Reverse. Reverse swaps the action: reacting removes the role and removing the reaction adds it back. Applies to emoji mode only. |
| Allow multiple roles | Whether members can hold more than one role from this message. In dropdown mode this switches between single- and multi-select. Default: on. |
Role mappings
Each mapping is one role members can pick. Select "Add mapping" to add more.
| Option | Description |
|---|---|
| Role | The role to grant. Required for every mapping. |
| Label | The text shown on the button or dropdown option. Defaults to the role name. |
| Emoji | The emoji for this mapping — server custom emojis are supported. Required in emoji mode. |
| Button color | Button mode only. Blurple (default), Grey, Green, or Red. |
Rich embed
Toggle "Send as a rich embed" (default: on) to dress the message up as an embed:
| Option | Description |
|---|---|
| Embed title | Up to 256 characters. Default: "Reaction Roles". |
| Embed description | Up to 4,000 characters. |
| Embed color | The embed's accent color. |
| Embed image | A full-width image shown at the bottom of the embed. Recommended: 1920×1080. |
| Embed thumbnail | A square image, e.g. 512×512. |
Posting to Discord
Publishing is a deliberate two-step flow:
- Save the panel — panel edits are part of the page's batched save, so select Save in the bar at the bottom first.
- Select Post to Discord on the panel's row. The action is blocked while there are unsaved changes ("Save your changes first").
Each panel row shows its status:
- Draft — saved but not yet posted to a channel.
- Posted — live in Discord and handing out roles.
- Needs update — posted, but the saved configuration has changed since; select Re-post to Discord to update the Discord message.
A Disabled pill appears on panels whose Enabled toggle is off.
How it works in Discord
- Emoji mode uses classic reactions: the agent adds the mapped emojis to the message, and members add or remove a reaction to gain or lose the role. With Reaction mode set to Reverse, the behavior flips — reacting removes the role.
- Button mode renders the mappings as buttons in the chosen colors — up to 25 buttons per message.
- Dropdown mode shows a select menu with your placeholder text; Allow multiple roles controls whether it's single- or multi-select.
The agent's role must sit above every mapped role in your server's role list, or the grants will fail.
Saving your changes
This page is a hybrid: panel edits and deletions use the batched save — they stay local until you select Save in the bar at the bottom, and leaving with unsaved changes shows a warning — while Post to Discord is an immediate action, available only once everything is saved.
Best practices
- Use Button or Dropdown mode for long role lists — they're clearer than a wall of reactions, and dropdowns stay compact.
- Set custom Labels when role names are technical; the label is what members see.
- Turn Allow multiple roles off for mutually exclusive choices like a single team or region.
- After editing a posted panel, remember the second step: save, then Re-post to Discord — a Needs update status means Discord is still showing the old version.
Troubleshooting
The Post to Discord button is disabled?
- You have unsaved changes — select Save in the bar at the bottom first.
- A panel also needs a Channel before it can be posted.
Members click but don't get the role?
- Check the panel's Enabled toggle — when off, the message stops handing out roles.
- Check the agent's role is above every mapped role in the server's role list.
- In emoji mode with Reverse reaction mode, reacting removes the role instead of granting it.
I edited the panel but Discord shows the old message?
- The panel is in Needs update — save your changes, then select Re-post to Discord.
Related features
- ⏱️ Auto & Delayed Roles - grant baseline roles automatically instead of by choice
- 📦 Bulk Grants - assign a role to many members in one operation
- 📨 Embeds - the same rich-embed styling used across the agent's messages