Создание бота

Шаг 1. Создайте приложение (перейдите по ссылке).

Шаг 2. Добавьте бота (нажмите на кнопку "Add Bot").

Шаг 2.1. В разделе Installation выберите Install Link → None.

Шаг 2.2. В разделе Bot отключите Public Bot, затем включите следующие Intents:

  • Message Content Intent
  • Server Members Intent

Вы также можете включить Presence Intent для использования в будущем.

Шаг 3. Получите токен (Reset Token).

Шаг 4. Добавьте бота на сервер:

  • Перейдите в OAuth2 → URL Generator.
  • В Scopes выберите bot.
  • В Bot Permissions выберите Send Messages, Read Message History и любые другие необходимые разрешения.

Затем откройте сгенерированную ссылку, выберите сервер, на который хотите добавить бота, и подтвердите авторизацию.

Чтобы получить полный вебхук от Discord, просто присвойте любое значение переменной save_webhook.

Если переменная установлена, вебхук будет сохранен в discord_webhook.

Подключение Discord-бота в MaviBot

Теперь перейдите в раздел "Messengers" в вашем проекте в MaviBot:

Затем вставьте токен, скопированный из Discord.

Нажмите кнопку Done.

Функции калькулятора

Ответить на сообщение

discord_reply_to_message(message_id, text) - Эта функция используется для ответа на сообщение.

Параметры Описание
! message_id ID сообщения, на которое вы хотите ответить.
! text Текст ответного сообщения.

Удалить сообщение

discord_delete_message(message_id) - Эта функция используется для удаления сообщения.

Параметры Описание
! message_id ID сообщения для удаления.

Редактировать сообщение

discord_edit_message(message_id, text) - Эта функция используется для редактирования сообщения.

Параметры Описание
! message_id ID сообщения для редактирования.
! text Новый текст сообщения.

Закрепить сообщение

discord_pin_message(message_id) - Эта функция используется для закрепления сообщения.

Параметры Описание
! message_id ID сообщения для закрепления.

Открепить сообщение

discord_unpin_message(message_id) - Эта функция используется для открепления сообщения.

Параметры Описание
! message_id ID сообщения для открепления.

Отправить реакцию на сообщение

discord_send_reaction(message_id, reaction) - Эта функция используется для отправки реакции на сообщение.

Параметры Описание
! message_id ID сообщения, на которое нужно отправить реакцию.
! reaction Реакция для отправки. Вы можете указать одиночный эмодзи (например, ❤️) или ID пользовательского эмодзи на сервере. Информация о том, как получить ID пользовательского эмодзи, приведена ниже.

Удалить реакцию с сообщения в канале

discord_delete_reaction(message_id, reaction, user_id) - Эта функция используется для удаления реакции с сообщения в канале.

Параметры Описание
! message_id ID сообщения, с которого нужно удалить реакцию.
! reaction Реакция для удаления. Вы можете указать одиночный эмодзи (например, ❤️) или ID пользовательского эмодзи на сервере. Информация о том, как получить ID пользовательского эмодзи, приведена ниже.
user_id ID пользователя, чью реакцию вы хотите удалить. Этот параметр необязателен, если вы хотите удалить реакцию текущего бота.

Функции Discord

Следующие функции позволяют управлять серверами Discord, участниками, каналами, ролями, сообщениями и приглашениями.

Модерация участников

Забанить участника

discord_ban_member(user_id, delete_message_seconds) - Эта функция используется для бана участника на сервере Discord.

Параметры Описание
! user_id ID пользователя Discord участника, которого нужно забанить.
delete_message_seconds (Необязательно) Удаляет предыдущие сообщения участника за указанное количество секунд до бана. Установите 0, чтобы сохранить все сообщения.

Разбанить участника

discord_unban_member(user_id) - Эта функция используется для снятия бана с участника.

Параметры Описание
! user_id ID пользователя Discord участника, которого нужно разбанить.

Кикнуть участника

discord_kick_member(user_id) - Эта функция используется для удаления участника с сервера без бана.

Параметры Описание
! user_id ID пользователя Discord участника, которого нужно удалить.

Кикнутый участник может снова присоединиться к серверу, используя действующую ссылку-приглашение.

Отправить участника в тайм-аут

discord_timeout_member(user_id, seconds) - Эта функция используется для отправки участника в тайм-аут (мут).

Параметры Описание
! user_id ID пользователя Discord участника.
! seconds Продолжительность тайм-аута в секундах.

Снять тайм-аут

discord_remove_timeout(user_id) - Эта функция используется для снятия тайм-аута с участника до его истечения.

Параметры Описание
! user_id ID пользователя Discord участника.

Массовое удаление сообщений

discord_bulk_delete_messages(channel_id, message_ids) - Эта функция используется для удаления нескольких сообщений из канала.

Параметры Описание
! channel_id ID канала Discord.
! message_ids Список ID сообщений для удаления.

Сообщения

Отправить сообщение

discord_send_message(channel_id, text) - Эта функция используется для отправки сообщения в канал Discord.

Параметры Описание
! channel_id ID канала Discord.
! text Текст сообщения.

Получить сообщение

discord_get_message(channel_id, message_id) - Эта функция используется для получения информации о сообщении.

Параметры Описание
! channel_id ID канала Discord.
! message_id ID сообщения.

Функция возвращает:

  • Содержимое сообщения
  • Информацию об авторе
  • Вложения

Отправить личное сообщение

discord_send_dm(user_id, text) - Эта функция используется для отправки личного сообщения участнику сервера.

Параметры Описание
! user_id ID пользователя Discord.
! text Текст сообщения.

Роли

Добавить роль

discord_add_role(user_id, role_id) - Эта функция используется для назначения роли участнику.

Параметры Описание
! user_id ID пользователя Discord.
! role_id ID роли Discord.

Удалить роль

discord_remove_role(user_id, role_id) - Эта функция используется для удаления роли у участника.

Параметры Описание
! user_id ID пользователя Discord.
! role_id ID роли Discord.

Изменить никнейм участника

discord_set_nickname(user_id, nickname) - Эта функция используется для изменения никнейма участника на сервере.

Параметры Описание
! user_id ID пользователя Discord.
! nickname Новый никнейм.

Получить роли сервера

discord_get_roles() - Эта функция используется для получения списка ролей сервера.

Функция возвращает:

  • ID роли
  • Название роли

Участники

Получить информацию об участнике

discord_get_member(user_id) - Эта функция используется для получения информации об участнике сервера.

Параметры Описание
! user_id ID пользователя Discord.

Функция возвращает:

  • Роли участника
  • Серверный никнейм
  • Дату присоединения
  • Разрешения

Каналы

Создать канал

discord_create_channel(name, type, parent_id, permission_overwrites) - Эта функция используется для создания нового канала Discord.

Параметры Описание
! name Название канала.
! type Тип канала (например, текстовый или голосовой).
parent_id ID категории, в которой будет создан канал.
permission_overwrites Настройки разрешений канала, определяющие, какие пользователи или роли могут получить доступ к каналу.

Удалить канал

discord_delete_channel(channel_id) - Эта функция используется для удаления канала Discord.

Параметры Описание
! channel_id ID канала Discord.

Установить разрешения канала

discord_set_channel_permission(channel_id, target_id, allow, deny) - Эта функция используется для настройки разрешений канала для пользователя или роли.

Параметры Описание
! channel_id ID канала Discord.
! target_id ID пользователя или ID роли, чьи разрешения будут изменены.
! allow Разрешения, которые нужно предоставить.
! deny Разрешения, которые нужно запретить.

Приглашения

Создать приглашение

discord_create_invite(channel_id, max_age, max_uses) — эта функция используется для создания ссылки-приглашения.

Параметры Описание
! channel_id ID канала Discord.
max_age Время жизни приглашения в секундах. Используйте 0 для бессрочного действия.
max_uses Максимальное количество использований. Используйте 0 для неограниченного числа использований.

Получить приглашения сервера

discord_get_invites() — эта функция используется для получения всех ссылок-приглашений сервера.

Функция возвращает:

  • URL приглашения
  • Количество использований
  • Оставшееся время жизни (если применимо)

События вебхука

Следующие события Discord могут быть перенаправлены в чат-поток:

  • Участник присоединился к серверу
  • Участник покинул сервер
  • Участник был кикнут
  • Участник был забанен
  • Участник был разбанен
  • Роли участника изменены
  • Сообщение отредактировано
  • Сообщение удалено
  • Добавлена реакция
  • Удалена реакция
  • Выполнена слеш-команда
  • Нажата кнопка

Полезная нагрузка вебхука

Данные вебхука доступны в:

discord_webhook["data"]
Поле Описание
author_id ID пользователя Discord — автора сообщения.
username Имя пользователя Discord.
nickname Серверный никнейм.
channel_id ID канала Discord.
guild_id ID сервера Discord.
message_id ID сообщения Discord.
content Текст сообщения.
roles Список ID ролей участника.
is_admin Указывает, есть ли у участника права администратора.

Обратные вызовы

Когда пользователь отправляет реакцию, в чат приходит обратный вызов в следующем формате:

new_like ❤️ uid413984787162726410

Где uid413984787162726410 — это ID пользователя, отправившего реакцию.

Как получить ID пользовательского эмодзи

Если вы отправляете пользовательскую реакцию на сообщение в канале Discord, будет получен обратный вызов в следующем формате:

new_like beer:1479419477396291696 uid413984787162726410

Где beer:1479419477396291696 — это ID реакции. Вы можете скопировать его для использования в функциях, связанных с реакциями.

Как получить ID сообщения

Вы можете получить ID сообщения клиента из вебхука, если включена опция save_webhook. Пример:

data = discord_webhook["data"]
msg_id = data["id"]
result = discord_reply_to_message(msg_id, "Это ответ на сообщение")

Дополнительные обратные вызовы

В дополнение к new_like доступны следующие обратные вызовы:

Обратный вызов Описание
new_like {emoji} uid{user_id} Пользователь добавил реакцию к сообщению.
reaction_remove {emoji} uid{user_id} Пользователь удалил реакцию из сообщения.
message_delete mid{message_id} Сообщение было удалено.
message_edit mid{message_id} Сообщение было отредактировано. Обновленный текст сообщения доступен в данных вебхука.
member_join uid{user_id} Участник присоединился к серверу.
member_leave uid{user_id} Участник покинул сервер.
member_update uid{user_id} Информация об участнике (например, роли или никнейм) была обновлена.
member_ban uid{user_id} Участник был забанен на сервере.
member_unban uid{user_id} Участник был разбанен на сервере.

Переменные обратных вызовов

Для согласованности с существующим форматом событий Discord идентификаторы пользователей и сообщений используют исторические префиксы:

  • ID пользователей возвращаются как uid{user_id}.
  • ID сообщений возвращаются как mid{message_id}.

Следующие переменные также используют эти идентификаторы с префиксами:

  • message_from
  • internal_id
  • discord_webhook["data"]