Создание бота
Шаг 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_frominternal_iddiscord_webhook["data"]