Getting started

Permissions & access

Who is allowed to open the dashboard, and which Discord permission each Cloudy feature actually needs at runtime.

There are two separate permission questions, and mixing them up causes most "why doesn't this work" tickets:

  1. Who may open the dashboard for a server — a check on your Discord permissions.
  2. What the bot may do in the server — a check on the bot's role permissions.

Who may configure a server

A server appears in your dashboard when at least one of these is true:

  • you are the server owner, or
  • your roles grant Administrator, or
  • your roles grant Manage Server.

That is it — there is no separate Cloudy role or invite list. The check runs on every single API request, not just when the page loads, so a URL with someone else's server id gets a 403 rather than a rendered page.

Permission changes in Discord reach the dashboard within about a minute — the guild list is cached briefly. Use the refresh button in the server selector to force it.

What the bot needs

Cloudy asks for one permission set at invite time, but each plugin only uses part of it. If a feature does nothing and the dashboard shows no error, this table is the first place to look.

Discord permissionNeeded by
View Channels / Send MessagesEverything that posts: welcome, level-ups, birthdays, alerts, panels
Embed LinksEvery embed — panels, level-ups, giveaways, stream alerts
Read Message HistorySticky messages, AutoMod, custom commands
Manage MessagesAutoMod deletions, sticky reposting, /del-msg, poll cleanup
Manage RolesReaction roles, verification, auto-roles, birthday role, automation role actions
Manage ChannelsTemp voice, ticket channels, /channel-lock, /slowmode
Move MembersTemp voice (moving the owner into their new channel)
Ban Members/ban, /unban, AutoMod escalation to ban
Kick Members/kick, AutoMod escalation to kick
Moderate Members/timeout, AutoMod timeout actions
Add ReactionsReaction role panels (seeding the reactions)
View Audit LogThe dashboard's Audit log page

The role hierarchy trap

Discord permissions are not enough on their own. A bot can only manage roles that sit below its own highest role, and can only moderate members whose highest role is below the bot's.

This is the single most common cause of "the role is not being assigned":

If your reaction-role panel hands out @Member but Cloudy's role sits under @Member in Server Settings → Roles, nothing happens — and Discord returns a generic error the bot cannot explain any better. Drag Cloudy's role above every role it should manage.

The same applies to moderation: Cloudy cannot ban, kick or time out someone whose top role is above its own, no matter which permissions it has.

Privileged intents

Two of Discord's privileged gateway intents are required for Cloudy to see anything beyond slash commands:

IntentWithout it
Server MembersJoins and leaves are invisible → no welcome/goodbye, no auto-roles, no verification, no birthday role
Message ContentMessage text is invisible → no AutoMod, no leveling, no custom commands, no sticky messages

For the hosted Cloudy bot these are already enabled — you do not have to do anything. They only become your responsibility when you run a Custom Bot under your own Discord application; that page walks through switching them on.

Data the dashboard reads

For transparency, the dashboard reads exactly this from Discord on your behalf:

  • your user profile (id, name, avatar) and your server list, via OAuth;
  • the target server's channels, roles and basic metadata, via the bot;
  • the server's audit log, if you open that page and the bot has View Audit Log.

It never reads message content through your login, and the bot token of a custom bot is stored encrypted and never returned to any client.