Skip to content
NeoBot Add to Discord

How to set up reaction roles on Discord

Updated 7 min read

A role picker is the point where a new member stops being anonymous and starts having a stake in the place. It is also five minutes of setup, which makes it one of the best returns available to anyone running a server.

Worth saying up front: "reaction roles" is the old name and it stuck. Reactions are now the worst of the three ways to do this, for reasons below — but everybody still searches for them, so that is what this is called.


Buttons, dropdowns, or reactions

ButtonsDropdownReactions
How it looksA row of labelled buttons under a messageOne select menuEmoji under a message
ClarityHighest — the label says the role nameHigh, but hidden until openedLowest — you have to explain what each emoji means
How many rolesUp to 25 across five rowsUp to 25, in one compact controlLimited by how many reactions fit
Breaks if…Nothing muchNothing muchSomeone clears reactions, or an emoji is deleted
Best forAlmost everythingLong lists — 10+ optionsA deliberately retro look
Three mechanisms, one job. The default should be buttons.

Reactions have one real failure mode that the other two do not: the state lives on the message. If a moderator clears reactions, or a custom emoji gets deleted, or Discord has a hiccup, the panel silently stops working and nobody tells you. A button is a component — it either renders or it does not.


Setting one up

  1. Create the roles first

    Plain roles with no permissions. A self-assignable role that grants something is a permission anybody can take, which is a security problem wearing a cosmetic hat. Give each one a colour if you want it visible.

  2. Check the hierarchy

    The bot's own role must sit above every role it will hand out. This is the cause of essentially every "the panel does nothing" report — Discord refuses, the click appears to work, and nobody is told. Why.

  3. Put it near the top of the server

    A #roles channel above #general, locked so only the panel is in it. A picker people have to scroll to find is a picker most people never use — and the whole value is in what fraction of members actually pick.

  4. Write labels, not emoji

    "Valorant" beats a Valorant emoji that half your members will not recognise. Emoji next to a label is fine. Emoji instead of a label makes people guess.

  5. Decide the selection rule

    Can somebody hold several of these at once, or exactly one? Games: several. Colours and regions: one. Getting this wrong is what produces members wearing four colours and confused about which one is showing.

roles
NeoBotAPPToday at 9:04 PM
Pick what you play
You will only get pinged for the games you choose. Click again to remove one.
Pick as many as you like
ValorantMinecraftStardewHelldivers
One message, one purpose, labels that say what they do.

Which roles to offer

The best test is whether the role changes something for the person picking it. Roles that change nothing are decoration — fine to have, but put the functional ones first, because attention runs out.

Change nothing
  • Thirty colour options at the top of the list
  • @Cool Person, @Certified Gamer, and other jokes
  • A role for every game anybody has ever mentioned
  • Roles that duplicate what level rewards already give
Change something
  • Game roles that get pinged when a session starts
  • Region or timezone, so people know when you are around
  • @Announcements / @Events — opt in to being pinged
  • Access to an opt-in channel — spoilers, NSFW, off-topic

Ping roles are the underrated one

A role whose entire purpose is "ping me about this" solves the biggest tension in running a server: you want people to know about things, and people hate being pinged about things they do not care about.

With opt-in ping roles you can announce loudly and specifically without training anyone to mute the server. @everyone for something most members do not care about is the single fastest way to make your announcements invisible.


How many is too many

A picker with forty options is a form. People close forms. The practical limits:

  • Buttons: up to five per row, five rows — 25 total. Past about twelve it starts looking like a control panel.
  • Dropdown: 25 options, but the reader only sees a few at a time. Good for long lists precisely because it hides them until asked.
  • Several panels beats one huge one. One message per category — games, pings, regions — each with its own heading, is far easier to scan than a wall of thirty buttons.

If you genuinely have forty roles, the question is whether all forty are earning their place. Usually about ten are doing the work.


When it does not work

In order of how often each one is the cause:

SymptomCauseFix
Click does nothing, no errorThe bot's role is below the role it is assigningDrag the bot's role above every role it hands out
Works for some roles, not othersSame thing — the broken ones are above the botSame fix. Check every role in the panel, not just the first
Nothing happens for one specific roleIt is a managed role — a bot or integration owns itManaged roles cannot be assigned by anyone. Make a normal role instead
Reactions stopped workingReactions were cleared, or a custom emoji was deletedRe-post the panel — and consider moving to buttons
Members cannot see the channel@everyone cannot View Channel thereThe picker channel has to be visible to new members. That is its whole job

Colour roles

The most requested kind, and the one with a wrinkle worth knowing before you make twelve of them.

Discord paints a name using the member's highest coloured role. So a colour role created at the bottom of the list is invisible to anyone who already has any other coloured role — a level reward, a booster role, a staff role. Everything reports success and nothing changes, which looks exactly like the picker being broken.

  • Put colour roles above other coloured roles, but below anything meaningful.
  • Make the picker single-select. Holding three colours is meaningless — only the highest shows.
  • Avoid pure black. #000000 means no colour to Discord, so a "black" role paints nothing at all. Use #010101 if you want near-black.
  • Check them against dark mode. A very dark colour on the default theme is a name you cannot read.

Frequently asked

Why are my reaction roles not working?

Almost always role hierarchy: the bot's own role has to sit above every role it hands out, and Discord refuses silently when it does not. Second most common is a managed role — one owned by another bot or by a Discord integration — which nobody can assign.

Are buttons better than reactions for roles?

Yes, in almost every case. A button carries a text label so nobody has to guess what an emoji means, and its state cannot be broken by someone clearing reactions or deleting an emoji. Reactions are worth choosing for the look, not by default.

Can a member have more than one self-assigned role?

That is up to the panel. Games and interests should allow several; colours and regions should be single-select, because only one can meaningfully apply at a time. Colours especially — Discord only ever shows the highest one.

Where should the role picker channel go?

Near the top of the sidebar, above the main chat, locked so the only thing in it is the panel. The metric that matters is what fraction of members actually pick something, and that drops sharply the further down the channel sits.

Should self-assignable roles have permissions?

No. Anything a member can give themselves in one click should grant nothing. The exception people reach for is access to an opt-in channel, which is fine — that is a channel overwrite, not a server permission, and it is the one safe case.

What happens to the roles if I delete the panel message?

Nothing — the roles people already have stay. They just lose the way to change them, so post a replacement panel before deleting the old one if you are rebuilding it.


Next

Once people are picking roles, the roles can drive things — a welcome DM when somebody takes a role, a ping when a session starts for exactly the people who opted in. Automating a Discord server covers that.

Everything here, without the wiring

NeoBot does the parts of this guide that are repetitive — greeting people, handing out roles, catching spam, keeping a log. It is free for what it costs us nothing to run, and there is a page that says exactly which parts those are.