Як створити чат-бота в Discord
Бот у Discord може робити все те, що доступно в інших каналах, а також безпосередньо взаємодіяти з вашим сервером: відповідати в каналах, гілках і особистих повідомленнях, додавати реакції, отримувати та надсилати файли, редагувати або видаляти власні повідомлення. Додаткові функції включають модерацію (тайм-аути, вигнання, бани та видалення повідомлень), управління ролями, створення каналів для тікетів і слеш-команди.
Налаштування займає близько десяти хвилин і складається з двох частин: спочатку створіть бота на стороні Discord, а потім підключіть його до вашого проєкту в Mavibot.
Крок 1. Створіть застосунок
Відкрийте Discord Developer Portal і натисніть New Application. Введіть назву — учасники сервера бачитимуть її.
У розділі Installation встановіть Install Link на None. Ви створите посилання для встановлення бота самостійно на Кроці 4 з необхідними дозволами.
Крок 2. Налаштуйте бота
Перейдіть до розділу Bot.
Вимкніть Public Bot. Інакше будь-хто зможе додати вашого бота на свій сервер.
Увімкніть необхідні привілейовані інтенти — без них Discord не надсилатиме боту певні дані:
| Інтент | Для чого потрібен |
|---|---|
| Message Content Intent | Текст повідомлень. Без нього бот бачить, що повідомлення надіслано, але не може побачити його вміст, тому текстові тригери не працюватимуть. |
| Server Members Intent | Події учасників: приєднання, вихід, зміни ролей і нікнеймів. Без нього не працюватимуть привітання нових учасників і автоматичне призначення ролей. |
| Presence Intent | Статус онлайн. Не обов'язковий для роботи бота, його можна не вмикати. |
Крок 3. Отримайте токен бота
У тому ж розділі Bot натисніть Reset Token і скопіюйте отриманий токен. Він відображається лише один раз — збережіть його, він знадобиться на Кроці 6.
Важливо! Токен надає повний доступ до вашого бота. Не публікуйте та не передавайте його. Якщо токен скомпрометовано, натисніть Reset Token знову. Старий токен негайно перестане працювати, і вам потрібно буде перепідключити бота в Mavibot за допомогою нового токена.
Крок 4. Виберіть дозволи
Відкрийте OAuth2 → URL Generator.
У розділі Scopes виберіть:
-
bot— сам бот; -
applications.commands— якщо плануєте використовувати слеш-команди. Без цього скоупа команди не можна зареєструвати на сервері.
Нижче з'явиться розділ Bot Permissions. Виберіть лише ті дозволи, які дійсно потрібні вашому боту — краще не надавати зайвих.
Мінімальні дозволи для обміну повідомленнями
| Дозвіл | Що не працюватиме без нього |
|---|---|
| View Channels | Бот не зможе бачити канали взагалі |
| Send Messages | Бот не зможе відповідати |
| Read Message History | Відповіді на повідомлення та цитування не працюватимуть |
| Embed Links, Attach Files | Посилання з попереднім переглядом і файли не надсилатимуться |
| Add Reactions | Бот не зможе додавати реакції |
Додаткові дозволи для модерації та автоматизації
| Дозвіл | Для чого використовується |
|---|---|
| Manage Messages | Видалення повідомлень інших користувачів і керування закріпленими повідомленнями |
| Moderate Members | Тайм-аути (мути) |
| Kick Members | Вигнання учасників із сервера |
| Ban Members | Бан і розбан учасників |
| Manage Roles | Призначення та зняття ролей |
| Manage Nicknames | Зміна нікнеймів учасників |
| Manage Channels | Створення та видалення каналів, включаючи канали для тікетів |
| Create Instant Invite | Створення запрошень |
Дозволи також можна змінити пізніше в налаштуваннях ролі бота на сервері без перепідключення бота.
Крок 5. Додайте бота на сервер
Скопіюйте URL, згенерований унизу сторінки URL Generator, відкрийте його в браузері та виберіть сервер.
Додати бота може лише власник сервера або учасник із дозволом Manage Server.
Після додавання бота перевірте порядок ролей:
Server Settings → Roles
Роль бота має бути вище ролей, які він призначатиме, і вище ролей учасників, яких він має модерувати.
Це обмеження Discord: бот не може призначити роль, яка знаходиться на тому ж рівні або вище його власної ролі, і не може застосувати тайм-аут або заблокувати учасника, чия роль вища за роль бота.
Крок 6. Залиште поле Interactions Endpoint URL порожнім
Поверніться до розділу General Information вашого застосунку та переконайтеся, що поле Interactions Endpoint URL порожнє.
Якщо в цьому полі щось вказано, Discord перестає надсилати боту кліки по кнопках і взаємодії зі слеш-командами — вони надсилаються на вказаний URL.
З точки зору користувача це виглядає так, ніби кнопки в повідомленнях бота не працюють, а слеш-команди повертають "Application did not respond."
Крок 7. Підключіть бота до проєкту
У вашому проєкті Mavibot відкрийте розділ Channels, натисніть Discord і вставте токен із Кроку 3.
За кілька секунд бот має з'явитися онлайн на вашому сервері Discord. Якщо цього не сталося, переконайтеся, що токен скопійовано повністю та не містить зайвих пробілів.
Перевірте, чи все працює
Надішліть повідомлення в будь-якому каналі сервера, яке має викликати одну з відповідей вашого бота — бот має відповісти.
Якщо бот онлайн, але не відповідає, найімовірніше, не ввімкнено Message Content Intent.
Приєднайтеся до сервера з іншого акаунта або попросіть колегу приєднатися — має спрацювати привітання нового учасника. Якщо ні, перевірте Server Members Intent.
Натисніть кнопку в повідомленні бота. Якщо нічого не відбувається, перевірте Interactions Endpoint URL.
Важливі речі, які варто знати
Розмова в каналі є спільною для всіх
Усі учасники каналу пишуть в одну й ту саму розмову, як у груповому чаті.
Змінні, такі як "хто надіслав повідомлення", стосуються автора останнього повідомлення та перезаписуються наступним — читайте та обробляйте їх одразу в тому ж блоці.
Особисті повідомлення боту та події учасників, такі як приєднання, вихід і зміна ролей, обробляються в окремій розмові для цього учасника.
Особисті повідомлення обмежені Discord
Бот може надіслати особисте повідомлення учаснику лише в тому випадку, якщо учасник перебуває на одному сервері з ботом і не вимкнув особисті повідомлення від учасників сервера в налаштуваннях конфіденційності.
Якщо учасник вимкнув особисті повідомлення, повідомлення не може бути доставлено — це обмеження Discord, яке не можна обійти.
Повні дані вебхука
Якщо ви присвоїте будь-яке значення змінній save_webhook, усі вхідні дані події будуть збережені в змінну discord_webhook.
Це рідко потрібно — майже все, що вам може знадобитися з вебхука, вже доступно через окремі змінні.
Поширені проблеми
| Що відбувається | Чому |
|---|---|
| Бот онлайн, але не реагує на текст | Не ввімкнено Message Content Intent |
| Події приєднання, виходу та зміни ролей не отримуються | Не ввімкнено Server Members Intent |
| Кнопки не працюють, а слеш-команди повертають "Application did not respond" | Заповнено Interactions Endpoint URL |
| Слеш-команди не можна зареєструвати | Бота додано без скоупа applications.commands — згенеруйте нове посилання для встановлення та додайте бота знову |
| Бот не може призначити роль | Роль бота не вище цільової ролі, або бот не має дозволу Manage Roles. Ролі, керовані інтеграціями, включаючи ролі інших ботів, і роль @everyone не можна призначити |
| Бот не може застосувати тайм-аут або заблокувати учасника | Роль учасника вища за роль бота, або бот не має дозволу Moderate Members / Ban Members |
| Бот не бачить певний канал | Дозволи на рівні каналу перевизначають дозволи сервера. Перевірте дозволи ролі бота в налаштуваннях цього каналу |
| Повідомлення не можна видалити | Бот не має дозволу Manage Messages. Discord дозволяє масове видалення лише для повідомлень, молодших за 14 днів |
Що далі
Чат-бот у Discord підтримує ті ж основні функції, що й боти в інших каналах: він може надсилати повідомлення в канали, гілки та особисті повідомлення, додавати реакції, надсилати та отримувати вкладення, а також редагувати або видаляти власні повідомлення.
Про функції керування сервером, доступні з вашого потоку бота, дивіться в розділі "Discord API Functions."
Щоб дізнатися, як побудувати потік повідомлень, дивіться "How to Create a Chatbot for Business."
Щоб дозволити ШІ спілкуватися з клієнтами в Discord, увімкніть AI Assistant — дивіться розділ "AI Assistant."