Reaction Roles
Self-serve role menus as reactions, buttons or dropdowns — with roles Arclo can create for you, rules about who may take what, and roles that expire.
A role menu is a message members click to give themselves roles. Reaction Roles is the Verify System's sibling: the same builder, the same three interaction types, the same live preview — pointed at self-service instead of a gate.
Building a menu
Switch the system on
Onboarding & Access → Reaction Roles.
Start from a template or from scratch
Templates cover the menus almost every server ends up building — pronouns, colors, notification pings, platforms, continents, zodiac. They come with their roles' names and colors already filled in.
Choose the type
Reactions, buttons or a dropdown.
Add options
Each option has a label, an optional emoji and the roles it grants. Name a role that does not exist yet and Arclo creates it — with the color from the template — when you publish.
Design the message
The same message editor as everything else.
Publish
Into a channel you pick, or a
#roleschannel Arclo creates. Publishing again edits the existing message.
Roles created for you
Publishing matches each named role against your existing roles first, and only creates one if there is no match — so publishing twice never leaves you with two He/Him roles.
ArcloBOTToday at 14:32
Notification roles
Role modes
| Mode | Reactions | Buttons and dropdowns |
|---|---|---|
| Toggle | Reacting gives the role, and removing the reaction removes it. | Clicking the button gives the role, and clicking it again removes it. |
| Reverse | Reacting removes the role (if the member has it), and removing the reaction gives it back. | Clicking the button removes the role if the member has it — clicking it again gives it back. |
| Grant only | Reacting gives the role permanently — it can't be removed through this message. | Clicking the button gives the role permanently — it can't be removed through this message. |
New role menus default to Toggle; new verification panels default to Grant only.
Menu rules
Four rules a menu can enforce, checked in this order. Every refusal is a private message you can rewrite.
- Blocked roles
- Members holding one of these cannot use the menu at all. Checked first.
- Required roles
- Members must hold at least one of these. The usual way to keep a menu behind verification.
- Cooldown
- A wait between uses, per member per menu. A refused click never extends it.
- Maximum roles
- How many of this menu's roles one member may hold at once — counted from the roles they actually have, not from a tally Arclo keeps.
- Duration
- Roles from this menu come off after a set time. Overridable per option: blank inherits the menu's value, zero means permanent.
On an emoji menu, a refusal removes the reaction
Otherwise the message would show a member's reaction on a role they were not given, which is a worse lie than a refusal.
Replies
Every outcome — role given, role removed, temporarily granted, already have it, limit reached, on cooldown, missing a required role, blocked, something went wrong — is a private message you can edit. The editor only shows the ones that particular menu can actually produce: a grant-only menu has no role removed reply, and the four refusals appear only once you have set the rule that causes them.
ArcloBOTToday at 14:32
Role added
Only you can see this · Dismiss message
Placeholders available in them include {roles}, {limit}, {held}, {retry}, {expires} and {duration}.
Troubleshooting
Clicking does nothing.
Arclo's role must be above every role the menu hands out. Check the menu's blocked/required roles too — a refusal is a private reply that only that member sees.
The reaction is added and then removed again.
That is a refusal: a rule blocked the grant, and Arclo takes the reaction back so the message does not misrepresent what happened.
A member kept the role after I deleted the menu.
Deleting a menu does not strip the roles it gave. Roles granted with a duration still expire on schedule.
Still stuck? Ask in the support server — somebody there has almost certainly configured this before.

