setting it up
- on the dashboard
- in discord
open the dashboard, pick your server and go to self-roles. it does everything below without a message link. add a panel, pick its channel, and it’s posted when you save. each role gets an emoji from the server’s own, still or animated, or any emoji pasted in, plus its label, button colour and category. changes redraw a panel where it is, and taking a panel off the page deletes its message on save.
,selfroles on its own lists every panel in the server.
a panel holds 25 roles, which is as many as a dropdown can show. past that, use categories.
categories
for a server with more roles than fits one list: the card then shows a category dropdown. picking one opens a second picker, visible only to the person who clicked, holding that category’s roles. each category holds 25, and the panel stays one line in the channel however many roles are behind it.,selfroles ungroup <link> @role puts a role back on the panel itself.
how picking behaves
,selfroles mode <link> single sets it. unique is accepted for single, and verify for keep, since that is what other bots call them.
how it looks
buttons come ingrey, blurple, green and red, and a label can lead with an emoji.
a role with no emoji of its own on the panel shows its role icon, the picture or emoji the server set on the role. nothing to add: change the icon in the server’s settings and the next redraw of the panel picks it up.
what it will not do
- it will not hand out a dangerous role. anything carrying administrator, manage server, manage roles, manage channels, manage webhooks, ban, kick, timeout or mention everyone is refused. a role anybody can give themselves is a role the next raider gives themselves too.
- it checks again on every click, not only when the role was added, so a role handed a dangerous permission later stops being handed out.
- it will not give a role above drain. discord refuses it, so drain says so when you add it rather than failing quietly when somebody clicks.
- it never touches a role that is not on the panel, so picking from a panel can never remove somebody’s staff role.
- it never answers in public. every reply is visible only to the person who clicked.
ways to type it
the group answers toselfroles, selfrole, reactionroles and rr.

