Перейти к содержимому

События Gateway

Dispatch-событие приходит с опкодом 0, полями t (имя события) и d (payload). Каждое событие также инкрементирует s — номер в сессии.

{ "op": 0, "s": 42, "t": "MESSAGE_CREATE", "d": { ... } }

Отписаться от категорий событий, которые боту не нужны, можно через ignored_events в IDENTIFY — передайте туда массив имён событий.

События можно сгруппировать по префиксу:

ПрефиксКатегория
READY, RESUMED, SESSIONS_REPLACEЖизненный цикл сессии
GUILD_*Гильдии, роли, участники, баны, эмоджи, стикеры
CHANNEL_*Каналы и permission overwrites
MESSAGE_*Сообщения, реакции, пины
PRESENCE_*, TYPING_*, USER_*Активность и профили пользователей
VOICE_*, CALL_*Голос и звонки
INVITE_*, WEBHOOKS_*Интеграции
RELATIONSHIP_*Дружбы и блокировки

Ниже — подробные описания событий, с которыми чаще всего работают боты.

Отправляется после успешного IDENTIFY. Содержит информацию о текущем пользователе и первичный снимок гильдий.

{
"v": 1,
"user": {
"id": "1496956937664585746",
"username": "my_bot",
"global_name": null,
"bot": true,
"flags": 0
},
"session_id": "a1b2c3d4e5f6",
"resume_gateway_url": "wss://gateway.floodilka.com",
"guilds": [
{ "id": "142...", "unavailable": true }
],
"user_settings": {}
}

Гильдии помечены unavailable: true — реальные данные придут следом в GUILD_CREATE.

Отправляется в ответ на успешный RESUME. d пустой. После этого события клиент догоняется пропущенными событиями — они приходят до RESUMED.

Новое сообщение в канале, на который у клиента есть READ_MESSAGE_HISTORY.

{
"id": "1465760123456789",
"channel_id": "1465759683653402624",
"guild_id": "1424883034267582464",
"author": {
"id": "974...",
"username": "puncher",
"global_name": "Максим",
"avatar": "abcd1234",
"bot": false
},
"member": {
"roles": ["1424..."],
"joined_at": "2026-04-01T12:00:00.000Z",
"nick": null
},
"content": "привет всем",
"timestamp": "2026-04-23T19:40:59.000Z",
"edited_timestamp": null,
"attachments": [],
"embeds": [],
"mentions": [],
"mention_roles": [],
"mention_everyone": false,
"pinned": false,
"type": 0
}

Поле member присутствует только для сообщений в гильдиях (не в DM).

Изменение сообщения. Payload — объект Message с обновлёнными полями. Поле edited_timestamp больше не null.

{ "id": "1465...", "channel_id": "1465...", "guild_id": "1424..." }

Массовое удаление (обычно через модерацию):

{
"ids": ["1465...", "1465..."],
"channel_id": "1465...",
"guild_id": "1424..."
}
{
"user_id": "974...",
"channel_id": "1465...",
"guild_id": "1424...",
"message_id": "1465...",
"member": { ... },
"emoji": { "id": null, "name": "👍" }
}

emoji.id === null — unicode-эмоджи, name содержит символ. emoji.id !== null — кастомный эмоджи, name — имя, id — snowflake.

Аналогично, но описывает удаление. REMOVE_ALL — очищены все реакции на сообщении.

Полные данные гильдии — приходит после READY (для каждой гильдии из READY.guilds), а также когда бота добавляют в новую гильдию.

{
"id": "1424883034267582464",
"name": "Test server",
"icon": null,
"owner_id": "974...",
"roles": [ ... ],
"emojis": [ ... ],
"channels": [ ... ],
"members": [ ... ],
"voice_states": [ ... ],
"presences": [ ... ],
"member_count": 3,
"features": [],
"system_channel_id": "..."
}

GUILD_UPDATE — частичное изменение гильдии. GUILD_DELETE — бот был удалён или гильдия стала недоступна: {"id": "...", "unavailable": true}.

Новый участник присоединился. Payload — объект Member плюс guild_id:

{
"guild_id": "1424...",
"user": { "id": "...", "username": "...", ... },
"roles": [],
"joined_at": "2026-04-23T20:00:00.000Z",
"nick": null
}
{
"guild_id": "1424...",
"user": { "id": "...", "username": "...", ... }
}

Изменение ролей/ника участника.

Изменения в структуре каналов гильдии. Payload — объект Channel.

Изменение статуса и активностей участника:

{
"user": { "id": "..." },
"guild_id": "1424...",
"status": "online",
"activities": [
{ "name": "Minecraft", "type": 0, "created_at": 1714000000 }
],
"client_status": { "desktop": "online" }
}

Значения status: online, idle, dnd, offline, invisible.

Пользователь начал печатать. Через ~10 секунд событие не повторяется — учитывайте таймаут клиентом.

{
"channel_id": "1465...",
"guild_id": "1424...",
"user_id": "974...",
"member": { ... },
"timestamp": 1714000000
}

Кто-то присоединился, вышел или поменял состояние в голосовом канале:

{
"guild_id": "1424...",
"channel_id": "1465...",
"user_id": "974...",
"member": { ... },
"session_id": "a1b2c3",
"deaf": false,
"mute": false,
"self_deaf": false,
"self_mute": false,
"self_video": false,
"suppress": false
}

Когда channel_id: null — пользователь покинул голос.

  • READY — после IDENTIFY
  • RESUMED — после успешного RESUME
  • GUILD_CREATE — полная гильдия после READY и при добавлении бота
  • GUILD_UPDATE — изменены настройки гильдии
  • GUILD_DELETE — бот удалён или гильдия недоступна
  • GUILD_BAN_ADD / GUILD_BAN_REMOVE — бан или снятие бана
  • GUILD_EMOJIS_UPDATE / GUILD_STICKERS_UPDATE — обновление эмоджи/стикеров
  • GUILD_MEMBER_ADD / GUILD_MEMBER_UPDATE / GUILD_MEMBER_REMOVE
  • GUILD_MEMBER_LIST_UPDATE — частичное обновление списка участников
  • GUILD_MEMBERS_CHUNK — ответ на REQUEST_GUILD_MEMBERS
  • GUILD_ROLE_CREATE / GUILD_ROLE_UPDATE / GUILD_ROLE_UPDATE_BULK / GUILD_ROLE_DELETE
  • CHANNEL_CREATE / CHANNEL_UPDATE / CHANNEL_UPDATE_BULK / CHANNEL_DELETE
  • CHANNEL_PINS_UPDATE — изменён список закреплённых сообщений канала
  • MESSAGE_CREATE / MESSAGE_UPDATE / MESSAGE_DELETE / MESSAGE_DELETE_BULK
  • MESSAGE_REACTION_ADD / MESSAGE_REACTION_REMOVE
  • MESSAGE_REACTION_REMOVE_ALL / MESSAGE_REACTION_REMOVE_EMOJI
  • PRESENCE_UPDATE — изменение статуса / активностей участника
  • TYPING_START — начало печатания
  • VOICE_STATE_UPDATE — join/leave/mute в голосовом канале
  • VOICE_SERVER_UPDATE — выдача LiveKit-endpoint’а и токена (для голосовых ботов)
  • INVITE_CREATE / INVITE_DELETE — создание/удаление инвайт-кода
  • WEBHOOKS_UPDATE — изменены вебхуки канала
  • USER_UPDATE — изменились публичные поля бот-пользователя (аватар, имя, bio)