Plugins

Reaction Roles

Self-service roles from a panel — emoji-to-role bindings, exclusive mode, custom feedback and the 20-reaction limit.

Members pick their own roles from a panel you design in the dashboard. Cloudy posts the message, builds the dropdown, seeds the reactions and keeps the roles in sync.

LicenseFree — no premium needed
NeedsManage Roles, Add Reactions, and Cloudy's role above every bound role

Panels

Up to 25 panels per server.

Panel name

1–40 characters · required

Also used as the embed title unless you set one in the embed builder. Internal-ish, but members do see it — call it Colours, not rr-panel-3.

Channel

Required · fixed after creation

Where the bot posts the panel message. To move a panel, delete it and create a new one.

Exclusive mode

True/false · default false

When on, a member can hold only one role from this panel. Picking a new one removes the previous role and its reaction.

Use for
OffInterests, ping opt-ins, game roles — pick as many as you like
OnColours, regions, pronoun-style single choices
Split your roles across panels by kind. One exclusive panel for colour, one non-exclusive panel for interests, rather than one giant mixed panel.

Roles & emojis

1–20 pairs · required

Each binding is an emoji, a role, and an optional label.

PartRules
EmojiA unicode emoji (😄) or a custom one. For custom emojis paste the emoji itself or use <:name:id> / <a:name:id> for animated
RoleAny role below Cloudy's own highest role
LabelOptional, up to 100 characters — the text shown next to the option

20 is Discord's hard limit on distinct reactions per message, not a Cloudy choice. Need more? Create a second panel.

Two rules the editor enforces:

  • Each emoji may appear only once per panel.
  • Each role may be bound to only one emoji per panel.
Custom emojis must come from a server Cloudy is in — usually this one. An emoji from a server the bot cannot see is accepted by the editor but cannot be rendered as a reaction by Discord.

Custom feedback texts

Up to 300 characters each · optional

Shown as an ephemeral reply that only the member who clicked can see. Empty uses the built-in default in your server's language.

PlaceholderBecomes
{user}The member
{role}The role that was granted or removed
You now have {role}!
You gave {role} back.
These apply to single changes. When several roles change at once, Discord gets a summary instead.

Designing the panel

The panel body is a full embed — use the embed builder for a title, description, colour and image. Members need to understand what they are picking; a bare list of emoji is not self-explanatory.

Behaviour notes

  • The bot posts a new panel and seeds its reactions within about 30 seconds (posting… badge).
  • Saving an edit re-renders the message and re-syncs the reactions: removed bindings lose their reaction, new ones are added.
  • Deleting a panel removes the Discord message and all its bindings. Roles members already hold are not taken away.
  • Members who react while the bot is briefly offline are reconciled on the next sync.

The one thing that goes wrong

Nine times out of ten, "clicking does nothing" is the role hierarchy:

Cloudy can only assign roles that sit below its own highest role.

Open Server Settings → Roles and drag Cloudy's role above every role your panels hand out. Discord returns a generic permission error here that the bot cannot translate into anything more helpful.