> 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

Most "the bot isn't posting" problems come down to Discord permissions in a specific channel. This page lists what the bot uses each permission for and how to check them.

## Quick check: `/guild-permissions`

Run `/guild-permissions` in your server (or in a direct message with the bot). Only the Guild's Owner and Admins can use it, and only they see the reply. It checks:

* **Configured Channels:** your **Contests Forum**, **Info Channel** and **Activity Feed**. Each line shows ✅ when everything is fine, ⚠️ with the missing permissions, ❌ when the channel is gone or is the wrong type, or ℹ️ when it isn't set up.
* **Contest Thread Sync Health:** how many Contest threads the bot tracks, how many it can still reach, how many are archived or locked, and which are at risk of missing updates.

It ends with **✅ RivalRyze Permission Check: looks good** or **⚠️ RivalRyze Permission Check: issues found**, followed by **How to fix** steps. Fix what it lists, then run it again.

## What the bot uses, feature by feature

| Feature                                                    | Permissions the bot needs there                                                                                                                                                                                                       |
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Info channel** (`ℹ️︱info`) and **Activity Feed** channel | **View Channel**, **Read Message History**, **Send Messages**, **Embed Links**. Feed posts also use **Attach Files** (images) and **Add Reactions** (the bot reacts to its own posts).                                                |
| **Contests forum** (`⚔️︱contests`)                         | **View Channel**, **Read Message History**, **Send Messages**, **Send Messages in Threads**, **Create Public Threads**, **Manage Threads**. Optional: **Manage Messages** to pin each Contest post, **Add Reactions** to react to it. |
| **Contest threads**                                        | **View Channel**, **Read Message History**, **Send Messages in Threads**. **Manage Threads** on the forum lets the bot reopen archived threads.                                                                                       |
| **Sync Channels**                                          | **Manage Channels**, to create the RivalRyze category and channels and set their permissions.                                                                                                                                         |
| **Discord role rewards**                                   | **Manage Roles**, plus the right role position. See [Roles and role hierarchy](#roles-and-role-hierarchy).                                                                                                                            |
| **Public Guild invite link**                               | **Manage Server** (optional), so the bot can find a permanent invite link to your server. See [Public or private?](/for-guild-admins/guild-settings.md#public-or-private)                                                             |

To run slash commands, your members need Discord's **Use Application Commands** permission in the channel.

The permissions requested when you add the bot are shown on Discord's authorization screen. You can change the bot's role permissions any time in **Server Settings → Roles**.

## Channels created by Sync Channels

When **Sync Channels** creates `ℹ️︱info`, `⚔️︱contests` and `🎮︱activity`, it sets their permissions for you:

* The bot gets what it needs in each channel.
* Everyone can view all three and read their history.
* `ℹ️︱info` and `⚔️︱contests` are read-only for members: they can't post, reply in threads, create threads or add new reactions.
* `🎮︱activity` keeps your server's default posting rules for members.

If you point the Activity Feed at another channel, or change these channel permissions later, check the bot's access there.

## Fixing channel permissions

The fix steps `/guild-permissions` gives:

1. Open **Server Settings → Roles → RivalRyze** and grant the missing permissions at the server level.
2. For each channel marked ❌ or ⚠️: **Edit Channel → Permissions**, add the **RivalRyze** role, and enable the missing permissions.
3. Archived Contest threads recover once the bot has **Manage Threads** on the Contests forum.

A channel override can block the bot even when its server-level permissions are fine, which is the usual cause of "the bot posts in one channel but not another."

## Roles and role hierarchy

Discord only lets the bot give a role that sits **below** its own highest role, to a member whose highest role is also below it. For Discord role rewards on Guild Contests:

* Give the bot **Manage Roles**.
* In **Server Settings → Roles**, drag the bot's role above every role you want to award, and above the roles of the members who might win them.

If the Contest creator says **Unable to load guild roles** (*Please ensure Discord server permissions allow Ryzer to apply server roles to members...*), the bot is missing **Manage Roles** or no role sits below the bot's role. See [Hosting Guild Contests](/for-guild-admins/hosting-guild-contests.md#discord-role-rewards).

Admin Role Discord Sync, Role Access Control on the feed and role-restricted Contests only read members' roles; they don't need **Manage Roles**.

## What the bot reads

* **Not message content.** The bot doesn't request Discord's message content access, and all its interactions are slash commands and buttons.
* **Activity counts:** it counts messages, reactions and voice time per member and channel for your Guild's activity stats. Messages from other bots and webhooks aren't counted. You can stop this under **Settings → Privacy → Capture server activity**.
* **Members and roles:** it reads your member list and their roles to sync Guild admins, check role-restricted Contests, apply the feed's role filter, and remove people from the Guild when they leave your server.
* **Direct messages:** it sends one when it joins a server, to the server owner, with the setup guide. It doesn't DM your members.

## Common problems

### The Activity Feed isn't posting

* Check that an **Activity Feed Channel** is set (**Settings → Activity Feed**) and that `/guild-permissions` shows it ✅.
* Check the switch for that post type, the **Minimum Game Difficulty** and the **Rarity Threshold**: a game below the bar or a common achievement isn't announced.
* If **Role Access Control** has roles selected, only members holding one of them are announced.
* Only members who joined your Guild on RivalRyze are announced.

See [Guild Settings & Activity Feed](/for-guild-admins/guild-settings.md#activity-feed).

### Contest posts don't appear in the forum

* The Contest must be a **Guild Contest** for your Guild, or a global Contest with **Participate in Global Contests** on.
* The Contests forum must exist: it needs Discord's Community feature. Check **Settings → Setup**.
* Run `/guild-permissions` and fix anything flagged for the forum.

### The bot can't give a reward role

The bot is missing **Manage Roles**, or its role sits below the reward role or the winner's highest role. See [Roles and role hierarchy](#roles-and-role-hierarchy).

### The Guild page says the bot is Offline

The bot isn't in your server anymore. Add it again the same way you first did. See [Adding the Bot to Your Server](/for-guild-admins/adding-the-bot.md).

Still stuck? [Contact support](/help-and-faq/contact-support.md) with the output of `/guild-permissions`.
