BMO Wiki

Self roles & reactions 🎭

Let members pick their own roles by reacting, and have BMO react to messages for you.

This module covers three related tools. All three run on reactions, but they solve different problems:

ToolWhat it doesTypical use
Self-role panelsBMO posts a tidy embed listing emoji β†’ role pairs; members react to grab a role.Color roles, pronouns, ping/notification roles, age groups.
Custom reaction rolesAttach a role to any existing message β€” one emoji, one role."React βœ… under the rules to get access."
Auto-reactionsBMO automatically reacts to messages that match a filter.⭐ every art post with an attachment, πŸ‘/πŸ‘Ž on suggestions.
All role features depend on role order: BMO can only give or remove roles that sit below its own top role in Server Settings β†’ Roles. If members react and nothing happens, this is the first thing to check.

Self-role panels

A panel is a message BMO posts and maintains in a channel you choose. It shows a title, an optional description, and a list of options β€” each option is a custom emoji paired with a role (plus an optional short label like "for event pings"). BMO pre-adds the emoji as reactions, so members just click one:

Members manage their own roles this way, and nobody has to ping a moderator for a color change.

Building panels in the dashboard

Open your server in the dashboard and go to the Self roles page:

  1. Pick the panel channel β€” the text channel where all your panels get posted (something like #pick-your-roles).
  2. Create a panel β€” give it a title (up to 80 characters) and an optional description (up to 500 characters) that appears above the options.
  3. Add rows β€” each row is one custom emoji plus the role it grants, with an optional label shown next to the role in the embed. The dashboard's emoji and role pickers do the matching for you; each emoji can only be used once per panel.
  4. Choose exclusive or not β€” see below. New panels are exclusive by default.
  5. Save and post β€” BMO posts each panel as its own message in the panel channel and adds the reactions.

You can make as many panels as you like β€” one for colors, one for pings, one for pronouns β€” and each one becomes a separate message in the panel channel.

Panel rows use custom emoji (the ones uploaded to a server), not standard Unicode emoji like πŸ”΄. Upload an emoji set to your server first if you don't have one β€” free servers get plenty of emoji slots. Standard emoji do work in custom reaction roles and auto-reactions below.

Exclusive mode: pick one, or collect many?

Each panel has an exclusive toggle:

Updating a panel later

Panels are living messages. When you edit a panel in the dashboard β€” rename it, add a row, swap an emoji, remove an option β€” saving updates the existing Discord message in place: the embed is re-edited and BMO's reactions are synced, removing emoji you dropped and adding ones you added. No reposting, and members keep the roles they already have.

Don't delete a panel message in Discord by hand. The dashboard tracks each panel by its message, and a deleted message can't be edited β€” you'll see an error like "message deleted or no access" when saving. Remove or recreate the panel from the dashboard instead.

Worked example: a color-roles panel

Say you want members to pick a name color. Ten minutes, start to finish:

  1. In Server Settings β†’ Roles, create the color roles β€” Red, Blue, Green, Purple β€” each with its display color. Make sure they all sit below BMO's role.
  2. Upload matching custom emoji (a red heart, a blue circle β€” whatever fits your server's style) in Server Settings β†’ Emoji, if you don't have suitable ones already.
  3. In the dashboard's Self roles page, set the panel channel to #pick-your-roles.
  4. Create a panel titled "Name colors" with the description "React to pick your name color β€” pick a new one any time."
  5. Add four rows: red emoji β†’ Red, blue emoji β†’ Blue, green emoji β†’ Green, purple emoji β†’ Purple.
  6. Leave exclusive on β€” one color at a time.
  7. Save. BMO posts the panel in #pick-your-roles with all four reactions ready to click.

A member taps the red emoji and turns red. Next week they tap blue β€” BMO swaps the role and clears their red reaction automatically.

Command alternative: the classic setup

Before custom panels existed, BMO shipped a fixed three-panel starter set, and it still works if you want roles up fast without opening the dashboard:

CommandWhat it does
!selfrole setup #channelCreates a standard set of roles if missing (six colors, 18-/18+, Female/Male), then posts three panels β€” Age, Gender, and Colors β€” with reactions in the channel you name.
/selfroleemoji listShows which emoji the classic panels use for each option.
/selfroleemoji set key:<key> emoji:<emoji or ID>Swaps one classic option's emoji for a custom emoji of yours (e.g. key color_red).
/selfroleemoji reset [key]Resets one key β€” or all of them β€” back to the default emoji.

All of these need the Manage Server permission.

The classic set is opinionated β€” fixed panels, preset role names. Once you create your own panels in the dashboard, they take over completely, and that's the recommended path: you choose the titles, roles, emoji, and exclusivity yourself.

Custom reaction roles (any message)

Sometimes you don't want a whole panel β€” you want a role tied to a message that already exists. The classic case: members must react βœ… under your rules message to unlock the rest of the server.

A custom reaction-role rule is just four pieces: a channel, a message ID, an emoji, and the role to grant. When someone adds that emoji to that exact message, they get the role; removing the reaction removes the role. These rules are managed on the dashboard's Self roles page, and unlike panel rows, the emoji here can be a standard emoji (βœ…, πŸ””) or a custom one.

To get a message ID: turn on Developer Mode in Discord (User Settings β†’ Advanced), then right-click the message β†’ Copy Message ID. Paste that into the rule along with the channel the message lives in.

BMO doesn't add the reaction to the message for you with these rules β€” add the emoji yourself once so members have something to click, and make sure the channel and message ID in the rule match exactly. A rule pointing at the wrong channel silently does nothing.

Auto-reactions

Auto-reactions flip the direction: instead of members reacting to BMO, BMO reacts to members. You define rules like "star every message with an attachment in #art" or "add πŸ‘ and πŸ‘Ž to everything in #suggestions", and BMO handles it instantly, around the clock. Great for showcase channels, voting channels, and starboard-style workflows.

Each rule has three parts:

FilterBMO reacts when the message…
all…is any message at all in the rule's scope.
attachments…has a file attached (images, videos, any upload).
embeds…contains an embed.
links…contains an http:// or https:// link.
stickers…includes a sticker.

Messages from bots are ignored by default, so BMO won't react to other bots' log spam (or to itself). You can have up to 40 rules per server.

Managing auto-reaction rules

Set rules up on the dashboard's Self roles page, or use the /autoreact command right in Discord (both need Manage Server):

CommandWhat it does
/autoreact add <filter> <emoji> [channel]Adds a rule for one text channel. Leave the channel blank to use the channel you're typing in.
/autoreact addserver <filter> <emoji>Same, but applies to every text channel in the server.
/autoreact listLists all rules with their numbers.
/autoreact remove <number>Deletes one rule by its number from list.
/autoreact clearDeletes all auto-reaction rules at once.

Example: to star every art post, type this in #art:

/autoreact add filter_mode:attachments emoji:⭐

Server-wide all rules mean BMO reacts to every single message everywhere β€” that's a lot of reactions and it gets noisy fast. Prefer per-channel rules with a specific filter unless you truly want the firehose.

Troubleshooting