Reaction roles allow members to pick up Discord roles simply by reacting to a pinned or designated message with a specific emoji. When a member adds the reaction, SudoBot assigns the configured role or roles. When they remove the reaction, SudoBot removes those roles. The system supports rate limiting, per-entry permission and role requirements, user blacklists, permission level gating, and a “single” mode that enforces mutual exclusivity across all reaction roles on the same message.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/onesoft-sudo/sudobot/llms.txt
Use this file to discover all available pages before exploring further.
Enabling the system
Reaction roles must be enabled in your guild config before any triggers can fire:| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Master switch for the entire reaction role system. |
ignore_bots | boolean | true | Skip reactions from bot accounts. |
ratelimiting.enabled | boolean | true | Enable per-user rate limiting on reactions. |
ratelimiting.timeframe | integer (ms) | 7000 | Window within which max_attempts is counted. |
ratelimiting.max_attempts | integer | 5 | Maximum reactions allowed per user within the timeframe. |
ratelimiting.block_duration | integer (ms) | 10000 | How long to block a user after they exceed the limit. |
Creating a reaction role trigger
Use thecreatereactionrole command (aliases: crr, rr) to attach an emoji trigger to any message in your server.
| Option | Required | Description |
|---|---|---|
link | Yes | A Discord message link (discord.com/channels/…). Must be from the current server. |
emoji | Yes | The emoji that triggers the role assignment. Can be a Unicode emoji or a server custom emoji. |
roles | Yes | Space-separated role mentions or IDs. Maximum 7 roles per trigger. |
mode | No | MULTIPLE (default) allows accumulating many roles; SINGLE enforces mutual exclusivity on the message. |
You must have the Manage Roles permission to run
createreactionrole. SudoBot also needs Manage Roles to assign and remove roles on members.Setting up reaction roles step by step
Enable reaction roles in your config
Add the
reaction_roles block to your guild config and set enabled: true, then restart or reload SudoBot.Post or identify the target message
Navigate to the channel where you want the reaction role picker. Post a new message (e.g., “React below to pick your roles!”) or use an existing one. Enable Developer Mode, then right-click the message and select Copy Message Link.
Run createreactionrole
Pass the copied link, the trigger emoji, and the role(s) to assign.SudoBot confirms success and lists the role names that will be assigned.
Role assignment modes
- MULTIPLE (default)
- SINGLE
Members can hold roles from multiple emoji triggers on the same message simultaneously. Each trigger acts independently.Use this when you offer opt-in categories (e.g., game ping roles, interest tags) and members should be able to pick several.
Permission gating per trigger
Beyond the global config, each individual reaction role entry can enforce additional requirements before assigning roles:| Requirement | Behavior when not met |
|---|---|
requiredRoles | Member must hold all listed roles. Reaction is removed and no roles are assigned. |
blacklistedUsers | Listed user IDs cannot use the trigger (administrators bypass this). Reaction is removed. |
requiredPermissions | Member must hold all listed Discord permissions. Reaction is removed. |
level | When using level-based permissions, member must meet or exceed the minimum level. Reaction is removed. |
Rate limiting
The rate limiter tracks how many reactions a user submits within the configuredtimeframe. If the count reaches max_attempts, the user is blocked for block_duration milliseconds. During that window, all their reaction events are silently ignored.
Snippets
Create reusable canned text responses with access controls.
Welcomer
Greet new members with custom messages and a Say Hi button.
