Skip to content

Reaction Roles ​

Reaction Roles lets members choose their game roles from a welcome message, similar to a Carl-bot reaction-role message. Reacting adds the matching role; removing the reaction removes that role. Members can select several games independently.

Reaction Roles is available on every plan, with one panel per server and up to 20 emoji-to-role choices. It does not require Discord Community Onboarding.

Set Up Game Access ​

  1. In Discord, create an ordinary role for each game, such as DayZ and Rust.
  2. On each game's category, deny View Channel for @everyone and allow it for that game's role. Check that another member role does not already grant access.
  3. Move HAF Bot's highest role above the game roles and give it Manage Roles.
  4. In the welcome channel, allow HAF View Channel, Send Messages, Add Reactions, and Read Message History. Members need to be able to view that message and use its reactions.
  5. Open Admin Dashboard → Access Control → Reaction Roles.
  6. Select the welcome channel, enter a title and message, and add one emoji, existing role, and display name per choice. Unicode and custom emoji are supported.
  7. Review the message preview and choose Save and publish.
  8. Use View in Discord to test from a non-admin member account. Select two games, then remove one reaction and confirm only its role is removed.

HAF publishes the message and adds the initial emoji reactions. It assigns existing roles; it does not create game roles, channels, or category permissions.

Role Safety ​

Selectable roles must be below HAF Bot in Discord's hierarchy. @everyone, integration-managed roles, and roles with staff or management permissions are rejected. HAF also rejects roles used for its staff, verification, linked-account, Clan, ticket, timed-role, or paid-role workflows. Use dedicated game roles.

HAF checks these restrictions again when processing selections. A role that becomes privileged after publication cannot be newly self-assigned through the panel.

Reaction Roles also respects a member's active Timed Role suspension. Selecting a game cannot restore a role that the timed assignment is currently suspending.

Save, Publish, and Retry ​

Save draft saves the configuration and pauses processing until it is published. Save and publish applies the message and seeds its reactions.

If Discord fails partway through publishing, correct the reported channel, role, emoji, or permission problem and choose Save and publish again. HAF reuses its recorded message and retries adding the reactions.

After publication, the channel and existing emoji-to-role mappings stay fixed so members' reactions keep their meaning. You can edit the message and display names or append new choices. To replace existing mappings or move the message, delete the panel and create another.

Appended choices saved only as a draft remain editable until HAF writes them to the Discord message. Saving a draft does not lock those new choices.

Pause and Delete ​

Pause stops processing selections. Existing member roles are retained. Publish the panel again to resume. Selections changed while processing was paused or unavailable are not backfilled; members should remove and re-add the relevant reaction afterward.

Delete panel removes the Discord message and configuration. It leaves existing member roles in place. Remove those roles separately if access should be revoked.

After switching between the standard bot and a White-Label Bot, use Delete panel to reset a panel owned by the previous identity, then publish a replacement. HAF removes the saved configuration; delete the previous bot's Discord message manually. Existing member roles remain in place.

Bulk clearing reactions does not remove existing member roles. Use individual reaction removal or manage affected roles separately. Reaction Roles is an opt-in convenience, not a membership or payment verification system.

Reaction Rules and Limits ​

Reaction Rules still applies to the welcome channel. Exclude this channel from reaction limits or choose suitable limits, and avoid blocked emoji. A reaction removed by moderation does not count as an active selection.

Troubleshooting ​

  • Roles are not being added: check that the panel is Active, HAF can read the message, its role is above the selected roles, and it still has Manage Roles.
  • A custom emoji cannot be seeded: check that the emoji still exists and the bot can use it in this channel.
  • The message was deleted outside HAF: delete the stale panel configuration and create a new panel.
  • A role is already present: HAF makes no extra role change. Removing the matching reaction removes that role even if staff originally assigned it.
  • Updates are delayed: Gateway events are queued. HAF checks the member's current reactions when processing each event so delayed add/remove events converge on the current selection.

Implementation follows Discord's reaction events and reaction lookup API.