roles.
handing out roles by hand, by button, and in bulk.
giving one member a role
use the toggle when the desired result depends on the member’s current state, or use the explicit add and remove forms when a script or staff procedure should always mean one thing. all three require manage roles. havoc records changes as moderation cases and refuses a role it cannot safely manage.
| command | what it does | needs |
|---|---|---|
| /role <member> <role> | toggle the role on or off for one member | manage roles |
| /role add <member> <role> | assign the role; alias: role give | manage roles |
| /role remove <member> <role> | remove the role; alias: role take | manage roles |
| /role restore <member> | restore the manageable role snapshot saved when the member left | manage roles |
,role add @river "Event Team"
,role @river Announcements
/role remove member: @river role: Announcementsquote a role name containing spaces in prefix commands. role restore skips roles that were deleted, became managed, or moved above havoc; its summary reports restored and skipped counts.
the staff member and havoc both need authority over the target. havoc’s highest role must sit above the role being assigned and above the member being changed. integration-managed roles cannot be assigned, edited, or deleted by a bot, even when the command runner has administrator.
temporary and persistent member roles
a temporary role has a saved expiry, survives a restart, and follows the member if they leave and return before it expires. durations accept havoc’s normal duration text and are capped at one year. listing the records is useful before extending or replacing a grant.
| command | what it does | needs |
|---|---|---|
| /temprole <member> <duration> <role> | grant a role until the saved expiry | manage roles |
| /temprole list | list members, roles, and relative expiry times | manage roles |
| /stickyrole add <member> <role> | grant and keep restoring one member’s role | server owner |
| /stickyrole remove <member> <role> | stop restoring it; the member keeps the current role | server owner |
| /stickyrole / stickyrole list | list all sticky member-role pairs | server owner |
the same member-role pair cannot be both temporary and sticky. remove the sticky configuration before removing that role manually. adding a normal permanent role also clears an existing temporary expiry for that pair, preventing a later scheduled job from taking the permanent grant away.
changing many members
bulk jobs cover humans, bots, or everyone who already has a source role. each add form has a matching remove form. these commands require both manage roles and manage server.
| command | what it does | needs |
|---|---|---|
| /role humans <role> [--no-roles] [--joined-today] | grant a role to matching human members | manage roles + manage server |
| /role humans remove <role> [--no-roles] [--joined-today] | remove it from matching humans | manage roles + manage server |
| /role bots <role> [--no-roles] [--joined-today] | grant a role to matching bot accounts | manage roles + manage server |
| /role bots remove <role> [--no-roles] [--joined-today] | remove it from matching bots | manage roles + manage server |
| /role has <source role> <assign role> | grant a role to everyone with the source role | manage roles + manage server |
| /role has remove <source role> <assign role> | remove the assigned role from that group | manage roles + manage server |
| /role cancel | request cancellation of the running bulk role job | manage roles + manage server |
- ::--no-roles
- only include accounts whose only role is @everyone.
- ::--joined-today
- only include accounts that joined during the last 24 hours.
havoc fetches the complete member list, rechecks staff permissions and hierarchy for every account, writes each successful case, and pauses between changes to respect discord’s rate limits. large servers therefore take time. only one role bulk job runs per server. cancellation does not roll back members already changed.
creating and editing roles
created roles start with no permissions. that makes role create suitable for labels and self-assignable groups without silently creating staff access. colors are hexadecimal values such as #5865f2.
| command | what it does | needs |
|---|---|---|
| /role create <hex color> <name> | create a permissionless role | manage roles |
| /role edit <role> <name> | rename a role; alias: role rename | manage roles |
| /role color <hex color> <role> | set its solid color; alias: role colour | manage roles |
| /role color gradient <hex color> <second hex color> <role> | set enhanced role colors where the server supports them | manage roles |
| /role topcolor <hex color> <member> | change the color of that member’s highest role | manage roles |
| /role icon <url> <role> | set an icon downloaded from discord’s cdn | manage roles |
| /role hoist <role> | toggle separate display in the member list | manage roles |
| /role mentionable <role> | toggle whether anyone can mention the role | manage roles |
| /role delete <role> | permanently delete a role | manage roles |
gradient colors and role icons depend on server features. icons must be a png, jpeg, or webp from discord’s cdn and no larger than 256 kib. toggles use the role’s current value, so check the role after running them if another administrator may be editing it at the same time.
roles on join
autoroles apply to every new member. sticky roles are different: they remember a role for one particular member and restore it after removal or rejoin. autoroles reject privileged roles, including roles whose channel overwrites grant moderation powers.
| command | what it does | needs |
|---|---|---|
| /autorole / autorole list | show configured join roles | manage roles + manage server |
| /autorole add <role> | add a role to the join set | manage roles + manage server |
| /autorole remove <role> | remove one role from the join set | manage roles + manage server |
| /autorole reset | clear the entire autorole configuration | manage roles + manage server |
changing autorole configuration affects future joins; it does not backfill existing members. use an appropriate bulk command when existing accounts should receive the same role.
button role panels
- 01
create a bot-owned panel
run
,buttonrole setupin the destination channel and copy the returned message link. - 02
attach each role
use
,buttonrole add <message link> <role> <style> <emoji or none> <label>. - 03
inspect before removing
run
,buttonrole list; removal uses the displayed one-based index.
,buttonrole setup
,buttonrole add https://discord.com/channels/123/456/789 Announcements primary none "Announcements"
,buttonrole list
,buttonrole remove https://discord.com/channels/123/456/789 1| command | what it does | needs |
|---|---|---|
| /buttonrole / buttonrole list | list panel links, indexes, and assigned roles | manage roles + manage server |
| /buttonrole setup | post a dedicated havoc-owned panel | manage roles + manage server |
| /buttonrole add <message link> <role> <style> <emoji or none> <label> | add one persistent button; styles: primary, secondary, success, danger | manage roles + manage server |
| /buttonrole remove <message link> <index> | remove one indexed button | manage roles + manage server |
| /buttonrole removeall <message link> | remove every button from one panel | manage roles + manage server |
| /buttonrole reset | remove configured buttons across all panels | manage roles + manage server |
one panel supports at most 25 buttons and cannot mix havoc role buttons with unrelated components. buttons return after a bot restart because their configuration is persistent.
reaction role panels
reaction roles can use the message made by reactionrole setup or another readable message. adding the reaction grants the role and removing it takes the role away. a message supports at most 20 configured reaction roles.
| command | what it does | needs |
|---|---|---|
| /reactionrole / reactionrole list | list message links, reactions, and roles | manage roles + manage server |
| /reactionrole setup | post a new reaction panel message | manage roles + manage server |
| /reactionrole add <message link> <reaction> <role> | map one reaction to one role | manage roles + manage server |
| /reactionrole remove <message link> <reaction> | remove one mapping | manage roles + manage server |
| /reactionrole removeall <message link> | remove all mappings from one message | manage roles + manage server |
| /reactionrole restore <all|reactions|roles> | replace bot reactions, grant roles to existing reactors, or do both | manage roles + manage server |
| /reactionrole reset | clear all mappings without changing member roles or existing reactions | manage roles + manage server |
reactionrole reset leaves current roles and reactions in place but forgets every mapping. removing a mapping also leaves member roles unchanged. use reactionrole restore roles only when existing reactors should be granted configured roles; on a large panel it is paced and can take time.
