Button Roles
Migrating from Reaction Roles
Turn your existing reaction-role messages into button roles, in place or as a fresh copy.
Buttons are more reliable than reactions: a reaction added while the bot is briefly offline can be missed, but a button click never is. The migration tool turns your existing reaction-role messages into button roles without rebuilding anything by hand.
Open it from the Migrate from Reaction Roles panel on the Button Roles page.
What you'll see#
The tool lists every message that currently has reaction roles, each tagged as:
- Zira: a message Zira sent. It can be edited in place.
- Other author: a message a webhook, staff member, or another bot sent. Zira can't edit it, so it offers to repost a copy.
Each entry previews the buttons it would create, warns if the result would exceed your plan's button limit, and has a Jump to message link that opens the original message in Discord so you can check it before migrating.
How reaction roles map to buttons#
| Reaction role | Becomes |
|---|---|
| Normal (react to add, unreact to remove) | a toggle button |
| Once (add only) | an add action |
| Remove (react to remove) | a remove action |
| A set of toggle reactions (pick one) | buttons in one group, max 1 |
| Several roles on one emoji (stacking) | one button with a multi-action chain |
One button is created per emoji, keeping the original emoji. Labels are left blank so you can name them afterward; everything stays fully editable once migrated.
When an emoji can't be used#
Buttons follow stricter rules than reactions: an emoji that was deleted (or one from a server Zira is not in) can stay visible as a reaction forever, but Discord refuses it on a button. The migrator highlights each of these in red and asks you to replace it, per emoji, without touching anything else about that button:
- New emoji: pick a replacement from the emoji picker. The button keeps the exact same roles, actions, and carried-over click count.
- Text button: type a label instead (for example
Announcements) and that button becomes text-only.
Emoji from other servers Zira is in are marked with a small amber dot; they work as long as Zira stays in that server. If Discord rejects one during migration, it gets highlighted for replacement the same way and you can simply try again after fixing it.
Migrating a Zira message#
Zira edits the message in place, adding the buttons and keeping the original embed, content, and timestamp. The old reactions are removed by default and the message's reaction roles are retired: after migration that message runs on buttons only. No member's roles are touched by any of this; everyone keeps what they have.
Each emoji's reaction count is carried over into the new button's click statistic, so the engagement history is not lost when the reactions are removed.
Migrating someone else's message#
Since Zira can't edit another author's message, it posts a faithful copy (content and embeds) as itself, with the buttons attached.
The copy is a new message, so it has a new timestamp. The original is left untouched unless you opt in below.
Two optional toggles, both permission-checked:
- Remove the old reactions (default on, available on every message). Removes the reactions; nobody's roles change. You can uncheck it to keep the reactions visible, but be aware they stop giving roles the moment the message is migrated: members who react get nothing, which is confusing next to the working buttons. Most servers should leave this checked.
- Delete original message (default off, other authors' messages only). Removes the original entirely. Needs the
Manage Messagespermission.
Bulk migration#
Use Migrate all Zira messages to convert every eligible Zira-authored message in one click. Messages by other authors are migrated individually so you can decide what to do with each original.
Safety#
Your reaction-role data is removed only after the buttons are successfully posted. If anything goes wrong mid-migration, the original reaction roles are left fully intact and you can simply try again.