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.

On this page

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

  1. Switch the system on

    Onboarding & Access → Reaction Roles.

  2. Start from a template or from scratch

    Templates cover the menus almost every server ends up building: notification pings, colors, continents, zodiac signs, interests and gaming platforms. Each comes with its message, its options and its roles' names already filled in (and, for Colors, the role colors).

  3. Choose the type

    Emoji (reactions), Button or Dropdown, the tabs at the top of Roles and options.

  4. Add options

    Each option has a label, an optional emoji and the roles it grants (a dropdown option also takes a description, a button a color). A template's roles show as new chips: Arclo creates them when you publish. Create a new role in the role picker makes one on the spot, with a name and color you choose.

  5. Design the message

    The same message editor as everything else.

  6. Publish

    Into a channel you pick, or a read-only #roles channel Arclo creates. Publishing again edits the existing message. The first publish opens a setup guide for that menu, and How does this setup work? on its card opens it again.

Roles created for you

Publishing matches each template role against your existing roles by name first (ignoring case), and only creates one if there is no match, so publishing twice never leaves you with two Red roles.

#roles
ArcloBOTToday at 10:00 AM

Pick your roles

Choose the roles you want from the options below. They're yours instantly, and you can change your picks at any time.

Nebula CollectiveToday at 10:00 AM

📢Announcements🎉Events🎬Livestreams🎮Game Nights
A button menu. The same options can be reactions or a dropdown instead.

Role modes

ModeReactionsButtons and dropdowns
ToggleReacting gives the role, and removing the reaction removes it.Clicking the button gives the role, and clicking it again removes it.
ReverseReacting 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 onlyReacting 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.

Four checks stand between a click and a role, in this order: refused roles, required roles, the cooldown, then the limit. On a button or dropdown menu every refusal is a private reply you can rewrite; on an emoji menu Arclo takes the reaction back. Every refusal is logged, with the reason.

Members with these roles are refused
Checked first, so a member holding one is turned away even if they also hold a required role. The escape hatch for muted and quarantined members. Up to 10 roles.
Members need one of these roles
At least one of them. The usual way to keep a menu behind verification. Up to 10 roles. Arclo only reads these two lists, so their roles may sit above its own, and a role can't be on both.
Wait between role changes
A cooldown per member per menu, up to 24 hours. It starts when a role change lands, so a refused click never extends it.
Most roles a member can hold from this message
Up to 25, and only with Allow multiple roles on (a single-choice menu already holds one, swapping it on each pick). Counted from the roles members actually have, not from a tally Arclo keeps, and re-picking a role they hold is never refused.
Roles picked up here expire after
Arclo takes the role back after a set time, up to 365 days; picking it up again starts the clock over. On an emoji menu the member's reaction comes off with it.
Per-option overrides
Each option can set its own expiry and its own cooldown. Permanent or No wait exempts that option from the menu's value.

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

On button and dropdown menus, 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, and each option can override them. An emoji menu has no replies: a reaction can't answer privately. 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.

#roles
ArcloBOTToday at 12:00 PM

arclo_outline_check Role Added!

You now have the selected role(s).

Only you can see thisDismiss message

Only the member who clicked sees a reply like this.

Placeholders available in them include {clicker} and {clicker_name} (whoever pressed), {missing_roles}, {role_limit}, {roles_held}, {cooldown_ends}, {expires} and {duration}.

Limits

Role messages per server

10

Options per message

15

Required or refused roles

10 each

Longest expiry

365 days

Longest cooldown

24 hours

Troubleshooting

Clicking does nothing.

Arclo's role must be above every role the menu hands out. Check the menu's required and refused roles, its cooldown and its limit too. A refusal is a private reply that only that member sees, and it is logged with the reason.

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.