Шлюз

События шлюза

События приходят как { "op": "DISPATCH", "t": "ИМЯ", "d": { … } }. Бот получает события только тех серверов, каналов и бесед, к которым у него есть доступ; при потере доступа (кик, роль, права канала) подписка снимается сразу.

Используйте события, чтобы держать своё состояние актуальным, а не опрашивать API: так вы не упрётесь в лимиты.

Сообщения

MESSAGE_CREATE

Новое сообщение в канале или беседе (включая сообщения самого бота).

{ message: Message }
MESSAGE_UPDATE

Сообщение изменено, закреплено или откреплено.

{ message: Message }
MESSAGE_DELETE

Сообщение удалено.

{ channelId, messageId }
REACTION_UPDATE

Кто-то поставил или снял реакцию.

{ channelId, messageId, emoji, userId, added, reactions }
TYPING_START

Кто-то печатает.

{ channelId, userId, at }
POLL_UPDATE

Голоса в опросе изменились.

{ channelId, messageId, poll }

Команды и кнопки

INTERACTION_CREATE

Вызвана команда «/» бота или нажата его кнопка. Ответить — за 3 секунды.

Interaction — см. «Команды «/» и кнопки»

Участники

MEMBER_JOIN

Новый участник сервера.

{ serverId, member: { userId, joinedAt, user } }
MEMBER_LEAVE

Участник вышел, исключён или забанен.

{ serverId, userId, reason? }
MEMBER_UPDATE

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

{ serverId, member: { userId, nickname, roleIds, … , user } }
PRESENCE_UPDATE

Статус или активность участника.

{ userId, status, online, activity }
USER_UPDATE

Участник изменил профиль (имя, аватар).

{ user: User }

Серверы

SERVER_ADD

Бота добавили на сервер (подписка на него уже оформлена).

{ serverId, channels: { id, categoryId }[] }
SERVER_UPDATE

Изменены настройки сервера.

{ server } или { serverId }
SERVER_DELETE

Сервер удалён.

{ serverId }

Каналы и категории

CHANNEL_CREATE

Создан канал.

{ channel }
CHANNEL_UPDATE

Канал изменён.

{ channel }
CHANNEL_DELETE

Канал удалён.

{ channelId, serverId }
CHANNELS_REORDER

Порядок каналов изменён.

{ serverId, … }
CHANNEL_OVERRIDE_UPDATE

Изменились права канала.

{ channelId, … }
CATEGORY_CREATE / CATEGORY_UPDATE / CATEGORY_DELETE

Категории каналов.

{ category } / { categoryId }

Роли

ROLE_CREATE

Создана роль.

{ role }
ROLE_UPDATE

Роль изменена.

{ role }
ROLE_DELETE

Роль удалена.

{ roleId }
ROLES_REORDER

Порядок ролей изменён.

{ serverId, … }

Личные сообщения

DM_CREATE

Открыта новая беседа с ботом.

{ channel: DmChannel }

Пример: приветствие новичков

client.on("memberJoin", async ({ serverId, member }) => {
  const { server } = await client.api("GET", `/servers/${serverId}`);
  if (server.systemChannelId) {
    await client.send(server.systemChannelId, `Добро пожаловать, @${member.user.username}! 👋`);
  }
});