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
| Buttons | Dropdown | Reactions | |
|---|---|---|---|
| How it looks | A row of labelled buttons under a message | One select menu | Emoji under a message |
| Clarity | Highest — the label says the role name | High, but hidden until opened | Lowest — you have to explain what each emoji means |
| How many roles | Up to 25 across five rows | Up to 25, in one compact control | Limited by how many reactions fit |
| Breaks if… | Nothing much | Nothing much | Someone clears reactions, or an emoji is deleted |
| Best for | Almost everything | Long lists — 10+ options | A deliberately retro look |
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
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.
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.
Put it near the top of the server
A
#roleschannel 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.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.
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.

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.
- 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
- 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:
| Symptom | Cause | Fix |
|---|---|---|
| Click does nothing, no error | The bot's role is below the role it is assigning | Drag the bot's role above every role it hands out |
| Works for some roles, not others | Same thing — the broken ones are above the bot | Same fix. Check every role in the panel, not just the first |
| Nothing happens for one specific role | It is a managed role — a bot or integration owns it | Managed roles cannot be assigned by anyone. Make a normal role instead |
| Reactions stopped working | Reactions were cleared, or a custom emoji was deleted | Re-post the panel — and consider moving to buttons |
| Members cannot see the channel | @everyone cannot View Channel there | The 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.
#000000means no colour to Discord, so a "black" role paints nothing at all. Use#010101if 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.