# A Discord reaction role bot with buttons and a menu

> Let members pick their own roles with buttons and a menu. Ping roles switch on and off, and colour roles swap. A free Discord reaction role template, no code.

Source: https://buildcord.dev/templates/reaction-roles/
Updated: 2026-11-05
Publisher: Buildcord (https://buildcord.dev)

Post a role picker and members choose their own roles. Each button gives a role, and a second press takes it back. A menu of colours swaps one name colour for another. It runs on a slash command, buttons and a menu, so it works on the Free plan.

Plan: Free
Add it to a server: https://app.buildcord.dev/templates/reaction-roles

## What it does

1. A moderator runs /roles panel in the channel where members pick roles.
2. The bot posts the panel: four buttons for ping roles and a menu of name colours.
3. Pressing a button gives that role, or takes it away if the member has it already. Only they see the reply.
4. Picking a colour takes away any other colour role on the list and gives the new one. No colour takes it away.

## Commands

- `/roles panel`: Posts the role picker in the current channel. Needs the Manage Roles permission.

## Before you add it

- Roles named Announcements, Events, Giveaways and Game night, and Red, Orange, Yellow, Green, Blue and Purple for colours. Rename them to suit your server.
- The bot's role placed above all of them, so it's allowed to hand them out.

## What you can change

- Point a button at any role by changing its label and data, or add more buttons, up to 20.
- Change the menu's choices. Each choice's label is the role it gives, and the colourRoles variable lists them all.
- Edit the panel's text in the Embeds page.
- Keep a button for members with a certain role by adding a role check first.

## Questions

### Why buttons and not emoji reactions?

Buttons work without the bot staying connected to Discord, so the template runs on the Free plan, and they keep working however old the message is. Reacting with emoji is a server event, which needs the Paid plan.

### Can a member have more than one colour?

No. Picking a colour takes away every other role in the colourRoles variable first. The ping roles are separate, so members can have any of them at once.

Step-by-step guide: [How to make a Discord reaction role bot](https://buildcord.dev/guides/discord-reaction-roles/)
