Створення бота

Крок 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"]