Enum 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 guild emote create/modify/delete. Most bots don't need this since they just use the emote 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 if (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:
    JDABuilder.disableIntents(GatewayIntent, GatewayIntent...), JDABuilder.enableIntents(GatewayIntent, GatewayIntent...), DefaultShardManagerBuilder.disableIntents(GatewayIntent, GatewayIntent...), DefaultShardManagerBuilder.enableIntents(GatewayIntent, GatewayIntent...)
    • Enum Constant Detail


        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.

        public static final GatewayIntent GUILD_EMOJIS
        Emote add/update/delete events.

        public static final GatewayIntent GUILD_WEBHOOKS
        Webhook events.

        public static final GatewayIntent GUILD_INVITES
        Invite events.

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

        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().


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

        public static final GatewayIntent GUILD_MESSAGE_REACTIONS
        Message reaction events in guilds.

        public static final GatewayIntent GUILD_MESSAGE_TYPING
        Typing start events in guilds.

        public static final GatewayIntent DIRECT_MESSAGES
        Message events in private channels.

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

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


        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)
        • 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).