How it works
Create a menu
Run
/reactionrole create with a title and optional description. The bot posts an embed in the target channel and saves the menu to the database.Add emoji mappings
Run
/reactionrole add with the menu message ID, an emoji, and a role. The bot adds the mapping to the database, updates the embed, and reacts to the message with that emoji.Emoji support
Both Unicode emoji and custom server emoji are supported.| Emoji type | Input format | Stored as |
|---|---|---|
| Unicode | ⭐ | ⭐ (literal character) |
| Custom (static) | <:name:id> | <:name:id> |
| Custom (animated) | <a:name:id> | <a:name:id> |
/reactionrole add, pass the emoji exactly as it appears in Discord. For custom emoji, Discord renders them as <:name:id> in slash command inputs.
The bot must be a member of the server that owns a custom emoji to react with it. If you use an emoji from another server, reactions may fail silently.
Commands
/reactionrole create
/reactionrole create
Posts a new reaction-role menu embed in a channel.
After creating, the bot replies with the new message ID. Copy it — you need it for
| Option | Required | Description |
|---|---|---|
title | Yes | Title shown on the embed |
channel | No | Channel to post in (defaults to current channel) |
description | No | Optional text shown above the role list |
/reactionrole add.Requires Manage Roles permission./reactionrole add
/reactionrole add
Adds an emoji-to-role mapping to an existing menu.
The bot validates that:
| Option | Required | Description |
|---|---|---|
message_id | Yes | ID of the menu message |
emoji | Yes | Emoji to map |
role | Yes | Role to grant |
- The menu message exists in the database
- The menu belongs to this server
- The bot’s role is above the target role in the hierarchy
- Your role is above the target role in the hierarchy
/reactionrole remove
/reactionrole remove
Removes an emoji mapping from a menu.
The bot removes the mapping from the database, refreshes the embed, and clears its own reaction from the message.
| Option | Required | Description |
|---|---|---|
message_id | Yes | ID of the menu message |
emoji | Yes | Emoji mapping to remove |
/reactionrole delete
/reactionrole delete
Deletes an entire reaction-role menu. All emoji mappings are deleted (cascaded from the database). The bot also attempts to delete the Discord message.
| Option | Required | Description |
|---|---|---|
message_id | Yes | ID of the menu message |
/reactionrole list
/reactionrole list
Lists all reaction-role menus in the server. Shows the menu title, channel, and message ID for each one.No options required.
Role menu templates
Role menu templates let you define a set of role options once and reuse them across guilds or re-apply them after changes. Templates are managed with the/rolemenu template command group.
Template commands
/rolemenu template list
/rolemenu template list
/rolemenu template info
/rolemenu template info
/rolemenu template apply
/rolemenu template apply
/rolemenu template create
/rolemenu template create
/rolemenu template delete
/rolemenu template delete
/rolemenu template share
/rolemenu template share
Database schema
Menus and entries are stored in two PostgreSQL tables:reaction_role_menus— one row per menu (guild, channel, message, title, description)reaction_role_entries— one row per emoji-to-role mapping, foreign-keyed toreaction_role_menus