# Role menus

> Let members pick their own roles with reactions or buttons. Colours, pings, games, verification. No code.

A role menu is a message where members pick roles themselves. They react to an emoji, or click a button, and get the role.

Good for:

- Colour roles
- Ping roles, like "Event pings" or "News"
- Game or region roles
- A "Verify" button that unlocks the server

## What you need

- The bot in your server, with the **Manage Roles** permission.
- The roles you want to give, already made in **Server Settings → Roles**.
- A channel for the menu, for example `#roles`.

> **Most common problem:** The bot can only give roles that are **below** its own role. Open **Server Settings → Roles** and drag the bot's role above every role in your menu.

## Reactions or buttons?

| | Reaction roles | Button roles |
|---|---|---|
| Members | React with an emoji | Click a button |
| Looks | Emojis under the message | Buttons with labels and colours |
| Modes | Give, take away | Toggle, add only, remove only, unique, verify |
| Best for | Quick menus | Clear labels, "pick only one" menus, verification |

Both are on the same page. You pick the type when you create the menu.

## 1. Start a new menu

On the dashboard, open **Reaction Roles**, then press the create button. Pick **Reaction roles** or **Button roles**.

Fill in:

| Field | What to put |
|---|---|
| Name | A name only you see, for example `Colour roles` |
| Channel | Where the menu goes |

## 2. Write the message

Under **The message**, pick one:

- **Write a message.** The bot posts a new message. Type the text in **Message text**.
- **Use an existing message.** Pick a message that is already in the channel. Reaction roles only.

Example text:

```text
Pick your colour! React below.
❤️ Red   💙 Blue   💚 Green
```

## 3a. Add reactions

For **Reaction roles**, press **Add your first reaction**. For each row:

1. Pick an emoji.
2. In **Gives**, pick the roles the member gets.
3. In **Takes away**, pick roles to remove (optional).
4. Turn on **Take the roles back when the reaction is removed** if un-reacting should remove the role.

## 3b. Add buttons

For **Button roles**, press **Add button** under **Buttons**. For each button:

1. Type a **Label**, for example `Red team`.
2. Pick a **Colour** and an emoji.
3. Pick the **Behaviour**.
4. Pick **Roles to add** and **Roles to remove**.

| Behaviour | What a click does |
|---|---|
| Toggle | Click to get the roles. Click again to lose them. |
| Add only | Click to get the roles. Clicking again does nothing. |
| Remove only | Click to lose the roles. |
| Unique | Members keep only one role from this message. |
| Verify | Gives the roles once. They are never taken away. |

## 4. Save

Press the create button at the bottom. The bot posts the message and adds the reactions or buttons.

Later edits change the same message in Discord. Members keep the roles they have.

## 5. Test it

Go to the channel and react or click. Check your roles in your profile.

Nothing happened? Check the warning at the top of this page. Then check the bot can see the channel.

## Ideas

- **Verification gate.** Make a `Verified` role. Hide your channels from `@everyone` and show them to `Verified`. Add one **Verify** button.
- **One colour only.** Use **Unique**, so picking Blue removes Red.
- **Need logic?** For example "only level 5+ can pick this". Build buttons with code instead. See [Buttons and menus](https://ccbot.app/docs/concepts/buttons-and-menus).
