Guide · Role menus

How to add reaction roles and self-roles on Discord

Build self-role menus with buttons, a dropdown or classic emoji reactions — color roles, game pings, regions — plus modes, limits, requirements and fixes.

Role menusLevelsVerification

On this page

Reaction roles let members give themselves roles by clicking something in a message: an emoji under a post, a button or a dropdown. It is the easiest way to let people choose their games, regions, pronouns, name colors or which announcements they want to be pinged for — without asking a moderator. This guide explains how reaction roles work on Discord, which style to pick, and how to set them up step by step with BotGG’s Role menus.

What you need

  • A server where you have Manage Server (to use the console) and BotGG added to it (https://discord.com/oauth2/authorize?client_id=1553367772451446804&scope=bot%20applications.commands&permissions=282969912110295).
  • The roles you want to hand out. Create them first in Server Settings → Roles — the menu only picks existing roles.
  • The web console at https://console.botgg.app. Role menus are free: the free plan includes 3 menus per server, Pro raises that to 50.

Does Discord have reaction roles built in?

Partly. On a Community server, Onboarding can ask new members questions (“Which games do you play?”) and give roles based on the answers, and members can revisit their answers under Channels & Roles. That is a good start, but it lives in a separate screen, can’t limit members to one choice in a set of colors, can’t require another role or a level, and doesn’t give you a role panel in a channel.

A self-roles bot fills the gap: it posts a message in your #roles channel and gives or removes roles the moment someone clicks.

Buttons, select menus or reactions?

“Reaction roles” has become the generic name, but there are three ways to build them today. BotGG supports all three, and you can switch a menu’s style at any time.

StyleHow members pickRoles per menuBest for
ButtonsClick a colored button with a label and emojiUp to 25 (5 rows of 5)A handful of roles people toggle often: game pings, event notifications
Select menuOpen a dropdown and tick options, each with a descriptionUp to 25Long lists: regions, languages, games, pronouns
ReactionsReact with an emoji under the messageUp to 20 (Discord’s per-message limit)Communities used to classic reaction roles

Why most servers now prefer buttons or select menus:

  • Instant private feedback. The member gets an ephemeral reply like “Added: @Valorant · Removed: @Apex” that only they see.
  • No reaction counts to manage. Reaction menus depend on emoji counts under the message; buttons and menus don’t.
  • Labels and descriptions. A button can say “EU West” instead of relying on everyone knowing what 🇪🇺 means.

Reactions still work fine, though — BotGG adds the emojis under the message itself, and you can have it send the result to the member by DM since reactions can’t answer privately.

Step 1: Put the bot’s role in the right place

This step causes nine out of ten “reaction roles not working” reports. Discord only lets a bot give roles that are below its own highest role.

  1. Open Server Settings → Roles.
  2. Drag the BotGG role above every role you want to hand out through menus.
  3. Make sure BotGG has the Manage Roles permission.

You can’t hand out managed roles (other bots’ roles, the Server Booster role) through a menu at all — Discord controls those.

Step 2: Create a menu and write the message

Open https://console.botgg.app, choose your server, enable Role menus and click New menu.

  1. Name — an internal name you’ll recognize later (“Game pings”, “Colors”).
  2. Channel — where the menu is posted, usually a read-only #roles or #get-roles channel.
  3. Message — the embed members see: title, description, color, image, thumbnail, footer and fields. Write one line per role explaining what it does (“🔔 Events — pinged for game nights”).

A sticky live preview on the side shows exactly how the message will look in Discord.

Step 3: Add roles and choose a style

Add up to 25 roles with the role picker. For each role you can set:

  • Emoji — a standard emoji or one of your server’s custom emojis. Required for reaction menus, optional otherwise.
  • Label — the text on the button or option. Leave it empty to use the role’s name.
  • Button color — blurple, grey, green or red (button menus).
  • Description — a short line under the option (select menus).

Then pick the style: Buttons, Select menu or Reactions. For select menus you can also set the placeholder text (“Pick your games…”) and how many options a member must or may pick at once.

Step 4: Choose a mode

The mode decides what a click does. This is where a role menu becomes more than “click for role”.

ModeWhat a click doesExample
ToggleGives the role, a second click removes itGame pings, notification roles
Only onePicking a role removes the other roles of this menuName colors, region, timezone
Add onlyGives the role but never removes itAn “I read the rules” role
Remove onlyOnly removes roles the member already hasOpting out of a ping role everyone got

You can also set a per-member limit — the maximum number of roles from this menu one member may hold (for example “pick up to 3 main games”). With Only one on a reaction menu, BotGG also removes the member’s previous reaction so the message stays consistent.

Step 5: Add requirements (optional)

Requirements are checked whenever a menu would give a role:

  • Required roles — the member must have any one, or all, of the listed roles. Use it to keep self-roles for verified members only.
  • Blocked roles — members with these roles can’t take roles from the menu (for example a “Muted” or “Restricted” role).
  • Minimum level — the member needs a certain level in BotGG Levels. Great for unlocking color roles or special channels for active members.

Members who don’t qualify get a clear private message explaining why, instead of a click that does nothing.

Step 6: Save, post and keep it in sync

Click Save. BotGG posts the menu in the chosen channel within seconds. From then on, the console is the source of truth:

  • Edit the menu and the message in Discord updates by itself.
  • Change the channel and the bot posts it in the new channel and deletes the old message.
  • Pause a menu to show its buttons greyed out while you rework roles.
  • Duplicate a menu to make a similar one quickly, and reorder menus in the list.

If someone deletes the message in Discord, BotGG doesn’t spam it back. Use Re-post in the console or the /rolemenu send command (Manage Roles) when you want it back, optionally in a different channel.

In the Settings tab of Role menus you can pick a log channel for every role change made through menus, and choose whether reaction menus DM the result and remove the member’s reaction after an add-only or remove-only action.

Ideas that work well

  • Color roles — an Only one menu with a select style and a minimum level. Place color roles high enough that their color shows (Discord uses the color of a member’s highest colored role).
  • Ping roles — a Toggle button menu: “Announcements”, “Events”, “Giveaways”, “Patch notes”. Mention those roles instead of @everyone.
  • Game or topic access — roles that unlock hidden categories through channel permissions. Members see only what they care about.
  • Regions and languages — a select menu with a description per option; pair it with Only one for timezones.
  • Rules acknowledgement — an Add only menu for small servers. For real protection against bots, use Verification with a captcha instead.

Troubleshooting

ProblemCauseFix
“I can’t manage this role”The role is above BotGG’s highest roleMove BotGG’s role higher in Server Settings → Roles
Nothing happens on a reactionThe emoji in Discord doesn’t match the one in the menu, or the custom emoji was deletedPick the emoji again in the console and save
The menu disappearedSomeone deleted the messageClick Re-post or run /rolemenu send
Members can’t take a roleA requirement isn’t met or a blocked role appliesCheck the menu’s requirements; the member’s private reply says which
Color doesn’t showA higher role with a color overrides itMove color roles above other colored roles
Can’t add more rolesButtons and menus hold up to 25, reactions 20Split the roles into two menus

FAQ

What is the difference between reaction roles and self roles?

Nothing, really — both mean members assign roles to themselves. “Reaction roles” originally meant emoji reactions; today the same thing is usually built with buttons or select menus.

How many reaction roles can one message have?

Discord allows 20 different reactions per message, so a reaction menu holds up to 20 roles. Button and select menus hold up to 25 roles each, and you can post several menus.

Can members remove their own roles?

Yes. In Toggle mode a second click removes the role; select menus remove roles a member unticks. Add only menus never remove, Remove only menus never add.

Are reaction roles free?

Yes. Role menus are part of the free plan with 3 menus per server; Pro raises the limit to 50 menus.

Ready to level up your server?

Add BotGG for free, then switch features on in the web console.