> For the complete documentation index, see [llms.txt](https://docs.rivalryze.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rivalryze.com/for-guild-admins/bot-permissions.md).

# Bot Permissions Checklist

If the bot isn't working right in your server, 90% of the time it's a permissions issue. This page walks through every permission the bot needs, why, and how to verify everything's set up.

## Quick check: `/guild-permissions`

The fastest way to diagnose: run `/guild-permissions` in any channel.

The bot checks every permission it needs against what it actually has, and reports back:

* ✅ All good — the bot has everything it needs.
* ⚠️ Missing: \[specific permissions] — you'll need to grant these.
* ❌ Cannot send messages — the bot can't even respond; you'll need to grant **Send Messages** first.

Re-run the command after fixing anything to confirm the fix worked.

## Required permissions (must have)

These permissions are required for core functionality. If any are missing, the bot can't do its job.

| Permission                   | Why it's needed                                                                        |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| **View Channel**             | To see slash commands when users invoke them.                                          |
| **Send Messages**            | To respond to commands.                                                                |
| **Embed Links**              | To send rich-formatted responses (profile cards, leaderboards, Contest announcements). |
| **Attach Files**             | To send generated images (completion cards, profile visuals).                          |
| **Use External Emojis**      | For platform icons (Steam, PSN, Xbox logos in responses).                              |
| **Read Message History**     | To resolve replies, threads, and command context.                                      |
| **Use Application Commands** | For slash commands to work at all.                                                     |

If any of these are missing, the bot can't function. Grant them in:

**Server Settings → Integrations → RivalRyze Bot → Manage**

Or per-channel under each channel's permission overrides.

## Optional permissions (nice to have)

These unlock additional features. The bot still works without them but won't be as useful.

| Permission           | What it enables                                                                                                                                      |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Add Reactions**    | Interactive responses (e.g., reacting with ✅ to confirm a Contest join).                                                                             |
| **Manage Messages**  | Letting the bot clean up its own responses on request.                                                                                               |
| **Manage Threads**   | Creating dedicated threads for active Contests.                                                                                                      |
| **Manage Roles**     | Auto-assigning roles based on rank or Contest wins. Required for [Role Automation](/for-guild-admins/guild-settings.md#permission-related-settings). |
| **Mention Everyone** | Pinging `@everyone` for Contest starts (use sparingly — most servers don't enable this for bots).                                                    |

## Channel-specific permissions

The bot may have permissions at the server level but be blocked in specific channels. This is the most common source of "bot works in #general but not #battles" issues.

### How to check

In Discord:

1. Right-click the channel → **Edit Channel**.
2. Go to **Permissions**.
3. Find the **RivalRyze Bot** role (or the bot itself if it doesn't have a role).
4. Verify the permissions match the table above.

If you don't see the bot or its role in the permission list:

* The channel uses the default server permissions (which should be fine if you granted them at the server level).
* Or there's a `@everyone` override that blocks the bot from this channel.

### Activity Feed channel

The bot must have permissions in the **Activity Feed channel** specifically. If you change the activity channel to one where the bot can't post, automatic announcements stop.

Run `/guild-permissions` after changing the activity channel to verify.

## Role hierarchy

Discord respects role hierarchy. If the bot's role is below the role of a member you want it to manage, the bot can't act on that member.

Specifically:

* For **role automation** (auto-assigning roles), the bot's role must be **above** the roles it's assigning.
* For everything else, hierarchy doesn't matter.

**To fix:** **Server Settings → Roles** → drag the RivalRyze Bot role above the roles it needs to manage.

## Privacy implications

Now that you know what permissions the bot has, here's what it actually reads or stores:

* **Channel and message content:** the bot reads **only** the content of slash commands directed at it (slash commands are filtered to the bot at the Discord layer). It does NOT read other messages in the channel.
* **Member list:** the bot reads your server's member list to sync members. It does NOT track who joins / leaves at the individual level beyond updating member sync.
* **Roles:** the bot reads members' roles for role-based Contest access checks.
* **Direct messages:** the bot can DM members **only if their privacy settings allow DMs from server members**. It will never DM a member who has DMs blocked.

The bot does **not**:

* Read your members' private DMs.
* Track or log non-command messages.
* Share your server's data with other RivalRyze guilds.

## Common permission-related errors

### "I tried to use a command but the bot didn't respond."

* Run `/guild-permissions` in the same channel. If the bot can't even respond to that, it's missing **Send Messages** or **Use Application Commands**.
* If the bot responds to `/guild-permissions` but not other commands, those specific commands may need additional permissions (see the breakdown above).

### "The bot posts in #general but not in our activity channel."

* The activity channel has channel-specific permission overrides that block the bot.
* Fix: **Edit Channel → Permissions** → grant the bot **View Channel**, **Send Messages**, **Embed Links**, **Attach Files**.

### "The bot can't assign roles."

* The bot's role is below the role it's trying to assign in the hierarchy. Drag the bot's role higher in **Server Settings → Roles**.
* Or the bot is missing **Manage Roles**. Grant it at the server level.

### "Member sync doesn't show all our members."

* Privileged intents may not be fully enabled. This is a server-size threshold thing. Below 100 servers, the bot uses standard intents; above 100, it requires Discord's approval for privileged intents.
* Contact [support](/help-and-faq/contact-support.md) if you suspect this — we can verify what's enabled at our end.

## Re-running setup vs. fixing permissions

If permissions are wrong but the bot has otherwise registered the guild correctly, you don't need to re-run `/setup`. Just fix the permissions and the bot picks up the new state immediately.

Re-run `/setup` only if:

* You changed Discord servers (rare).
* You want to change the activity channel and don't want to use `/guild-settings`.
* The setup itself failed and you need a clean retry.
