Understanding Discord Bot Permissions and Intents

Learn how Discord bot permissions and Gateway Intents work, and how to configure them for your bot.

Discord uses two separate systems to control what your bot can do: permissions and Gateway Intents. Understanding both is important for getting your bot to work correctly.

Bot Permissions vs Gateway Intents

  • Permissions control what actions your bot can perform in a Discord server (sending messages, managing roles, kicking users, etc.). These are set when the bot is invited to a server.
  • Gateway Intents control what events your bot receives from Discord (new messages, member joins, presence updates, etc.). These are configured in the Discord Developer Portal.

A bot needs both the correct permissions and the correct intents to function. For example, a moderation bot needs the "Ban Members" permission to ban users, but it also needs the "Server Members" intent to detect when new members join.

Permissions

How permissions work

When you invite a bot to a server, you select which permissions it should have. These are encoded into the invite URL. Server administrators can also adjust a bot's permissions after it has been added by editing its role in Discord's server settings.

Common permission sets

Bot TypeRecommended Permissions
General purposeSend Messages, Read Message History, Embed Links, Attach Files, Add Reactions
ModerationKick Members, Ban Members, Manage Messages, Manage Roles, View Audit Log
MusicConnect, Speak, Use Voice Activity
Slash commands onlySend Messages, Use Application Commands

💡 Tip: Follow the principle of least privilege. Only grant the permissions your bot actually needs. You can always re-invite the bot with additional permissions later.

Fixing "Missing Permissions" errors

If your bot logs a "Missing Permissions" or "DiscordAPIError[50013]" error in the Console:

  1. Check which permission the error mentions.
  2. Go to your Discord server's Server Settings > Roles.
  3. Find your bot's role and make sure the required permission is enabled.
  4. Make sure the bot's role is high enough in the role hierarchy. Bots cannot manage roles that are above their own role.

Gateway Intents

What are Gateway Intents?

Gateway Intents are categories of events that your bot subscribes to. Discord introduced intents to reduce unnecessary data processing. Your bot only receives the events it has opted into.

Standard vs Privileged Intents

Standard intents are enabled by default and do not require any special action. These include events like:

  • Guild (server) create/update/delete
  • Channel create/update/delete
  • Message reactions
  • Voice state updates

Privileged intents must be manually enabled in the Discord Developer Portal. There are three privileged intents:

IntentWhat It ProvidesWhen You Need It
Presence IntentUser online/offline/idle status and activity dataBots that display user status or track activity
Server Members IntentFull member list, member join/leave events, member updatesBots with welcome messages, role management, or member tracking
Message Content IntentThe actual text content of messagesBots that use prefix commands (e.g., !help) or read message content

📝 Note: Bots that only use slash commands (/command) typically do not need the Message Content Intent, since slash command data is delivered separately.

Enabling Privileged Intents

Go to the Bot section

Click Bot in the left sidebar.

Enable the intents you need

Scroll down to Privileged Gateway Intents and toggle on the intents your bot requires.

Save and restart your bot

After enabling intents in the Developer Portal, restart your bot on the XGamingServer panel for the changes to take effect.

Verification requirement for large bots

If your bot is in 100 or more servers, Discord requires you to apply for verification before you can use privileged intents. This involves submitting a request through the Developer Portal explaining why your bot needs each intent.

For most personal and community bots that stay under 100 servers, you can enable privileged intents freely without verification.

Common Intent Errors

"Disallowed intents" error

If your bot crashes with an error like [DISALLOWED_INTENTS] or error code 4014:

  1. Check which intents your bot's code is requesting.
  2. Go to the Developer Portal and make sure those intents are enabled under Privileged Gateway Intents.
  3. Restart your bot on the XGamingServer panel.

Bot is online but not responding to messages

This usually means the Message Content Intent is not enabled. If your bot uses prefix commands (like !help or ?play):

  1. Enable the Message Content Intent in the Developer Portal.
  2. Restart your bot.

If your bot uses slash commands, the issue is likely a permissions problem rather than an intent issue.

Best Practices

  • Only enable intents your bot actually uses. This reduces unnecessary data processing and aligns with Discord's guidelines.
  • Use slash commands when possible. They do not require the Message Content Intent and provide a better user experience.
  • Audit your permissions periodically. Remove permissions your bot no longer needs.
  • Keep your bot's scope minimal. If your bot only needs to work in specific channels, use Discord's channel-level permission overrides.

If you need help configuring permissions or intents for your bot, join our Discord.

How is this guide?

40% Off — Limited TimeGet your Discord Bots server todayInstant setup, DDoS protection, and 24/7 support included.
Get a Server

On this page