Зміст:
У статті ми розповімо про те, як створюється додаток для бота, виконується перша авторизація на сервері та пишеться загальний код для нормалізації роботи. Маючи "каркас", ви вже можете додавати користувацькі команди та одразу перевіряти, як вони працюють.
Створення додатку та авторизація бота
Далі йтиметься про два різні методи створення бота — за допомогою JavaScript та Python. Кожен з них має свої особливості та нюанси, але метод створення додатку та авторизації бота на сервері залишається однаковим, оскільки не залежить від вибраної мови програмування.Після цього ви зможете перейти до підбору бібліотеки та роботи з кодом.
Перейти на Discord Developer Portal
- Перейдіть за посиланням вище, щоб потрапити на головну сторінку порталу для розробників у Discord. Використовуйте особисті авторизаційні дані для входу в акаунт.
- Створіть новий додаток, натиснувши кнопку "New Application".
- Введіть ім'я додатка та підтвердіть його створення.
- Розгорніть меню сайту, клацнувши по кнопці з трьома горизонтальними лініями.
- З появившогося списку виберіть розділ налаштувань "Bot".
- Приступіть до додавання нового бота для цього додатка.
- Підтвердіть відображене сповіщення, натиснувши "Yes, do it".
- По завершенню сайт оновиться і відкриється сторінка бота, де ви можете змінити його назву, скопіювати токен або додати іконку, яка буде відображатися і в Дискорді.
- Однак зараз бот ще не позначений як такий і для нього не встановлені дозволи, тому через те ж саме меню перейдіть до розділу "OAuth2".
- У списку "Scopes" відмітьте галочкою "bot", позначивши тип створеного додатка.
- Знайдіть наступний блок — "Bot Permissions" і встановіть галочки навпроти всіх дозволів, які ви хочете надати створюваному боту.
- Те ж саме зробіть і з іншими типами дозволів, вони відповідають доступним безпосередньо в Discord для ролей.
- Тепер бот готовий для авторизації. На цій же сторінці знайдіть рядок зі посиланням і скопіюйте його.
- Вставте в адресний рядок і перейдіть за ним. У появившійся формі виберіть сервер для авторизації. Якщо у вас ще немає власного сервера, створіть його, а потім поверніться до процесу підключення бота.
Докладніше: Створення сервера в Discord
- Ознайомтеся зі списком усіх дозволів і натисніть на "Авторизувати".
- Залишилося тільки підтвердити з'явлену на екрані капчу.
- Відкрийте відповідний сервер у Discord і переконайтеся, що бот знаходиться у списку учасників. Поки що він ще офлайн, а запуск стане доступним після написання "тіла" бота за допомогою Python або JS, чим ми і займемося далі.

















Вибір середовища розробки
Перед початком роботи з кодом у згаданих мовах програмування уточнимо, що вам знадобиться встановити текстовий редактор або спеціальне середовище розробки, що підтримує синтаксис Python або JavaScript (в залежності від вибраного). Звичайно, можна використовувати просто "Блокнот", але за зручністю він поступається спеціалізованим програмам.
Докладніше:
Вибір середовища розробки для програмування

Варіант 1: Python і бібліотека discord
Якщо раніше ви не стикалися з мовами програмування або знайомі з ними лише поверхнево, створення бота для Discord на Python — найкращий вибір. Ця ЯП простіша для навчання, компактна і має логічно зрозумілий синтаксис, тому ідеально підходить новачкам. До того ж в мережі є величезна кількість вихідників з різними командами або вже готовими ботами, які нічого не заважає скопіювати і використовувати у своїх цілях.У наступних кроках ви дізнаєтеся, як створити "каркас" бота на Python і запустити його, щоб перевірити роботу.
Крок 1: Встановлення Python та бібліотеки discord
За замовчуванням у Windows немає вбудованих функцій і утиліт, призначених для роботи з Python, тому їх потрібно буде встановити окремо, не забувши про підключену бібліотеку discord, яка дозволить взаємодіяти з корисними функціями та командами, пов'язаними виключно з Discord.
Перейти на офіційний сайт Python
- Скористайтеся посиланням вище, щоб перейти на офіційний сайт Python і натисніть кнопку для завантаження його останньої версії.
- На новій сторінці знайдіть інсталятор для Windows і почніть його завантаження.
- Дочекайтеся завершення завантаження і запустіть установник.
- Можна запустити установку без змін, але обов'язково відзначте галочкою "Add Python X.X to PATH", щоб усі змінні середовища додалися автоматично і не виникло проблем при подальшому введенні команд.
- Очікуйте завершення установки і на всякий випадок перезавантажте комп'ютер, щоб усі зміни вступили в силу.
- Відкрийте "Командний рядок" зручним для вас способом, наприклад, знайшовши додаток у меню "Пуск".
- Напишіть команду
pip install discord
і підтвердіть її натисканням клавіші Enter. - Розпочнеться завантаження файлів, і в консолі "побіжать" рядки. Не закривайте це вікно до завершення завантаження.
- Як тільки з'явиться інформація "Successfully installed", закривайте "Командний рядок" і переходьте далі.









Якщо Python у вас встановлений, але команда для додавання підключеної бібліотеки не працює, виконайте оновлення компонента PIP, про що розповідається в іншій статті на нашому сайті.Там ви знайдете інструкцію і щодо зміни змінних середовища, якщо цього не сталося під час установки.
Докладніше: Оновлення PIP для Python
Крок 2: Створення словника бота
В цьому варіанті ми будемо використовувати словник для бота, тобто конфігураційний файл, що містить у різних іменах значення токена, префікса та імені бота. Це суттєво спрощує весь процес написання коду і не змушує кожного разу згадувати дані програми, щоб ввести їх в одному рядку.
- Почніть з запуску IDLE, знайшовши додане застосування через меню "Пуск". Якщо ви завантажили інше середовище розробки, відкрийте його і створіть новий проект на базі Python.
- Після відкриття нового вікна викличте меню "File" і виберіть пункт "New File". Зробити це можна і за допомогою комбінації клавіш Ctrl + N.
- В новому вікні, яке призначене для написання коду, вставте блок
settings = {
'token': 'Ваш токен',
'bot': 'Ім'я бота',
'id': Client ID бота, без лапок,
'prefix': 'Префікс бота'
} - Тепер потрібно знайти інформацію для її заміни в словнику. Спочатку знайдіть Client ID застосування на сайті розробників. Скопіюйте його і замініть у відповідному рядку.
- Викличте меню і перейдіть у розділ "Bot".
- Скопіюйте його унікальний токен, клацнувши по спеціально відведеній для цього кнопці.
- Вставте токен замість напису, зробіть те ж саме з іменем бота і використовуваним префіксом (префікс потрібен для виклику команд і завжди йде перед ними, наприклад
!play
, а ви можете замінити знак оклику на будь-які інші символи). - Як тільки вся інформація була замінена, знову викличте меню "File" і виберіть варіант "Save As".
- Створіть окрему папку для файлів бота, назвіть цю як
config
і підтвердіть збереження.









Крок 3: Створення тіла бота
Для забезпечення базового функціонування бота йому потрібно створити "тіло" — основний код для запуску і роботи на сервері.Понадобиться окремий файл, який можна назвати як завгодно, але обов'язково зберегти його в тому ж місці, де знаходиться створений раніше словник.
- В середовищі розробки відкрийте меню "File" і створіть новий файл.
- Вставте туди три команди, які призначені для імпорту встановлених бібліотек і створеного раніше файлу:
import discord
from discord.ext import commands
from config import settings - Додайте рядок
bot = commands.Bot(command_prefix = settings['prefix']) # Оскільки ми вказали префікс у settings, звертаємося до словника з ключем prefix
. - Основний код такий:
@bot.command() # Не передаємо аргумент pass_context, оскільки він був потрібен у старих версіях.
async def hello(ctx): # Створюємо функцію і передаємо аргумент ctx.
author = ctx.message.author # Оголошуємо змінну author і записуємо туди інформацію про автора.await ctx.send(f'Hello, {author.mention}!') # Виводимо повідомлення з упоминанням автора, звертаючись до змінної author.
- Звертайте увагу на коментарі, що йдуть після знака "#" — вони дозволять розібратися з призначенням кожного рядка.
- Команда для запуску виглядає так:
bot.run(settings['token']) # Звертаємося до словника settings з ключем token, для отримання токена
. - По завершенню знову відкрийте вже знайоме меню і перейдіть до збереження файлу.
- Задайте для нього будь-яку назву і помістіть у папку з конфігом.







Далі ви бачите повний код, про який йшлося вище, тому при необхідності просто можете скопіювати його.

import discord
from discord.ext import commands
from config import settings
bot = commands.Bot(command_prefix = settings['prefix'])
@bot.command() # Не передаємо аргумент pass_context, оскільки він був потрібен у старих версіях.
async def hello(ctx): # Створюємо функцію і передаємо аргумент ctx.
author = ctx.message.author # Оголошуємо змінну author і записуємо туди інформацію про автора.
await ctx.send(f'Hello, {author.mention}!') # Виводимо повідомлення з упоминанням автора, звертаючись до змінної author.
bot.run(settings['token']) # Звертаємося до словника settings з ключем token, для отримання токена
Додатково уточнимо, що ви можете використовувати альтернативну схему, позбувшись файлу зі словником і отримавши трохи інше "тіло" для бота.Вирішіть, чи підходить вам цей код більше. Вказані рядки з токеном потрібно буде відредагувати під себе.
import discord
from discord.ext import commands
TOKEN = 'Ваш токен'
bot = commands.Bot(command_prefix='!')
@bot.command(pass_context=True) # дозволяємо передавати аргументи
async def test(ctx, arg): # створюємо асинхронну функцію бота
await ctx.send(arg) # відправляємо назад аргумент
bot.run(TOKEN)
Крок 4: Запуск бота
Тепер можна запустити бота для перевірки, для чого знадобиться створений у Кроці 3 основний файл. Скомпіліруйте його прямо через середу розробки або викличте "Командний рядок" і введіть там python bot.py
, де bot.py — назва створеного файлу. Якщо файл знайти не вдалося, вкажіть його повний шлях, наприклад python C:UsersUSER_NAMEbot.py
.

Перейдіть у Дискорд і перевірте поточний стан бота. Він має відображатися у списку учасників у розділі "В мережі" разом із зеленою точкою.

Скористайтеся відкритими джерелами або власними знаннями, щоб написати команди для бота або реалізувати інші завдання, які він має виконувати. Для цього редагуйте його основний файл або створюйте інші, зв'язуючи все в єдиний проект.
Варіант 2: JavaScript і discord.js
Наступний варіант створення бота для Discord — використання JS і підключуваної бібліотеки discord.js, яка додає всі необхідні компоненти для роботи з ботами. Принцип дій відрізняється від попереднього варіанту лише інструментами та різницею в синтаксисах мов програмування, але залишається приблизно таким же.
Крок 1: Встановлення Node.js і discord.js
Розширити функціональність JS і перетворити його в мову програмування загального призначення допоможе платформа Node.js, установкою якої і рекомендуємо зайнятися в першу чергу.Для цього виконайте простий алгоритм дій:
Перейти на офіційний сайт Node.js
- Відкрийте сторінку Node.js в інтернеті та виберіть останню рекомендовану версію для завантаження.
- Дочекайтеся отримання виконуваного файлу та запустіть його.
- Слідуйте інструкціям, що з'являться на екрані, заверште установку та перезавантажте комп'ютер.
- Відкрийте "Пуск" і через пошук знайдіть класичний додаток "Командний рядок".
- Введіть команду
npm init
та активуйте її натисканням Enter. - Створіть стандартний пакет з користувацькою інформацією, натискаючи Enter після введення кожного параметра, або залиште все за замовчуванням.
- Коли всі параметри пакета будуть задані, ви отримаєте попередження, яке потрібно підтвердити, знову натиснувши Enter.
- Введіть команду
npm install
для встановлення відсутніх стандартних компонентів. - Дочекайтеся завершення їх завантаження та появи рядка вводу.
- Напишіть
npm install discord.js
. - Як тільки і ця команда буде виконана, відкрийте папку свого користувача та переконайтеся в наявності створених файлів пакета формату JSON.











Крок 2: Робота з файлами бота
Усі дії, пов'язані з файлами бота та програмним кодом, розглянемо в рамках одного етапу, оскільки ділити їх на кілька просто не має сенсу.Вам знадобляться три основні файли, куди вписуються всі необхідні функції: один відповідає за конфігурацію бота, другий — за "тіло", а третій зберігає список доданих команд.
- Для початку створіть файли "bot.js" та "config.json" в одному каталозі.
- Відкрийте через текстовий редактор або середу розробки "config.json" та додайте туди такі рядки:
{
"token" : "Ваш_токен",
"prefix" : "Ваш_префікс"
}Відповідно, вирази в подвійних лапках замініть на унікальний токен бота та бажаний префікс.
- Відкрийте для редагування файл "bot.js" (до речі, його назва може бути будь-якою). Вставте туди цей блок коду.
const Discord = require('discord.js'); // Підключаємо бібліотеку discord.js
const robot = new Discord.Client(); // Оголошуємо, що robot - бот
const comms = require("./comms.js"); // Підключаємо файл з командами для бота
const fs = require('fs'); // Підключаємо рідний модуль файлової системи node.js
let config = require('./config.json'); // Підключаємо файл з параметрами та інформацією
let token = config.token; // "Витягуємо" з нього токен
let prefix = config.prefix; // "Витягуємо" з нього префіксrobot.on("ready", function() {
/* При успішному запуску, в консолі з'явиться повідомлення "[Ім'я бота] запустився!" */
console.log(robot.user.username + " запустився!");
});robot.on('message', (msg) => { // Реагування на повідомлення
if (msg.author.username != robot.user.username && msg.author.discriminator != robot.user.discriminator) {
var comm = msg.content.trim() + " ";
var comm_name = comm.slice(0, comm.indexOf(" "));
var messArr = comm.split(" ");
for (comm_count in comms.comms) {
var comm2 = prefix + comms.comms[comm_count].name;
if (comm2 == comm_name) {
comms.comms[comm_count].out(robot, msg, messArr);
}
}
}
});robot.login(token); // Авторизація бота
Читайте коментарі до рядків, що йдуть після слешів ("//"), щоб самостійно розібратися з призначенням кожного.
- Створіть третій файл — "comms.js", в якому в майбутньому будуть зберігатися всі необхідні команди.
- В нього вставте основний блок, який в майбутньому буде розширюватися:
const config = require('./config.json'); // Підключаємо файл з параметрами та інформацією
const Discord = require('discord.js'); // Підключаємо бібліотеку discord.js
const prefix = config.prefix; // "Витягуємо" префікс// Команди //
function test(robot, mess, args) {
mess.channel.send('Test!')
}// Список команд //
var comms_list = [{
name: "test",
out: test,
about: "Тестова команда"
}];// Name - назва команди, на яку буде реагувати бот
// Out - назва функції з командою
// About - опис командиmodule.exports.comms = comms_list;





Для подальшої роботи з командами достатньо буде оголосити їх функції та поповнити список відповідними блоками коду.На прикладі готового файлу "comms.js" виглядає так:
const config = require('./config.json');
const Discord = require('discord.js');
const prefix = config.prefix;
const versions = config.versions;
// Команди //
function test(robot, mess, args) {
mess.channel.send("Тест!")
}
function hello(robot, mess, args) {
mess.reply("Привіт!")
}
// Список команд //
var comms_list = [{
name: "test",
out: test,
about: "Тестова команда"
},
{
name: "hello",
out: hello,
about: "Команда для привітання!"
}
}
module.exports.comms = comms_list;
Крок 3: Запуск бота
Перші дії з ботом на JavaScript завершені, а значить, можна запустити його і перевірити роботу. Для цього вам потрібно виконати наступне:
- Відкрийте меню "Пуск" через пошук знайдіть "Командний рядок" і запустіть його.
- Введіть
node bot.js
, де bot.js — назва основного файлу з кодом для бота. Якщо він не знаходиться у вашій домашній папці, вказуйте повний шлях до файлу або спочатку перейдіть до розташування, використовуючи командуcd
.


Приклади корисних команд
На завершення цього варіанту коротко розповімо про дві корисні команди, які можуть стати в нагоді при налаштуванні бота. Їх можна використовувати в якості тестових, коли робота над проектом ще знаходиться на стадії розвитку. Перша команда — !clear
— видаляє вказану кількість повідомлень у чаті.Її код виглядає наступним чином:
const arggs = mess.content.split(' ').slice(1); // Усі аргументи за іменем команди з префіксом
const amount = arggs.join(' '); // Кількість повідомлень, які потрібно видалити
if (!amount) return mess.channel.send('Ви не вказали, скільки повідомлень потрібно видалити!'); // Перевірка, задано чи параметр кількості
if (isNaN(amount)) return mess.channel.send('Це не число!'); // Перевірка, чи є введене користувачем числом
if (amount > 100) return mess.channel.send('Ви не можете видалити більше 100 повідомлень за раз'); // Перевірка, чи є введене користувачем число більше 100
if (amount {
mess.channel.bulkDelete(messages)
mess.channel.send(`Видалено ${amount} повідомлень!`)
})
};
delete_messages(); // Виклик асинхронної функції
Друга команда призначена для підкидання монетки і запускається шляхом введення !heads_or_tails
в чаті. Тут код не такий складний, оскільки дій мало і бот повинен відгукнутися всього на один запит без величезної кількості змінних.
mess.channel.send('Монета підкидається...')
var random = Math.floor(Math.random() * 4) + 1; // Оголошення змінної random - вона обчислює випадкове число від 1 до 3
if (random === 1) { // Якщо обчислено число 1, то випадає орел.
mess.channel.send(':full_moon: Орел!')
} else if (random === 2) { // Якщо обчислено число 2, то випадає решка.
mess.channel.send(':new_moon: Решка!')
} else if (random === 3) { // Якщо обчислено число 3, то монета падає ребром.
mess.channel.send(':last_quarter_moon: Монета впала ребром!')
}
В інтернеті ви можете знайти інші корисні команди, які хочете включити у свого бота, однак для роботи з ними все ж знадобляться просунуті знання в JavaScript або Python, щоб самостійно виправляти помилки або редагувати код під себе.