Your Guide to What Discord Bot Intents Are Allowed By Default Discord.js V14
What You Get:
Free Guide
Free, helpful information about Social Media and related What Discord Bot Intents Are Allowed By Default Discord.js V14 topics.
Helpful Information
Get clear and easy-to-understand details about What Discord Bot Intents Are Allowed By Default Discord.js V14 topics and resources.
Personalized Offers
Answer a few optional questions to receive offers or information related to Social Media. The survey is optional and not required to access your free guide.
Discord Bot Intents Allowed by Default in Discord.js V14
If you've started building a Discord bot with Discord.js V14, you've likely run into the concept of Gateway Intents — and noticed that not all of them are available right out of the box. Understanding which intents are enabled by default, which require explicit opt-in, and which need Discord's approval entirely is one of the first real hurdles in bot development.
What Are Discord Gateway Intents?
Gateway Intents are a permission system Discord uses to control which real-time events your bot receives from Discord's Gateway (the WebSocket connection your bot uses to listen to server activity). Rather than flooding every bot with every event from every server, Discord uses intents to let you — and Discord itself — limit what data flows to your application.
Think of intents as subscriptions. If you don't subscribe to a particular category of events, your bot simply won't receive them, even if they're happening in servers where your bot is present.
Discord.js V14 aligns closely with Discord's own API versioning (API v10), so intent handling in V14 is stricter and more explicit than in older versions of the library.
The Three Tiers of Intents
Before getting to defaults, it helps to understand that Discord sorts intents into three functional tiers:
| Tier | Description | Examples |
|---|---|---|
| Default (non-privileged) | Available without any special configuration | Guild events, voice state updates, reactions |
| Privileged (opt-in) | Must be explicitly requested and enabled in the Developer Portal | Guild Members, Presence, Message Content |
| Disabled (not requested) | Not listed in your client's intent config — events simply won't arrive | Anything you omit |
What Intents Are Allowed by Default in Discord.js V14?
In Discord.js V14, when you initialize your Client, you must pass intents explicitly in the constructor. There is no automatic default set applied for you — if you pass an empty array or omit intents, your bot will connect but receive almost nothing useful.
That said, the following intents are non-privileged, meaning Discord does not require special approval or portal toggles to use them. You still need to declare them in your code, but they're freely available to any bot:
- Guilds — Receives events when your bot joins/leaves servers, and provides access to guild structure, channels, and roles
- GuildModeration — Formerly GuildBans; covers ban and unban events
- GuildEmojisAndStickers — Events related to emoji and sticker changes
- GuildIntegrations — Integration update events
- GuildWebhooks — Webhook update events
- GuildInvites — Invite creation and deletion
- GuildVoiceStates — Voice channel join/leave/move events
- GuildMessages — Message create/update/delete events in servers (note: message content requires a separate privileged intent)
- GuildMessageReactions — Reaction add/remove events in servers
- GuildMessageTyping — Typing indicators in server channels
- DirectMessages — DM message events
- DirectMessageReactions — Reactions in DMs
- DirectMessageTyping — Typing indicators in DMs
- GuildScheduledEvents — Scheduled event create/update/delete/user events
- AutoModerationConfiguration — AutoMod rule events
- AutoModerationExecution — AutoMod action execution events
These are all accessible without any special approval from Discord, as long as your bot's OAuth2 scopes are set up correctly. 🔓
The Privileged Intents: What Needs Extra Steps
Three intents are classified as privileged and are not freely available by default:
- GuildMembers — Required to receive member join/leave/update events and to access full member lists. Without this, guild.members.fetch() won't return complete data.
- GuildPresences — Needed to track online status and activity data for users.
- MessageContent — Arguably the most impactful for many bots. Without this, message bodies, attachments, embeds, and components in received messages will be empty strings or empty arrays, even if GuildMessages is enabled.
To use any of these, you need to:
- Enable them in the Discord Developer Portal under your bot's settings
- Declare them in your Client intents array in code
For bots in 75 or fewer servers, you can toggle these on freely in the portal. Once your bot crosses 75 servers, Discord requires verification and approval for privileged intents — a process that involves submitting a use-case justification.
How Intents Are Declared in Discord.js V14 Code
In V14, the recommended approach uses the GatewayIntentBits enum from the discord.js package: