Enum GatewayIntent

java.lang.Object
java.lang.Enum<GatewayIntent>
net.dv8tion.jda.api.requests.GatewayIntent
All Implemented Interfaces:
Serializable, Comparable<GatewayIntent>

public enum GatewayIntent extends Enum<GatewayIntent>
Flags which enable or disable specific events from the discord gateway.

The way to use these is very simple. Go through each intent in the following list and decide whether your bot will need these events or not.

  1. GUILD_MEMBERS - This is a privileged gateway intent that is used to update user information and join/leaves (including kicks). This is required to cache all members of a guild (including chunking)
  2. GUILD_BANS - This will only track guild bans and unbans
  3. GUILD_EMOJIS - This will only track custom emoji create/modify/delete. Most bots don't need this since they just use the emoji id anyway.
  4. GUILD_WEBHOOKS - This will only track guild webhook create/update/delete. Most bots don't need this since related events don't contain any useful information about webhook changes.
  5. GUILD_INVITES - This will only track invite create/delete. Most bots don't make use of invites since they are added through OAuth2 authorization by administrators.
  6. GUILD_VOICE_STATES - Required to properly get information of members in voice channels and cache them. You cannot connect to a voice channel without this intent.
  7. GUILD_PRESENCES - This is a privileged gateway intent this is only used to track activity and online-status of a user.
  8. GUILD_MESSAGES - This is used to receive incoming messages in guilds (servers), most bots will need this for commands.
  9. GUILD_MESSAGE_REACTIONS - This is used to track reactions on messages in guilds (servers). Can be useful to make a paginated embed or reaction role management.
  10. GUILD_MESSAGE_TYPING - This is used to track when a user starts typing in guilds (servers). Almost no bot will have a use for this.
  11. DIRECT_MESSAGES - This is used to receive incoming messages in private channels (DMs). You can still send private messages without this intent.
  12. DIRECT_MESSAGE_REACTIONS - This is used to track reactions on messages in private channels (DMs).
  13. DIRECT_MESSAGE_TYPING - This is used to track when a user starts typing in private channels (DMs). Almost no bot will have a use for this.
If an intent is not specifically mentioned to be privileged, it is not required to be on the whitelist to use it (and its related events). To get whitelisted you either need to contact discord support (for bots in more than 100 guilds) or enable it in the developer dashboard of your application.

You must use ChunkingFilter.NONE if GUILD_MEMBERS is disabled. To enable chunking the discord api requires the privileged GUILD_MEMBERS intent.

See Also:
  • Enum Constant Details

    • GUILD_MEMBERS

      public static final GatewayIntent GUILD_MEMBERS
      PRIVILEGED INTENT Events which inform us about member update/leave/join of a guild.
      This is required to chunk all members of a guild. Without this enabled you have to use ChunkingFilter.NONE!

      This will also update user information such as name/avatar.

    • GUILD_BANS

      public static final GatewayIntent GUILD_BANS
      Ban events.
    • GUILD_EMOJIS_AND_STICKERS

      public static final GatewayIntent GUILD_EMOJIS_AND_STICKERS
      Custom emoji and sticker add/update/delete events.
    • GUILD_WEBHOOKS

      public static final GatewayIntent GUILD_WEBHOOKS
      Webhook events.
    • GUILD_INVITES

      public static final GatewayIntent GUILD_INVITES
      Invite events.
    • GUILD_VOICE_STATES

      public static final GatewayIntent GUILD_VOICE_STATES
      Voice state events. This is used to determine which members are connected to a voice channel.
    • GUILD_PRESENCES

      public static final GatewayIntent GUILD_PRESENCES
      PRIVILEGED INTENT Presence updates. This is used to lazy load members and update user properties such as name/avatar.
      This is a very heavy intent! Presence updates are 99% of traffic the bot will receive. To get user update events you should consider using GUILD_MEMBERS instead.

      This intent is primarily used to track Member.getOnlineStatus() and Member.getActivities().

    • GUILD_MESSAGES

      public static final GatewayIntent GUILD_MESSAGES
      Message events from text channels in guilds.
    • GUILD_MESSAGE_REACTIONS

      public static final GatewayIntent GUILD_MESSAGE_REACTIONS
      Message reaction events in guilds.
    • GUILD_MESSAGE_TYPING

      public static final GatewayIntent GUILD_MESSAGE_TYPING
      Typing start events in guilds.
    • DIRECT_MESSAGES

      public static final GatewayIntent DIRECT_MESSAGES
      Message events in private channels.
    • DIRECT_MESSAGE_REACTIONS

      public static final GatewayIntent DIRECT_MESSAGE_REACTIONS
      Message reaction events in private channels.
    • DIRECT_MESSAGE_TYPING

      public static final GatewayIntent DIRECT_MESSAGE_TYPING
      Typing events in private channels.
    • MESSAGE_CONTENT

      public static final GatewayIntent MESSAGE_CONTENT
      PRIVILEGED INTENT Access to message content.

      This specifically affects messages received through the message history of a channel, or through Message Events. The content restriction does not apply if the message mentions the bot directly (using @username), sent by the bot itself, or if the message is a direct message from a PrivateChannel. Affected are all user-generated content fields of a message, such as:

      See Also:
  • Field Details

    • ALL_INTENTS

      public static final int ALL_INTENTS
      Bitmask with all intents enabled.

      To use all intents in your own code you should use EnumSet.allOf(GatewayIntent.class) instead. This value only represents the raw bitmask used in JDA.
      You can use EnumSet.noneOf(GatewayIntent.class) to achieve the opposite.

    • DEFAULT

      public static final int DEFAULT
      All intents with some disabled:
      • GUILD_MEMBERS (because its privileged)
      • GUILD_PRESENCES (because its privileged)
      • MESSAGE_CONTENT (because its privileged)
      • GUILD_WEBHOOKS because its not useful for most bots
      • GUILD_MESSAGE_TYPING because its not useful for most bots
      • DIRECT_MESSAGE_TYPING because its not useful for most bots
      To use these intents you have to pass no other intents to createLight(token) or createDefault(token). You can further configure intents by using enableIntents(intents) and disableIntents(intents).
  • Method Details