1
Post the message first
Whatever the members will click on. Use
!embed if you want it to look designed:2
Attach roles to it
Every command below takes that message — as a link, an ID, or a reply.
Button roles
The best default. Clear, mobile-friendly, and clicking toggles the role.
If a message gets edited by something else and loses its buttons:
buttonroles, btr. render aliases: refresh, sync.
Dropdown roles
Better past about five roles — one compact menu instead of a wall of buttons.dropdownroles, selectrole, dropdown, dd.
Discord caps a dropdown at 25 options. Past that, use a second message.
Reaction roles
reactionroles, rr.
Limiting picks
1 for mutually exclusive choices — picking a new one removes the old.
Inverting
Fixing desyncs
fix, refresh.
Which should I use?
Under 5 roles
Under 5 roles
Buttons. One click, visible without interacting, works well on mobile.
5–25 roles
5–25 roles
Dropdown. Keeps the message short and supports per-option descriptions, which matters when the role names aren’t self-explanatory.
Over 25 roles
Over 25 roles
Multiple messages, one per category — colours, pings, games. A dropdown each, or buttons if each category is small.
Aesthetic reasons
Aesthetic reasons
Reactions. Some people prefer how they look, and they’re the only option that works on very old messages you can’t edit. They’re also the least reliable — reaction events get dropped, which is what
reactionrole sync exists for.