View Source Gateway Intents

The Discord API allows you to fine tune the payloads that are received by your bot through gateway intents.

When connecting to Discord you can instruct Discord on which events you want to receive (i.e. messages, user presences, etc.).

Nostrum allows you to set these intents within your configuration, by default all non-privileged intents are enabled.

To pass intents you should use the following configuration:

config :nostrum,
  token: "bot_token",
  gateway_intents: [
      :guilds,
      # other gateway intents
  ]

Possible intents (and the gateway events they correspond to) are:

guilds:
  - GUILD_CREATE
  - GUILD_UPDATE
  - GUILD_DELETE
  - GUILD_ROLE_CREATE
  - GUILD_ROLE_UPDATE
  - GUILD_ROLE_DELETE
  - CHANNEL_CREATE
  - CHANNEL_UPDATE
  - CHANNEL_DELETE
  - CHANNEL_PINS_UPDATE

guild_members*:
  - GUILD_MEMBER_ADD
  - GUILD_MEMBER_UPDATE
  - GUILD_MEMBER_REMOVE

guild_bans:
  - GUILD_BAN_ADD
  - GUILD_BAN_REMOVE

guild_emojis:
  - GUILD_EMOJIS_UPDATE

guild_integrations:
  - GUILD_INTEGRATIONS_UPDATE

guild_webhooks:
  - WEBHOOKS_UPDATE

guild_invites:
  - INVITE_CREATE
  - INVITE_DELETE

guild_voice_states:
  - VOICE_STATE_UPDATE

guild_presences*:
  - PRESENCE_UPDATE

guild_messages:
  - MESSAGE_CREATE
  - MESSAGE_UPDATE
  - MESSAGE_DELETE
  - MESSAGE_DELETE_BULK

guild_message_reactions:
  - MESSAGE_REACTION_ADD
  - MESSAGE_REACTION_REMOVE
  - MESSAGE_REACTION_REMOVE_ALL
  - MESSAGE_REACTION_REMOVE_EMOJI

guild_message_typing:
  - TYPING_START

direct_messages:
  - MESSAGE_CREATE
  - MESSAGE_UPDATE
  - MESSAGE_DELETE
  - CHANNEL_PINS_UPDATE

direct_message_reactions:
  - MESSAGE_REACTION_ADD
  - MESSAGE_REACTION_REMOVE
  - MESSAGE_REACTION_REMOVE_ALL
  - MESSAGE_REACTION_REMOVE_EMOJI

direct_message_typing:
  - TYPING_START

GUILD_SCHEDULED_EVENTS:
  - GUILD_SCHEDULED_EVENT_CREATE
  - GUILD_SCHEDULED_EVENT_UPDATE
  - GUILD_SCHEDULED_EVENT_DELETE
  - GUILD_SCHEDULED_EVENT_USER_ADD
  - GUILD_SCHEDULED_EVENT_USER_REMOVE

message_content*:
  - MESSAGE_CONTENT

Besides an explicit list of atoms, acceptable configuration values are :all and :nonprivileged.

Note that intents marked with * are privileged intents. You must enable these intents by visiting the Discord Developer portal.

Once your bot passes 100 servers Discord will force you to verify your bot. If you require privileged intents you may need to write additional information on your usage of them.

Nostrum's default value for gateway_intents is :nonprivileged, which enables all non-privileged intents. This is equivalent to setting gateway_intents to the above list without the privileged intents. If you require all intents, including privileged ones, set gateway_intents to :all.

More information on gateway intents can be found in the Discord Developer documentation.