What reaction roles are and why you'd use them
Reaction roles let server members click an emoji on a message to automatically join a role group. Instead of asking a moderator to assign roles manually, someone can react to a message that says "click πΎ to join the Gaming channel" and they instantly get that role. It cuts down on moderator work and lets people organize themselves into groups β gaming interests, pronouns, notification preferences, regional channels, or anything else you want to sort by.
The feature works because Discord bots watch for reactions on specific messages. When someone adds an emoji reaction, the bot reads which emoji it was, looks up what role that emoji is tied to, and assigns that role to the person who reacted. Remove the reaction and the bot removes the role.
You'll need a bot in your server that supports reaction roles. The most common free options are Carl-bot, Dyno, and UnbelievaBoat. Each works slightly differently, but the core idea is the same: you pick a message, link emojis to roles, and the bot handles the rest.
Key Takeaways
- Reaction roles require a Discord bot that supports the feature β Carl-bot, Dyno, and UnbelievaBoat are common free choices.
- You create the roles first in your server settings, then use the bot's command to link those roles to emojis on a specific message.
- The bot watches that message and automatically assigns or removes the role when someone reacts or unreacts with the linked emoji.
- You need permission to manage roles and the bot needs permission to manage roles in your server for this to work.
Setting up roles before you add reactions
Before you can link emojis to roles, the roles have to exist. Go to your server settings, click Roles in the left sidebar, and click the plus icon to create a new role. Give it a name β something like "Gaming" or "Pronouns: He/Him" β and decide if you want to give it any special permissions. For most self-assignment roles, you won't need to add permissions; the role is just a label that sorts people into groups or gives them access to specific channels.
Once the role exists, you can restrict channels so only people with that role can see them. Go to the channel settings, click Permissions, and add the role with view access. Now only people who reacted to get that role will see the channel.
Create all the roles you want to use before you set up the bot commands. This makes the next step faster and means you won't have to rebuild your reaction message halfway through.
Adding a bot that supports reaction roles
Visit the bot's website β for Carl-bot, that's carl.gg; for Dyno, it's dyno.gg; for UnbelievaBoat, it's unbelievaboat.com. Click the button to invite the bot to your server. Discord will ask you to pick which server and confirm permissions. The bot needs permission to manage roles and read message history.
Once the bot is in your server, it will usually send a welcome message or you can check the bot's documentation to see which command starts the reaction role setup. Different bots use different commands, so this step depends on which one you chose.
Make sure the bot's role is positioned higher than the roles you want it to assign. Go to Server Settings > Roles, find the bot's role in the list, and drag it above the roles you're assigning. If the bot's role is lower in the hierarchy, it won't have permission to assign those roles to people.
Creating a reaction role message with Carl-bot
Carl-bot is one of the most straightforward options. In the channel where you want the reaction message to appear, type the command c!rolemenu. The bot will ask you to pick a title and description for the message. You can say something like "React below to join a channel" or "Pick your pronouns."
Next, the bot will ask you to add role-emoji pairs. You type the emoji and the role name, and the bot links them. For example, you might type πΎ Gaming to link the Gaming Rooms emoji to the Gaming role. Keep adding pairs until you've covered all the roles you want to offer.
Once you finish, Carl-bot posts the message to the channel. People can now click the emojis and the bot will assign the roles. If someone clicks the wrong emoji, they can click it again to remove the role, or click a different emoji to switch groups.
Creating a reaction role message with Dyno
Dyno's process is similar but uses a different command. Type ?reaction-role in the channel where you want the message. Dyno will walk you through creating the message step by step, asking for the title, description, and then each role-emoji pair.
One difference with Dyno is that it can handle more complex setups β you can make roles mutually exclusive (so reacting to one emoji removes another), or set a maximum number of roles someone can have at once. For a basic setup, you don't need these features, but they're there if you want them.
After you finish the setup, Dyno posts the message and starts watching for reactions. The process is the same from the user's side: click an emoji, get the role.
Troubleshooting when reaction roles aren't working
If people react but don't get the role, the most common cause is that the bot's role is positioned too low in the role hierarchy. Go back to Server Settings > Roles and make sure the bot's role is above all the roles it's supposed to assign. Discord role hierarchy is strict β a bot can only assign roles that are lower than its own role.
The second common issue is that the bot doesn't have permission to manage roles. Go to Server Settings > Roles, find the bot's role, click it, and scroll down to Permissions. Make sure Manage Roles is toggled on. If it's off, the bot can't assign anything.
If the bot is in your server but doesn't respond to commands, it might be offline or the command syntax might be wrong. Check the bot's documentation to confirm the exact command β different bots use different prefixes and command names. If the bot is supposed to be online and still doesn't respond, try kicking it and re-inviting it.
Managing and updating reaction roles later
If you want to add a new role to an existing reaction message, most bots let you edit the message directly. With Carl-bot, you can use c!rolemenu edit and pick the message to modify. With Dyno, the process is similar β you can add or remove role-emoji pairs without deleting the whole message.
If you delete a role from your server, the bot won't be able to assign it anymore, but the emoji will still appear on the message. People who click it will get an error. It's cleaner to remove the emoji from the reaction message first, then delete the role.
You can also delete the reaction message itself if you no longer need it. The bot will stop watching it, and people who already have those roles will keep them β removing the message doesn't strip the roles away.
Frequently Asked Questions
Can I use custom emojis for reaction roles?
Yes. Custom emojis work the same way as standard emojis. The emoji just has to be in a server that the bot can see β usually your own server or a server the bot is in. If you use a custom emoji from a server the bot isn't in, the reaction won't work.
What happens if someone removes their reaction?
The bot removes the role automatically. If someone clicks the emoji to react, they get the role. If they click it again to remove the reaction, the bot takes the role away. This is how people can leave groups β they just unreact.
Can I make roles mutually exclusive so people can only pick one?
Some bots support this, but not all. Dyno has an option to make roles mutually exclusive during setup. Carl-bot's basic reaction role feature doesn't, but you can work around it by creating separate reaction messages for different groups. Check your bot's documentation for mutually exclusive options.
Do I need to pay for reaction roles?
The major bots that support reaction roles β Carl-bot, Dyno, and UnbelievaBoat β all offer the feature for free. Some bots have premium tiers with extra features, but basic reaction roles don't cost anything.
What if the bot leaves my server?
The reaction message stays, but the emojis stop working. If you re-invite the bot later, it should remember the setup and start watching the message again. If you switch to a different bot, you'll need to set up the reaction roles from scratch with the new bot's commands.