--- title: 'Events' description: 'Gateway dispatch events sent by the Fluxer gateway.' --- Dispatch events are sent by the gateway to notify the client of state changes. These events are sent with opcode `0` (DISPATCH) and include an event name and associated data. ## Event scopes Events are delivered based on their scope: | Scope | Description | |-------|-------------| | `session` | Sent only to the current session | | `presence` | Sent to all sessions of the current user | | `guild` | Sent to all users in a guild who have permission to receive it | | `channel` | Sent based on channel type (guild channels use guild scope, DMs use presence scope) | ## Event reference | Event | Scope | Description | |-------|-------|-------------| | [`READY`](#ready) | `session` | Contains initial state information sent after identifying. This is the first event received after a successful IDENTIFY. | | [`RESUMED`](#resumed) | `session` | Response to a successful resume request. The client should replay any missed events from the buffer. | | [`SESSIONS_REPLACE`](#sessions-replace) | `presence` | User sessions have been replaced. Sent when sessions are updated across devices. | | [`USER_UPDATE`](#user-update) | `presence` | Properties about the current user changed. | | [`USER_PINNED_DMS_UPDATE`](#user-pinned-dms-update) | `presence` | User pinned DMs have been updated. | | [`USER_SETTINGS_UPDATE`](#user-settings-update) | `presence` | User settings have been updated. | | [`USER_GUILD_SETTINGS_UPDATE`](#user-guild-settings-update) | `presence` | User guild settings have been updated. | | [`USER_NOTE_UPDATE`](#user-note-update) | `presence` | User note for a target user has been updated. | | [`RECENT_MENTION_DELETE`](#recent-mention-delete) | `presence` | A recent mention was deleted from the user's mentions list. | | [`SAVED_MESSAGE_CREATE`](#saved-message-create) | `presence` | A message was saved to the user's saved messages. | | [`SAVED_MESSAGE_DELETE`](#saved-message-delete) | `presence` | A saved message was deleted from the user's saved messages. | | [`FAVORITE_MEME_CREATE`](#favorite-meme-create) | `presence` | A favourite meme was added to the user's collection. | | [`FAVORITE_MEME_UPDATE`](#favorite-meme-update) | `presence` | A favourite meme was updated in the user's collection. | | [`FAVORITE_MEME_DELETE`](#favorite-meme-delete) | `presence` | A favourite meme was deleted from the user's collection. | | [`AUTH_SESSION_CHANGE`](#auth-session-change) | `presence` | Authentication session has changed. Sent when the user's token is rotated due to a security-sensitive operation like password change. | | [`PRESENCE_UPDATE`](#presence-update) | `presence` | User presence was updated. Sent when a friend's or group DM member's status changes. | | [`GUILD_CREATE`](#guild-create) | `guild` | Sent when a guild becomes available, when the user joins a new guild, or for lazy-loading of unavailable guilds. | | [`GUILD_UPDATE`](#guild-update) | `guild` | Sent when a guild is updated. | | [`GUILD_DELETE`](#guild-delete) | `guild` | Sent when a guild becomes unavailable or the user is removed from a guild. | | [`GUILD_MEMBER_ADD`](#guild-member-add) | `guild` | Sent when a new user joins a guild. | | [`GUILD_MEMBER_UPDATE`](#guild-member-update) | `guild` | Sent when a guild member is updated. | | [`GUILD_MEMBER_REMOVE`](#guild-member-remove) | `guild` | Sent when a user is removed from a guild (leave, kick, or ban). | | [`GUILD_ROLE_CREATE`](#guild-role-create) | `guild` | Sent when a guild role is created. | | [`GUILD_ROLE_UPDATE`](#guild-role-update) | `guild` | Sent when a guild role is updated. | | [`GUILD_ROLE_UPDATE_BULK`](#guild-role-update-bulk) | `guild` | Sent when multiple guild roles are updated (e.g. reordering or hoist position changes). | | [`GUILD_ROLE_DELETE`](#guild-role-delete) | `guild` | Sent when a guild role is deleted. | | [`GUILD_EMOJIS_UPDATE`](#guild-emojis-update) | `guild` | Sent when guild emojis were updated. | | [`GUILD_STICKERS_UPDATE`](#guild-stickers-update) | `guild` | Sent when guild stickers were updated. | | [`GUILD_BAN_ADD`](#guild-ban-add) | `guild` | Sent when a user is banned from a guild. | | [`GUILD_BAN_REMOVE`](#guild-ban-remove) | `guild` | Sent when a user is unbanned from a guild. | | [`CHANNEL_CREATE`](#channel-create) | `channel` | Sent when a new channel is created or opened for a user. | | [`CHANNEL_UPDATE`](#channel-update) | `channel` | Sent when a channel is updated. | | [`CHANNEL_UPDATE_BULK`](#channel-update-bulk) | `guild` | Sent when multiple channels are updated (e.g. reordering). | | [`CHANNEL_DELETE`](#channel-delete) | `channel` | Sent when a channel is deleted or closed for a user. | | [`CHANNEL_PINS_UPDATE`](#channel-pins-update) | `channel` | Sent when a message is pinned or unpinned. | | [`CHANNEL_PINS_ACK`](#channel-pins-ack) | `presence` | Sent when channel pins were acknowledged by the user. | | [`CHANNEL_RECIPIENT_ADD`](#channel-recipient-add) | `presence` | Sent when a user is added to a group DM. Dispatched to existing members only (the new user receives CHANNEL_CREATE instead). | | [`CHANNEL_RECIPIENT_REMOVE`](#channel-recipient-remove) | `presence` | Sent when a user is removed from a group DM. | | [`MESSAGE_CREATE`](#message-create) | `channel` | Sent when a message is created. | | [`MESSAGE_UPDATE`](#message-update) | `channel` | Sent when a message is edited or updated (e.g., embeds added). | | [`MESSAGE_DELETE`](#message-delete) | `channel` | Sent when a message is deleted. | | [`MESSAGE_DELETE_BULK`](#message-delete-bulk) | `channel` | Sent when multiple messages are deleted at once. | | [`MESSAGE_REACTION_ADD`](#message-reaction-add) | `channel` | Sent when a user adds a reaction to a message. | | [`MESSAGE_REACTION_REMOVE`](#message-reaction-remove) | `channel` | Sent when a user removes a reaction from a message. | | [`MESSAGE_REACTION_REMOVE_ALL`](#message-reaction-remove-all) | `channel` | Sent when all reactions are removed from a message. | | [`MESSAGE_REACTION_REMOVE_EMOJI`](#message-reaction-remove-emoji) | `channel` | Sent when all reactions for a specific emoji are removed from a message. | | [`MESSAGE_ACK`](#message-ack) | `presence` | Sent when a message is acknowledged (marked as read). | | [`TYPING_START`](#typing-start) | `channel` | Sent when a user starts typing in a channel. | | [`WEBHOOKS_UPDATE`](#webhooks-update) | `guild` | Sent when a guild channel webhook is created, updated, or deleted. Indicates that webhooks for the channel should be re-fetched. | | [`INVITE_CREATE`](#invite-create) | `guild` | Sent when an invite to a channel or pack is created. The payload structure varies based on invite type. | | [`INVITE_DELETE`](#invite-delete) | `guild` | Sent when an invite to a channel is deleted. | | [`RELATIONSHIP_ADD`](#relationship-add) | `presence` | Sent when a user relationship is added (friend request sent/received, blocked). | | [`RELATIONSHIP_UPDATE`](#relationship-update) | `presence` | Sent when a user relationship is updated (friend request accepted, nickname changed). | | [`RELATIONSHIP_REMOVE`](#relationship-remove) | `presence` | Sent when a user relationship is removed (unfriended, unblocked, request cancelled, or replaced by a block). | | [`VOICE_STATE_UPDATE`](#voice-state-update) | `guild` | Sent when a user's voice state is updated (join/leave/move voice channel, mute/deafen). | | [`VOICE_SERVER_UPDATE`](#voice-server-update) | `presence` | Sent when the voice server for a guild or call is updated. | | [`CALL_CREATE`](#call-create) | `presence` | Sent when a DM or group DM call is started. | | [`CALL_UPDATE`](#call-update) | `presence` | Sent when a DM or group DM call is updated (participants join/leave, ringing state changes). | | [`CALL_DELETE`](#call-delete) | `presence` | Sent when a DM or group DM call ends. | ## Gateway types These types are used in gateway event payloads but are not exposed through the HTTP API. ### VoiceStateResponse Represents a user's voice connection state. | Field | Type | Description | |-------|------|-------------| | guild_id | ?snowflake | The guild ID this voice state is for, null if in a DM call | | channel_id | ?snowflake | The channel ID the user is connected to, null if disconnected | | user_id | snowflake | The user ID this voice state is for | | connection_id? | ?string | The unique connection identifier | | session_id? | string | The session ID for this voice state | | member? | [GuildMemberResponse](/resources/guilds#guildmemberresponse) | The guild member data, if in a guild voice channel | | mute | boolean | Whether the user is server muted | | deaf | boolean | Whether the user is server deafened | | self_mute | boolean | Whether the user has muted themselves | | self_deaf | boolean | Whether the user has deafened themselves | | self_video? | boolean | Whether the user has their camera enabled | | self_stream? | boolean | Whether the user is streaming | | is_mobile? | boolean | Whether the user is connected from a mobile device | | viewer_stream_keys? | string[] | An array of stream keys the user is currently viewing | | version? | integer | The voice state version for ordering updates | ### PresenceResponse Represents a user's presence (online status and activity). | Field | Type | Description | |-------|------|-------------| | user | [UserPartialResponse](/resources/users#userpartialresponse) | The user this presence is for | | status | string | The current online status (online, idle, dnd, invisible, offline) | | mobile | boolean | Whether the user is on a mobile device | | afk | boolean | Whether the user is marked as AFK | | custom_status | ?[CustomStatusResponse](#customstatusresponse) | The custom status set by the user | ### CustomStatusResponse Represents a user's custom status. | Field | Type | Description | |-------|------|-------------| | text | string | The custom status text | | emoji_id | ?snowflake | The ID of the custom emoji used in the status | | emoji_name | ?string | The name of the emoji used in the status | | expires_at | ?string | ISO8601 timestamp when the custom status expires | ### SessionResponse Represents a user's gateway session. | Field | Type | Description | |-------|------|-------------| | session_id | string | The session identifier, or "all" for the aggregate session | | status | string | The status for this session (online, idle, dnd, invisible, offline) | | mobile | boolean | Whether this session is on a mobile device | | afk | boolean | Whether this session is marked as AFK | ### ReadStateResponse Represents read state for a channel. | Field | Type | Description | |-------|------|-------------| | id | snowflake | The channel ID for this read state | | mention_count | integer | Number of unread mentions in the channel | | last_message_id | ?snowflake | The ID of the last message read | | last_pin_timestamp | ?string | ISO8601 timestamp of the last pinned message acknowledged | ### GuildReadyResponse Partial guild data sent in the READY event. | Field | Type | Description | |-------|------|-------------| | id | snowflake | The unique identifier for this guild | | unavailable? | boolean | Whether the guild is unavailable due to an outage | | name? | string | The name of the guild | | icon? | ?string | The hash of the guild icon | | owner_id? | snowflake | The ID of the guild owner | | member_count? | integer | Total number of members in the guild | | lazy? | boolean | Whether this guild uses lazy loading | | large? | boolean | Whether this guild is considered large | | joined_at? | string | ISO8601 timestamp of when the user joined | ## Event details ### Session events ### `READY` Contains initial state information sent after identifying. This is the first event received after a successful IDENTIFY. **Scope:** `session` **Dispatched by:** Gateway (internal) **Payload:** | Field | Type | Description | |-------|------|-------------| | version | integer | Gateway protocol version | | session_id | string | Session ID for resuming | | user | [UserPrivateResponse](/resources/users#userprivateresponse) | The current user | | guilds | [GuildReadyResponse](#guildreadyresponse)[] | Guilds the user is in (includes full guild data for non-bots, unavailable placeholders for bots) | | private_channels? | [ChannelResponse](/resources/channels#channelresponse)[] | DM and group DM channels | | relationships? | object[] | User relationships (friends, blocked, pending) with user objects stripped | | users? | [UserPartialResponse](/resources/users#userpartialresponse)[] | Users referenced by relationships, channels, and guild members (deduped) | | presences? | [PresenceResponse](#presenceresponse)[] | Presences of friends and group DM recipients | | sessions? | object[] | Active gateway sessions for the current user | | user_settings? | [UserSettingsResponse](/resources/users#usersettingsresponse) | User settings | | user_guild_settings? | [UserGuildSettingsResponse](/resources/users#userguildsettingsresponse)[] | Per-guild notification settings | | read_states? | [ReadStateResponse](#readstateresponse)[] | Channel read state (last read message IDs) | | notes? | object | User notes keyed by user ID | | country_code? | string | Two-letter country code based on IP geolocation | | pinned_dms? | string[] | Array of pinned DM channel IDs | | favorite_memes? | [FavoriteMemeResponse](/resources/saved_media#favoritememeresponse)[] | User's favourite memes | | auth_session_id_hash? | string | Hash of the authentication session ID | --- ### `RESUMED` Response to a successful resume request. The client should replay any missed events from the buffer. **Scope:** `session` **Dispatched by:** Gateway (internal) **Payload:** Null payload; presence of this event indicates successful resume --- ### `SESSIONS_REPLACE` User sessions have been replaced. Sent when sessions are updated across devices. **Scope:** `presence` **Dispatched by:** Gateway (internal) **Payload:** Payload is an object[]. --- ### User events ### `USER_UPDATE` Properties about the current user changed. **Scope:** `presence` **Dispatched by:** - [`PATCH /users/@me`](/api-reference/users/update-current-user-profile) - `PATCH /users/@me/profile` **Payload:** See [UserPrivateResponse](/resources/users#userprivateresponse) for payload structure. --- ### `USER_PINNED_DMS_UPDATE` User pinned DMs have been updated. **Scope:** `presence` **Dispatched by:** - [`PUT /users/@me/channels/:channel_id/pin`](/api-reference/users/pin-direct-message-channel) - [`DELETE /users/@me/channels/:channel_id/pin`](/api-reference/users/unpin-direct-message-channel) **Payload:** Payload is an string[]. --- ### `USER_SETTINGS_UPDATE` User settings have been updated. **Scope:** `presence` **Dispatched by:** - [`PATCH /users/@me/settings`](/api-reference/users/update-current-user-settings) **Payload:** See [UserSettingsResponse](/resources/users#usersettingsresponse) for payload structure. --- ### `USER_GUILD_SETTINGS_UPDATE` User guild settings have been updated. **Scope:** `presence` **Dispatched by:** - [`PATCH /users/@me/guilds/:guild_id/settings`](/api-reference/users/update-guild-settings-for-user) **Payload:** See [UserGuildSettingsResponse](/resources/users#userguildsettingsresponse) for payload structure. --- ### `USER_NOTE_UPDATE` User note for a target user has been updated. **Scope:** `presence` **Dispatched by:** - [`PUT /users/@me/notes/:user_id`](/api-reference/users/set-note-on-user) **Payload:** | Field | Type | Description | |-------|------|-------------| | id | string | User ID the note is about | | note | string | The note content | --- ### User content events ### `RECENT_MENTION_DELETE` A recent mention was deleted from the user's mentions list. **Scope:** `presence` **Dispatched by:** - [`DELETE /users/@me/mentions/:message_id`](/api-reference/users/delete-mention) **Payload:** | Field | Type | Description | |-------|------|-------------| | message_id | string | ID of the deleted mention's message | --- ### `SAVED_MESSAGE_CREATE` A message was saved to the user's saved messages. **Scope:** `presence` **Dispatched by:** - [`POST /users/@me/saved-messages`](/api-reference/users/save-message) **Payload:** See [MessageResponse](/resources/channels#messageresponse) for payload structure. --- ### `SAVED_MESSAGE_DELETE` A saved message was deleted from the user's saved messages. **Scope:** `presence` **Dispatched by:** - [`DELETE /users/@me/saved-messages/:message_id`](/api-reference/users/unsave-message) **Payload:** | Field | Type | Description | |-------|------|-------------| | message_id | string | ID of the deleted saved message | --- ### Favourite memes events ### `FAVORITE_MEME_CREATE` A favourite meme was added to the user's collection. **Scope:** `presence` **Dispatched by:** - [`POST /users/@me/memes`](/api-reference/saved-media/create-meme-from-url) - [`POST /channels/:channel_id/messages/:message_id/memes`](/api-reference/saved-media/create-meme-from-message) **Payload:** See [FavoriteMemeResponse](/resources/saved_media#favoritememeresponse) for payload structure. --- ### `FAVORITE_MEME_UPDATE` A favourite meme was updated in the user's collection. **Scope:** `presence` **Dispatched by:** - [`PATCH /users/@me/memes/:meme_id`](/api-reference/saved-media/update-favorite-meme) **Payload:** See [FavoriteMemeResponse](/resources/saved_media#favoritememeresponse) for payload structure. --- ### `FAVORITE_MEME_DELETE` A favourite meme was deleted from the user's collection. **Scope:** `presence` **Dispatched by:** - [`DELETE /users/@me/memes/:meme_id`](/api-reference/saved-media/delete-favorite-meme) **Payload:** | Field | Type | Description | |-------|------|-------------| | meme_id | string | ID of the deleted favourite meme | --- ### Authentication events ### `AUTH_SESSION_CHANGE` Authentication session has changed. Sent when the user's token is rotated due to a security-sensitive operation like password change. **Scope:** `presence` **Dispatched by:** - [`PATCH /users/@me`](/api-reference/users/update-current-user-profile) (when password is changed) **Payload:** | Field | Type | Description | |-------|------|-------------| | old_auth_session_id_hash | string | Base64url-encoded hash of the old session ID | | new_auth_session_id_hash | string | Base64url-encoded hash of the new session ID | | new_token | string | The new authentication token | --- ### Presence events ### `PRESENCE_UPDATE` User presence was updated. Sent when a friend's or group DM member's status changes. **Scope:** `presence` **Dispatched by:** Gateway (internal) Dispatched to users who are subscribed to the target user's presence (friends, group DM members) **Payload:** | Field | Type | Description | |-------|------|-------------| | user | object | Normalized user object | | status | string | User's current status | | mobile | boolean | Whether the user has any mobile session active | | afk | boolean | Whether the user is marked as AFK | | custom_status | ?object | User's custom status (null if offline/invisible or not set) | --- ### Guild events ### `GUILD_CREATE` Sent when a guild becomes available, when the user joins a new guild, or for lazy-loading of unavailable guilds. **Scope:** `guild` **Dispatched by:** - [`POST /guilds`](/api-reference/guilds/create-guild) - [`POST /invites/:invite_code`](/api-reference/invites/accept-invite) - Gateway (internal) **Payload:** See [GuildResponse](/resources/guilds#guildresponse) for payload structure. **Additional fields:** | Field | Type | Description | |-------|------|-------------| | channels | [ChannelResponse](/resources/channels#channelresponse)[] | Channels in the guild | | members | [GuildMemberResponse](/resources/guilds#guildmemberresponse)[] | Members in the guild (user field contains only id for deduplication) | | presences | [PresenceResponse](#presenceresponse)[] | Presences of online members | | voice_states | [VoiceStateResponse](#voicestateresponse)[] | Voice states of members in voice channels | | joined_at | string | When the current user joined the guild | --- ### `GUILD_UPDATE` Sent when a guild is updated. **Scope:** `guild` **Dispatched by:** - [`PATCH /guilds/:guild_id`](/api-reference/guilds/update-guild-settings) **Payload:** See [GuildResponse](/resources/guilds#guildresponse) for payload structure. --- ### `GUILD_DELETE` Sent when a guild becomes unavailable or the user is removed from a guild. **Scope:** `guild` **Dispatched by:** - `DELETE /guilds/:guild_id` - [`DELETE /users/@me/guilds/:guild_id`](/api-reference/guilds/leave-guild) - Gateway (internal) **Payload:** | Field | Type | Description | |-------|------|-------------| | id | string | Guild ID | | unavailable? | boolean | True if the guild is unavailable due to an outage (not a leave/kick) | --- ### Guild members events ### `GUILD_MEMBER_ADD` Sent when a new user joins a guild. **Scope:** `guild` **Dispatched by:** - [`POST /invites/:invite_code`](/api-reference/invites/accept-invite) - `PUT /guilds/:guild_id/members/:user_id` **Payload:** See [GuildMemberResponse](/resources/guilds#guildmemberresponse) for payload structure. --- ### `GUILD_MEMBER_UPDATE` Sent when a guild member is updated. **Scope:** `guild` **Dispatched by:** - [`PATCH /guilds/:guild_id/members/:user_id`](/api-reference/guilds/update-guild-member) - [`PATCH /guilds/:guild_id/members/@me`](/api-reference/guilds/update-current-user-guild-member) - [`PUT /guilds/:guild_id/members/:user_id/roles/:role_id`](/api-reference/guilds/add-role-to-guild-member) - [`DELETE /guilds/:guild_id/members/:user_id/roles/:role_id`](/api-reference/guilds/remove-role-from-guild-member) **Payload:** See [GuildMemberResponse](/resources/guilds#guildmemberresponse) for payload structure. --- ### `GUILD_MEMBER_REMOVE` Sent when a user is removed from a guild (leave, kick, or ban). **Scope:** `guild` **Dispatched by:** - [`DELETE /guilds/:guild_id/members/:user_id`](/api-reference/guilds/remove-guild-member) - [`DELETE /users/@me/guilds/:guild_id`](/api-reference/guilds/leave-guild) - [`PUT /guilds/:guild_id/bans/:user_id`](/api-reference/guilds/ban-guild-member) **Payload:** | Field | Type | Description | |-------|------|-------------| | user | object | Partial user object containing only the user ID | --- ### Guild roles events ### `GUILD_ROLE_CREATE` Sent when a guild role is created. **Scope:** `guild` **Dispatched by:** - [`POST /guilds/:guild_id/roles`](/api-reference/guilds/create-guild-role) **Payload:** | Field | Type | Description | |-------|------|-------------| | role | [GuildRoleResponse](/resources/guilds#guildroleresponse) | The created role | --- ### `GUILD_ROLE_UPDATE` Sent when a guild role is updated. **Scope:** `guild` **Dispatched by:** - [`PATCH /guilds/:guild_id/roles/:role_id`](/api-reference/guilds/update-guild-role) **Payload:** | Field | Type | Description | |-------|------|-------------| | role | [GuildRoleResponse](/resources/guilds#guildroleresponse) | The updated role | --- ### `GUILD_ROLE_UPDATE_BULK` Sent when multiple guild roles are updated (e.g. reordering or hoist position changes). **Scope:** `guild` **Dispatched by:** - [`PATCH /guilds/:guild_id/roles`](/api-reference/guilds/update-role-positions) - [`PATCH /guilds/:guild_id/roles/hoist-positions`](/api-reference/guilds/update-role-hoist-positions) - [`DELETE /guilds/:guild_id/roles/hoist-positions`](/api-reference/guilds/reset-role-hoist-positions) **Payload:** | Field | Type | Description | |-------|------|-------------| | roles | [GuildRoleResponse](/resources/guilds#guildroleresponse)[] | The updated roles | --- ### `GUILD_ROLE_DELETE` Sent when a guild role is deleted. **Scope:** `guild` **Dispatched by:** - [`DELETE /guilds/:guild_id/roles/:role_id`](/api-reference/guilds/delete-guild-role) **Payload:** | Field | Type | Description | |-------|------|-------------| | role_id | string | ID of the deleted role | --- ### Guild content events ### `GUILD_EMOJIS_UPDATE` Sent when guild emojis were updated. **Scope:** `guild` **Dispatched by:** - [`POST /guilds/:guild_id/emojis`](/api-reference/guilds/create-guild-emoji) - [`POST /guilds/:guild_id/emojis/bulk`](/api-reference/guilds/bulk-create-guild-emojis) - [`PATCH /guilds/:guild_id/emojis/:emoji_id`](/api-reference/guilds/update-guild-emoji) - [`DELETE /guilds/:guild_id/emojis/:emoji_id`](/api-reference/guilds/delete-guild-emoji) **Payload:** | Field | Type | Description | |-------|------|-------------| | emojis | [GuildEmojiResponse](/resources/guilds#guildemojiresponse)[] | Array of all emojis in the guild | --- ### `GUILD_STICKERS_UPDATE` Sent when guild stickers were updated. **Scope:** `guild` **Dispatched by:** - [`POST /guilds/:guild_id/stickers`](/api-reference/guilds/create-guild-sticker) - [`POST /guilds/:guild_id/stickers/bulk`](/api-reference/guilds/bulk-create-guild-stickers) - [`PATCH /guilds/:guild_id/stickers/:sticker_id`](/api-reference/guilds/update-guild-sticker) - [`DELETE /guilds/:guild_id/stickers/:sticker_id`](/api-reference/guilds/delete-guild-sticker) **Payload:** | Field | Type | Description | |-------|------|-------------| | stickers | [GuildStickerResponse](/resources/packs#guildstickerresponse)[] | Array of all stickers in the guild | --- ### Guild moderation events ### `GUILD_BAN_ADD` Sent when a user is banned from a guild. **Scope:** `guild` **Dispatched by:** - [`PUT /guilds/:guild_id/bans/:user_id`](/api-reference/guilds/ban-guild-member) **Payload:** | Field | Type | Description | |-------|------|-------------| | guild_id | string | Guild ID | | user | object | Partial user object | --- ### `GUILD_BAN_REMOVE` Sent when a user is unbanned from a guild. **Scope:** `guild` **Dispatched by:** - [`DELETE /guilds/:guild_id/bans/:user_id`](/api-reference/guilds/unban-guild-member) **Payload:** | Field | Type | Description | |-------|------|-------------| | guild_id | string | Guild ID | | user | object | Partial user object | --- ### Channel events ### `CHANNEL_CREATE` Sent when a new channel is created or opened for a user. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope for each recipient **Dispatched by:** - [`POST /guilds/:guild_id/channels`](/api-reference/guilds/create-guild-channel) - [`POST /users/@me/channels`](/api-reference/users/create-private-channel) - [`PUT /channels/:channel_id/recipients/:user_id`](/api-reference/channels/add-recipient-to-group-dm) - [`POST /invites/:invite_code`](/api-reference/invites/accept-invite) (group DM invites) **Payload:** See [ChannelResponse](/resources/channels#channelresponse) for payload structure. --- ### `CHANNEL_UPDATE` Sent when a channel is updated. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope **Dispatched by:** - [`PATCH /channels/:channel_id`](/api-reference/channels/update-channel-settings) - [`PUT /channels/:channel_id/permissions/:overwrite_id`](/api-reference/channels/set-permission-overwrite-for-channel) - [`DELETE /channels/:channel_id/permissions/:overwrite_id`](/api-reference/channels/delete-permission-overwrite) **Payload:** See [ChannelResponse](/resources/channels#channelresponse) for payload structure. --- ### `CHANNEL_UPDATE_BULK` Sent when multiple channels are updated (e.g. reordering). **Scope:** `guild` **Dispatched by:** - [`PATCH /guilds/:guild_id/channels`](/api-reference/guilds/update-channel-positions) **Payload:** | Field | Type | Description | |-------|------|-------------| | channels | [ChannelResponse](/resources/channels#channelresponse)[] | Array of updated channels (filtered by user permissions) | --- ### `CHANNEL_DELETE` Sent when a channel is deleted or closed for a user. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope for each recipient **Dispatched by:** - [`DELETE /channels/:channel_id`](/api-reference/channels/delete-a-channel) - [`DELETE /channels/:channel_id/recipients/:user_id`](/api-reference/channels/remove-recipient-from-group-dm) **Payload:** See [ChannelResponse](/resources/channels#channelresponse) for payload structure. --- ### `CHANNEL_PINS_UPDATE` Sent when a message is pinned or unpinned. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope **Dispatched by:** - [`PUT /channels/:channel_id/pins/:message_id`](/api-reference/channels/pin-a-message) - [`DELETE /channels/:channel_id/pins/:message_id`](/api-reference/channels/unpin-a-message) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | last_pin_timestamp | ?string | ISO 8601 timestamp of the last pinned message, or null if no pins remain | --- ### `CHANNEL_PINS_ACK` Sent when channel pins were acknowledged by the user. **Scope:** `presence` **Dispatched by:** - [`POST /channels/:channel_id/pins/ack`](/api-reference/channels/acknowledge-new-pin-notifications) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | timestamp | string | Timestamp of acknowledgement | --- ### Group DM events ### `CHANNEL_RECIPIENT_ADD` Sent when a user is added to a group DM. Dispatched to existing members only (the new user receives CHANNEL_CREATE instead). **Scope:** `presence` **Dispatched by:** - [`PUT /channels/:channel_id/recipients/:user_id`](/api-reference/channels/add-recipient-to-group-dm) - [`POST /invites/:invite_code`](/api-reference/invites/accept-invite) (group DM invites) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID of the group DM | | user | [UserPartialResponse](/resources/users#userpartialresponse) | The user that was added | --- ### `CHANNEL_RECIPIENT_REMOVE` Sent when a user is removed from a group DM. **Scope:** `presence` **Dispatched by:** - [`DELETE /channels/:channel_id/recipients/:user_id`](/api-reference/channels/remove-recipient-from-group-dm) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID of the group DM | | user | [UserPartialResponse](/resources/users#userpartialresponse) | The user that was removed | --- ### Message events ### `MESSAGE_CREATE` Sent when a message is created. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope; personal notes dispatch to presence scope **Dispatched by:** - [`POST /channels/:channel_id/messages`](/api-reference/channels/send-a-message) - [`POST /webhooks/:webhook_id/:token`](/api-reference/webhooks/execute-webhook) - [`POST /webhooks/:webhook_id/:token/github`](/api-reference/webhooks/execute-github-webhook) - [`POST /webhooks/:webhook_id/:token/slack`](/api-reference/webhooks/execute-slack-webhook) - [`POST /webhooks/:webhook_id/:token/sentry`](/api-reference/webhooks/execute-sentry-webhook) **Payload:** See [MessageResponse](/resources/channels#messageresponse) for payload structure. **Additional fields:** | Field | Type | Description | |-------|------|-------------| | channel_type | integer | Type of the channel the message was sent in | --- ### `MESSAGE_UPDATE` Sent when a message is edited or updated (e.g., embeds added). **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope **Dispatched by:** - [`PATCH /channels/:channel_id/messages/:message_id`](/api-reference/channels/edit-a-message) - `internal:embed_processing` - `internal:pin_update` - `internal:reaction_update` **Payload:** See [MessageResponse](/resources/channels#messageresponse) for payload structure. --- ### `MESSAGE_DELETE` Sent when a message is deleted. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope **Dispatched by:** - [`DELETE /channels/:channel_id/messages/:message_id`](/api-reference/channels/delete-a-message) - `internal:admin_message_delete` - `internal:bulk_delete_user_messages` **Payload:** | Field | Type | Description | |-------|------|-------------| | id | string | ID of the deleted message | | channel_id | string | Channel ID | | content? | string | Content of the deleted message (for audit purposes) | | author_id? | string | ID of the message author | --- ### `MESSAGE_DELETE_BULK` Sent when multiple messages are deleted at once. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope **Dispatched by:** - [`POST /channels/:channel_id/messages/bulk-delete`](/api-reference/channels/bulk-delete-messages) - `internal:bulk_delete_user_messages` **Payload:** | Field | Type | Description | |-------|------|-------------| | ids | string[] | IDs of the deleted messages | | channel_id | string | Channel ID | --- ### Message reactions events ### `MESSAGE_REACTION_ADD` Sent when a user adds a reaction to a message. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope. **Dispatched by:** - [`PUT /channels/:channel_id/messages/:message_id/reactions/:emoji/@me`](/api-reference/channels/add-reaction-to-message) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | message_id | string | Message ID | | emoji | object | The emoji used | | user_id | string | ID of the user who reacted | | session_id? | string | Session ID of the user who reacted | | guild_id? | string | Guild ID (only present for guild channels) | | member? | [GuildMemberResponse](/resources/guilds#guildmemberresponse) | Guild member object (only present for guild channels) | --- ### `MESSAGE_REACTION_REMOVE` Sent when a user removes a reaction from a message. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope. **Dispatched by:** - [`DELETE /channels/:channel_id/messages/:message_id/reactions/:emoji/@me`](/api-reference/channels/remove-own-reaction-from-message) - [`DELETE /channels/:channel_id/messages/:message_id/reactions/:emoji/:user_id`](/api-reference/channels/remove-reaction-from-message) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | message_id | string | Message ID | | emoji | object | The emoji that was removed | | user_id | string | ID of the user whose reaction was removed | | session_id? | string | Session ID of the user whose reaction was removed | | guild_id? | string | Guild ID (only present for guild channels) | | member? | [GuildMemberResponse](/resources/guilds#guildmemberresponse) | Guild member object (only present for guild channels) | --- ### `MESSAGE_REACTION_REMOVE_ALL` Sent when all reactions are removed from a message. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope. **Dispatched by:** - [`DELETE /channels/:channel_id/messages/:message_id/reactions`](/api-reference/channels/remove-all-reactions-from-message) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | message_id | string | Message ID | --- ### `MESSAGE_REACTION_REMOVE_EMOJI` Sent when all reactions for a specific emoji are removed from a message. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope. **Dispatched by:** - [`DELETE /channels/:channel_id/messages/:message_id/reactions/:emoji`](/api-reference/channels/remove-all-reactions-with-emoji) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | message_id | string | Message ID | | emoji | object | The emoji that was removed | --- ### Read state events ### `MESSAGE_ACK` Sent when a message is acknowledged (marked as read). **Scope:** `presence` – Always dispatched to the user's presence scope only **Dispatched by:** - [`POST /channels/:channel_id/messages/:message_id/ack`](/api-reference/channels/acknowledge-a-message) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | message_id | string | ID of the last read message | | mention_count | integer | Remaining unread mention count after this acknowledgement | | manual? | boolean | Whether this was a manual acknowledgement | --- ### Typing events ### `TYPING_START` Sent when a user starts typing in a channel. **Scope:** `channel` – Guild channels dispatch to guild scope; DMs dispatch to presence scope. May be disabled per-guild via guild settings. **Dispatched by:** - [`POST /channels/:channel_id/typing`](/api-reference/channels/indicate-typing-activity) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID | | user_id | string | ID of the user who started typing | | timestamp | integer | Unix timestamp (milliseconds) when typing started | | guild_id? | string | Guild ID (only present for guild channels) | | member? | [GuildMemberResponse](/resources/guilds#guildmemberresponse) | Guild member object (only present for guild channels) | --- ### Webhooks events ### `WEBHOOKS_UPDATE` Sent when a guild channel webhook is created, updated, or deleted. Indicates that webhooks for the channel should be re-fetched. **Scope:** `guild` **Dispatched by:** - [`POST /channels/:channel_id/webhooks`](/api-reference/webhooks/create-webhook) - [`PATCH /webhooks/:webhook_id`](/api-reference/webhooks/update-webhook) - [`DELETE /webhooks/:webhook_id`](/api-reference/webhooks/delete-webhook) - [`PATCH /webhooks/:webhook_id/:token`](/api-reference/webhooks/update-webhook-with-token) - [`DELETE /webhooks/:webhook_id/:token`](/api-reference/webhooks/delete-webhook-with-token) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID whose webhooks were updated | --- ### Invites events ### `INVITE_CREATE` Sent when an invite to a channel or pack is created. The payload structure varies based on invite type. **Scope:** `guild` – Guild scope for guild invites (MANAGE_CHANNELS permission required), presence scope for group DM invites (sent to all recipients) **Dispatched by:** - [`POST /channels/:channel_id/invites`](/api-reference/invites/create-channel-invite) - [`POST /packs/:pack_id/invites`](/api-reference/invites/create-pack-invite) **Payload:** Empty payload. --- ### `INVITE_DELETE` Sent when an invite to a channel is deleted. **Scope:** `guild` – Guild scope for guild invites (MANAGE_CHANNELS permission required), presence scope for group DM invites (sent to all recipients) **Dispatched by:** - [`DELETE /invites/:invite_code`](/api-reference/invites/delete-invite) **Payload:** | Field | Type | Description | |-------|------|-------------| | code | string | The invite code that was deleted | | channel_id? | string | Channel ID the invite was for (present for guild and group DM invites) | | guild_id? | string | Guild ID (present for guild invites only) | --- ### Relationships events ### `RELATIONSHIP_ADD` Sent when a user relationship is added (friend request sent/received, blocked). **Scope:** `presence` **Dispatched by:** - [`PUT /users/@me/relationships/:user_id`](/api-reference/users/accept-or-update-friend-request) - [`POST /users/@me/relationships`](/api-reference/users/send-friend-request-by-tag) - [`POST /users/@me/relationships/:user_id`](/api-reference/users/send-friend-request) **Payload:** See [RelationshipResponse](/resources/users#relationshipresponse) for payload structure. --- ### `RELATIONSHIP_UPDATE` Sent when a user relationship is updated (friend request accepted, nickname changed). **Scope:** `presence` **Dispatched by:** - [`PUT /users/@me/relationships/:user_id`](/api-reference/users/accept-or-update-friend-request) - [`PATCH /users/@me/relationships/:user_id`](/api-reference/users/update-relationship-nickname) **Payload:** See [RelationshipResponse](/resources/users#relationshipresponse) for payload structure. --- ### `RELATIONSHIP_REMOVE` Sent when a user relationship is removed (unfriended, unblocked, request cancelled, or replaced by a block). **Scope:** `presence` **Dispatched by:** - [`DELETE /users/@me/relationships/:user_id`](/api-reference/users/remove-relationship) - [`PUT /users/@me/relationships/:user_id`](/api-reference/users/accept-or-update-friend-request) **Payload:** | Field | Type | Description | |-------|------|-------------| | id | string | ID of the user whose relationship was removed | --- ### Voice events ### `VOICE_STATE_UPDATE` Sent when a user's voice state is updated (join/leave/move voice channel, mute/deafen). **Scope:** `guild` **Dispatched by:** Gateway (internal) Triggered by client sending VOICE_STATE_UPDATE opcode (4) **Payload:** | Field | Type | Description | |-------|------|-------------| | guild_id? | string | Guild ID (only present for guild voice, not for DM calls) | | channel_id? | ?string | Channel ID the user is in (null if disconnected) | | user_id | string | User ID | | connection_id | string | Connection ID for this voice state | | session_id? | string | Session ID for this voice state | | member? | [GuildMemberResponse](/resources/guilds#guildmemberresponse) | Guild member object (if guild voice) | | deaf | boolean | Whether the user is server deafened | | mute | boolean | Whether the user is server muted | | self_deaf | boolean | Whether the user is self deafened | | self_mute | boolean | Whether the user is self muted | | self_video | boolean | Whether the user's camera is on | | self_stream | boolean | Whether the user is streaming | | is_mobile | boolean | Whether the user is connected from a mobile device | | viewer_stream_keys? | string[] | An array of stream keys the user is currently viewing | | version | integer | Voice state version number, incremented on each update | --- ### `VOICE_SERVER_UPDATE` Sent when the voice server for a guild or call is updated. **Scope:** `presence` **Dispatched by:** Gateway (internal) Sent after joining a voice channel or when the voice server changes. For guild voice, includes guild_id. For DM calls, includes channel_id. **Payload:** | Field | Type | Description | |-------|------|-------------| | token | string | Voice connection token for authenticating with the voice server | | endpoint | string | Voice server host (hostname:port) | | connection_id | string | Connection ID for this voice connection | | guild_id? | string | Guild ID (present for guild voice channels) | | channel_id? | string | Channel ID (present for DM calls) | --- ### Calls events ### `CALL_CREATE` Sent when a DM or group DM call is started. **Scope:** `presence` **Dispatched by:** Gateway (internal) Dispatched to all recipients of the DM/group DM when a call is initiated **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID of the call | | message_id | string | ID of the call message | | region? | ?string | Voice region for the call | | ringing | string[] | Array of user IDs currently being rung | | voice_states | [VoiceStateResponse](#voicestateresponse)[] | Voice states of current participants in the call | --- ### `CALL_UPDATE` Sent when a DM or group DM call is updated (participants join/leave, ringing state changes). **Scope:** `presence` **Dispatched by:** Gateway (internal) Dispatched to all recipients when call state changes **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID of the call | | message_id | string | ID of the call message | | region? | ?string | Voice region for the call | | ringing | string[] | Array of user IDs currently being rung | | voice_states | [VoiceStateResponse](#voicestateresponse)[] | Voice states of current participants in the call | --- ### `CALL_DELETE` Sent when a DM or group DM call ends. **Scope:** `presence` **Dispatched by:** Gateway (internal) Dispatched to all recipients when the call terminates (all participants leave or timeout) **Payload:** | Field | Type | Description | |-------|------|-------------| | channel_id | string | Channel ID of the ended call | ---