Skip to main content

Overview

Build flexible role menus without slash commands. Petto supports classic emoji reactions and clickable buttons, with independent toggle, add-only, or remove-only behavior for every role binding. Use them so members choose their own colours, pings or interests, or to give the member role when someone accepts the rules. The quickest way is the builder of the dashboard; the commands work on any message too.

Commands

kira binds 🎮 on a message of the roles channel to the Events role and Petto confirms it in toggle mode

In Discord: an emoji of a message bound to a role.

liam adds a 🏆 button for Quest hunters to the color menu and Petto confirms the button role

In Discord: a button added to the color menu.

liam removes the 🎉 binding of the color menu, Petto confirms it, and the same command again says that emoji was not bound

In Discord: a binding removed, and the answer when the emoji is no longer bound.

chu lists the color menu and Petto answers with its five button roles and their mode

In Discord: the roles of a message, listed with !rr.

liam clears the pings message and Petto says it removed three role bindings

In Discord: every binding of a message removed at once.

Petto refuses 🔴 because it is already bound, says it cannot find a message, and warns nova about the missing manage_roles permission

In Discord: an emoji already bound, a message that is not found, and a member without Manage Roles.

channel defaults to the current channel. emoji accepts both custom and default emoji. type is reaction by default. Use button to turn the message into a clickable role menu; one message can contain up to 25 Petto buttons across five rows. label is the button text and defaults to the role name. Button mode cannot be added to a message that already has another component panel, such as a ticket or VoiceMaster panel. Short name: !rr. !reactionroleconfig shows every reaction and button role of the server and the commands to change them.
Petto lists the nine role bindings of Petto Land with their channel, emoji, role and mode, then the reactionrole commands

In Discord: the card of !reactionroleconfig with the roles of Petto Land and the commands.

Dashboard builder

The quickest way to make a role menu is the builder in the dashboard: Automation → Reaction roles → Create a role menu.
1

Pick the channel and write the message

Choose where the message is posted, then add text and an embed (title, description, color, footer, thumbnail and image). A saved embed from the embed generator can be loaded as a starting point, and a link opens the generator.
The builder with #roles chosen and the Message panel: a saved embed to start from, the content and the embed with its title, description and color

Dashboard → Automation → Reaction Roles → Create reaction role: the channel and the message, with the embed of the color menu.

2

Add rows of buttons

Each row holds up to 5 buttons and a message holds up to 5 rows (25 buttons). For every button choose a name (or Empty to show only the emoji), a color (Blurple, Gray, Green or Red), the role, the behavior (toggle, add only or remove only) and an optional emoji.
Row 1 of the builder with the Red, Blue and Green buttons, their color, role, toggle behavior and emoji, and the tools to move, copy and remove them

Dashboard → Automation → Reaction Roles → Create reaction role: the rows of buttons, each with its name, color, role, behavior and emoji.

3

Pick emojis

The emoji picker has a Server tab with your custom emojis and a Unicode tab, both with search.
The Select emoji window with the Server and Unicode tabs, the search box and the grid of emojis

Dashboard → Automation → Reaction Roles → Create reaction role: the emoji picker on its Unicode tab.

4

Save

The unsaved-changes bar appears as you edit. Saving posts the message, or edits it when you opened an existing menu.
The preview of the color menu with its five buttons, the Create reaction role button and the You have unsaved changes bar

Dashboard → Automation → Reaction Roles → Create reaction role: the preview of the message, the button that posts it and the bar of unsaved changes.

The Pick your color menu in the roles channel with the Red, Blue, Green, Purple and Events buttons

In Discord: a role menu with an embed and two rows of buttons, as the builder posts it.

Buttons can be moved left or right, duplicated (the copy has no emoji until you pick one, because every button of a message needs a different one) and rows can be moved up or down. To change a menu later, open it from the list in Reaction roles with Edit the message in the builder.
The Reaction roles list of Petto Land with nine bindings, the Red button open to edit, and the form to add one

Dashboard → Automation → Reaction Roles: the role bindings of the server, one of them open with Edit the message in the builder.

The builder works with classic embeds. Components V2 messages cannot hold role buttons.
The same emoji picker is used in Message reactions, Reaction triggers, Starboard, Tickets, Button responders and Partners.

Buttons from commands

!reactionrole add also takes embed (with message_id set to new, posts a message from a saved embed), style (button color) and row (1 to 5) so command-made menus can use the same layout.
liam posts the giveaway-pings embed in #roles with a Giveaways button and Petto answers with the link of the message and how to add more buttons

In Discord: a new message posted from a saved embed, with its first button.

Examples

1

Make the menu message

Command
liam creates color-roles from a code and Petto shows the embed Pick your color

In Discord: the saved embed of the menu, made with !embed create.

2

Post it with the first button

Command
new posts the saved embed in #roles and puts the button on it. Copy the ID of that message for the next buttons.
Petto posts Pick your color with a red Red button and answers with the link of the message

In Discord: the embed posted in #roles with its Red button.

3

Add the other buttons

Command
The menu now has the Red and Blue buttons, after liam adds the blurple one with --style 1

In Discord: the same message with its second button, Blue.

style is the button color: 1 blurple, 2 gray, 3 green, 4 red.
A saved embed posted with new can use variables, filled for whoever runs the command, so server ones like {server_name} or {server_membercount} make the most sense there.

Modes

Reacting adds the role, reacting again removes it.
The color menu and Petto's two private answers, Added Red and Removed Red

In Discord: nova presses Red twice: the role is given, then taken away. Only nova sees the answers.

Reacting adds the role, removing the reaction does nothing.
Mia presses Events, Petto says it added the role, and the second press says she already has it

In Discord: Events in add mode: the second press does not take the role away.

Reacting removes the role, useful paired with a role members start with.
tommy presses the red No event pings button, Petto removes Events, and the second press says he does not have it

In Discord: a No event pings button in remove mode: it only takes the role away.

Buttons follow the same modes and Petto answers the member in private (only they see it). With reactions Petto says nothing: the role just changes.