Reaction roles let Discord members give themselves a role by clicking an emoji under a message, and lose it again by removing the reaction. A bot watches that message and changes the roles for you, so staff never have to hand them out. Discord has no reaction role feature of its own, so you need a bot. This guide sets one up with Noxyr, which also offers buttons and a dropdown for the same job.
What reaction roles are for
Most servers use them for things members should choose themselves:
- Pings: an Announcements or Events role, so only people who want the ping get it.
- Interests: a Gamer or Artist role that opens the channels for that topic.
- Region or language: one role per member, so a pick replaces the old one.
- Colours: a role that only changes a name colour.
Reactions, buttons or a dropdown?
All three do the same thing. Pick by how the panel should feel:
- Reactions are the classic look. They show how many people picked each option, but members get no reply, so a failed role change is invisible to them.
- Buttons are the clearest. Each one has a label, and the member gets a private message saying what changed.
- A dropdown stays tidy with a long list, and it keeps the channel short on phones.
How to set up reaction roles
- Add the bot. Add Noxyr to your server. It is free.
- Move its role up. In Server Settings, then Roles, drag the bot's role above every role members can pick. A bot can only give roles below its own.
- Create the panel. Open the dashboard, go to Greetings, then Reaction roles. Or run
/reactionrole createin Discord and pick the style and first role. - Add your roles. A panel holds up to 20. Reaction panels need one emoji per role. On the dashboard, add them all at once; in Discord, use
/reactionrole add. - Post it. On a reaction panel the bot adds every emoji for you, so members only have to click.
- Test it. Click an option with a normal account, then click again to check the role goes away.
Letting members hold only one role
Turn on One role only for choices that rule each other out, such as a region or a colour. Picking a new role removes the old one, and on a reaction panel the old reaction is removed too. In Discord, set single to true in /reactionrole create.
Keep moderation roles out of the panel
Anything on a role panel can be taken by anyone who can see it, so a role with Ban Members or Manage Messages must never be on one. Noxyr refuses those roles when you save, and checks again each time someone picks a role. If a role gains a moderation permission later, it stops being handed out.
Fixing reaction roles that do not work
- Nothing happens: the bot's role is below the role it should give, or it lacks Manage Roles.
- Emojis are missing from the message: the bot needs Add Reactions and Read Message History in that channel.
- A custom emoji is refused: it must be uploaded to your own server.
- A role is not in the dashboard list: it is above the bot, managed by an integration, or has a moderation permission.
Every option is covered in the reaction roles docs. For roles that everyone should get, use auto role or verification instead.