When reaction roles stop working on Discord, the cause is almost always one of five things: the bot's role sits below the role it should give, the bot is missing Manage Roles or channel permissions, the reaction-role message was deleted or replaced, the message is set to a mode such as verify or unique that behaves differently from normal, or the bot is offline. On Carl-bot there is a new sixth cause: its docs set 5 October 2026 as the date prefix commands such as !rr make are fully disabled, so older setup guides that use them stop working.
The fixes below are based on Discord's developer and support documentation and Carl-bot's official docs. Start with the symptom table, then jump to the matching fix.
Find your symptom
| What you see | Most likely cause | Fix |
|---|---|---|
| Nothing happens for anyone | Bot's role is below the target role, or it lacks Manage Roles | Fix 1 and Fix 2 |
| The bot's emoji never appeared under the message | Bot lacks Add Reactions or Read Message History in that channel, or uses an emoji it cannot access | Fix 2 and Fix 5 |
| Your reaction vanishes right after you click | The message is in verify mode, which removes the reaction on purpose | Fix 4 |
| Reacting removes a role instead of adding it | The message is in reversed or drop mode | Fix 4 |
| You only get one role from the panel | The message is in unique or binding mode, or has a limit | Fix 4 |
| It works for some members but not others | A blacklist or whitelist, or the member has not accepted the server rules yet | Fix 4 and Fix 7 |
| It worked, then stopped after someone cleaned up the channel | The message was deleted or purged | Fix 3 |
!rr make or ?rr does nothing on Carl-bot | Carl-bot's prefix commands are disabled from 5 October 2026 | Fix 6 |
| Nothing works and the bot is grey in the member list | The bot is offline | Fix 8 |
Fix 1: Move the bot's role above the roles it gives
This is the most common cause. Discord's developer documentation states the rule plainly: "A bot can grant roles to other users that are of a lower position than its own highest role." Giving the bot Administrator does not change this, because the rule is about role position, not permissions.
- Open Server Settings > Roles.
- Find the bot's role (for Carl-bot, usually named "carl-bot").
- Drag it above every role your reaction-role panel hands out.
- Save, then test by removing and re-adding your reaction.
Carl-bot's FAQ says the same thing: "Just assign the bot a role that is higher than the highest role it has to assign." For a full walkthrough of role order, see why a Discord bot won't assign roles.
Also check the role itself. Some roles are managed by Discord or by an integration, such as the Server Booster role or another bot's own role. Those belong to that integration, so put a normal role you created on the panel instead.
Fix 2: Give the bot the permissions it needs
The bot needs Manage Roles server-wide. In the channel where the panel lives it also needs:
- View Channel, to see the message
- Read Message History, to work with a message that was posted earlier
- Add Reactions, to place its own emoji under the message
Channel permission overrides beat server-wide settings, so check the channel itself, not just the bot's role. A useful detail from Discord's documentation: Add Reactions "does not apply to reacting with an existing reaction on a message". That means you can deny Add Reactions to @everyone in a roles channel to keep stray emoji off the panel, and members can still click the reactions the bot already added. Just make sure the bot itself keeps the permission.
Carl-bot can also build a channel with sensible permissions for you with /reactionrole channel.
Fix 3: The message was deleted, reposted or purged
A reaction role is tied to one specific message. If that message is deleted, the bot has nothing to watch. Carl-bot's docs say "Deleted messages are also cleared from the database" and recommend pinning the reaction-role message "to make it immune to purging."
- If someone removed all the reactions but the message still exists, run
/reactionrole fix, which makes Carl-bot add the missing or cleared reactions again. - If you want the panel on a new message,
/reactionrole movemoves the reaction roles from one message to another. - If the message is gone, run
/reactionrole setupagain to rebuild it, then pin it.
Fix 4: The message mode is doing what it was set to do
Carl-bot gives every reaction-role message a type, and the default is normal. Several types are designed to behave in ways that look broken if you did not expect them. From Carl-bot's documentation:
| Type | What it does |
|---|---|
| Normal | React to get the role, remove the reaction to lose it |
| Unique | A member can hold only one role from the message at a time |
| Verify | Reactions only add roles, and the bot removes your reaction afterwards |
| Drop | Reactions only remove roles |
| Reversed | Reacting removes the role, unreacting adds it |
| Binding | Unique plus verify: one choice, ever |
| Lock | No roles are handed out at all |
| Limit | Members can pick up only a set number of roles from the message |
| Temp | Roles are removed after a set time (a premium command) |
Use /reactionrole show with the message ID to see how a message is configured, and /reactionrole normal with the message ID to reset it. Also check blacklists and whitelists: Carl-bot can stop members with certain roles from picking up roles from a message, or allow only members with certain roles.
Fix 5: The emoji comes from another server
A bot can only add a reaction with a custom emoji it can access. Carl-bot's docs note that emoji from other servers still work for reaction roles, but the bot cannot place them itself. /reactionrole fixforeign makes the bot react with them after you have reacted first. The simplest fix is to use standard emoji or emoji uploaded to your own server.
Fix 6: Carl-bot's prefix commands end on 5 October 2026
Carl-bot's documentation carries a notice: it is moving to slash commands, and "Standard prefix commands will be fully disabled" on 5 October 2026. The same notice says mention commands (for example @Carl-bot ban) keep working and tags are not affected. If you are following an older guide:
| Old prefix command | Slash command now |
|---|---|
!rr make | /reactionrole setup |
!rr add | /reactionrole add |
!rr unique | /reactionrole modify (choose unique) |
!rr fix | /reactionrole fix |
If Carl-bot's slash commands do not appear, Carl-bot says to make sure members have the Use Application Commands permission, and to re-invite the bot from its dashboard if that does not help.
Fix 7: The member has not finished joining
If your server uses Rules Screening, Discord's FAQ says new members must agree to the rules "before they can talk, react, or DM other members." A member who has not accepted the rules cannot use a reaction-role panel yet. Ask them to accept the rules, or use Discord's Onboarding for the first role choice instead (see below).
Fix 8: The bot is offline, or it is your own bot
If the bot shows as offline in the member list, nothing will work until it is back. Carl-bot's FAQ points to its status page at carl.gg/status.
If you run your own bot, there is one more cause. The discord.js guide explains that "Messages sent before your bot started are uncached unless you fetch them first", so reaction events on older messages are not emitted unless you enable partial structures for Message, Channel and Reaction, along with the Guild Message Reactions intent. This is a common reason a home-made reaction-role bot stops responding to an old panel after a restart.
Same rules for other bots
MEE6, Dyno, YAGPDB, PeakBot and every other bot face the same Discord rules: the bot's role must be above the role it gives, it needs Manage Roles, and it needs to see the channel. If your bot offers button or dropdown role menus, they avoid two emoji problems entirely, since there is no emoji to access and no reaction permission involved. Our comparison of reaction roles vs button roles covers when each is better, and the step-by-step reaction roles setup guide shows a clean setup from scratch.
PeakBot keeps reaction panels, auto roles on join and if/then role rules on one Roles page, and its troubleshooting page lists the same order of checks: is the feature switched on, is the bot's role above the role, does it have permission in that channel, and does the member have the permission the command needs.
A no-bot alternative: Onboarding questions
Community servers can let members pick roles without any bot. In Discord's Community Onboarding, you create Customization Questions and assign roles and channels to each answer. Members choose during joining, and can change their answers later in the Channels & Roles tab. Setting it up requires Manage Server and Manage Roles, or Administrator, and publishing it requires at least 7 default channels, 5 of which @everyone can view and send messages in. Because no reaction or bot is involved, the emoji, channel permission and deleted-message problems above do not apply.
FAQ
Why is Carl-bot not giving reaction roles even with Administrator?
Because role position decides it, not Administrator. Discord only lets a bot grant roles below its own highest role. Drag Carl-bot's role above the roles on your panel.
Why does my reaction disappear after I click it?
The message is probably in verify mode, which adds the role and then removes your reaction on purpose. Check whether the role was added before assuming it is broken.
Why did !rr make stop working?
Carl-bot's docs announced that standard prefix commands are fully disabled from 5 October 2026 as it moves to slash commands. Use /reactionrole setup instead.
How many reactions can one reaction-role message have?
Discord allows up to 20 different emoji reactions on one message; its API returns "Maximum number of reactions reached (20)" past that. If you need more roles, split them across two messages or use a dropdown menu.
Can I make reaction roles without a bot?
Yes, in Community servers. Discord's Onboarding lets members pick roles by answering Customization Questions, and they can change them later in Channels & Roles.
