Зміст

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

















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

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









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









Крок 3: Створення тіла бота
Для забезпечення базового функціонування бота йому потрібно створити &171;тіло&187; &8212; основний код для запуску і роботи на сервері. Знадобиться окремий файл, який можна назвати як завгодно, але обов'язково зберегти його в тому ж місці, де знаходиться створений раніше словник.
- У середовищі розробки відкрийте меню &171;File&187; і створіть новий файл.
- Вставте туди три команди, які призначені для імпорту встановлених бібліотек і створеного раніше файлу:
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.
- Зверніть увагу на коментарі, що йдуть після знака &171;&187; &8212; вони дозволять розібратися з призначенням кожного рядка.
- Команда для запуску виглядає так:
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, для отримання токена
Додатково уточнимо, що ви можете використовувати альтернативну схему, позбувшись файлу зі словником і отримавши трохи інше &171;тіло&187; для бота. Вирішіть, чи підходить вам цей код більше. Зазначені рядки з токеном потрібно буде відредагувати під себе.
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
основний файл. Скомпілюйте його безпосередньо через середовище розробки або зателефонуйте
&171;командний рядок&187;
і введіть там
python bot.py
, де
bot.py
&8212; назва створеного файлу. Якщо файл знайти не вдалося, вкажіть його повний шлях, наприклад
python C:\Users\USER_NAME\bot.py
.

Перейдіть до Discord і Перевірте поточний стан бота. Він повинен відображатися у списку учасників у розділі &171; в мережі & 187; разом із зеленою крапкою.

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











Крок 2: Робота з файлами бота
Всі дії, пов'язані з файлами бота і програмним кодом, розглянемо в рамках одного етапу, оскільки ділити їх на кілька просто не має сенсу. Вам знадобляться три основних файли, куди і вписуються всі необхідні функції: один відповідає за конфігурацію бота, другий &8212; за &171;тіло&187;, а третій зберігає список доданих команд.
- Для початку створіть файли &171;bot.js&187; і &171;config.json&187; в одному каталозі.
- Відкрийте через текстовий редактор або середовище розробки &171;config.json&187;
і додайте туди такі рядки:
{
"token": "Ваш_токен",
"prefix": "Ваш_префікс"
}Відповідно, вирази в подвійних лапках замініть на унікальний токен бота і бажаний префікс.
- Відкрийте для редагування файл &171;bot.js&187;
(до речі, його назва може бути будь-яким). Вставте туди даний блок коду.
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) = & gt; {//реагування на повідомлення
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); / / Авторизація бота
Читайте коментарі до рядків, що йдуть після слешів ( &171;//&187; ), щоб самостійно розібратися з призначенням кожної.
- Створіть третій файл &8212; &171;comms.js&187; , в якому в майбутньому будуть зберігатися всі необхідні команди.
- В нього вставте основний блок, який в майбутньому буде розширюватися:
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;





Для подальшої роботи з командами досить буде оголосити їх функції і поповнити список відповідними блоками коду. На прикладі готовий файл &171;comms.js&187; виглядає так:
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 завершені, а значить, можна запустити його і перевірити роботу. Для цього вам знадобиться виконати наступне:
- Відкрийте меню & 171; Пуск & 187; через пошук відшукайте &171;командний рядок&187; і запустіть її.
- Введіть
node bot.js
, де bot.js &8212; назва основного файлу з кодом для бота. Якщо він знаходиться не у вашій домашній папці, вказуйте повний шлях до файлу або спочатку перейдіть до розташування, використовуючи командуcd
.


Приклади корисних команд
На завершення цього варіанту коротко розповімо про двох корисних командах, які можуть стати в нагоді при налаштуванні бота. Їх можна використовувати в якості тестових, коли робота над проектом ще знаходиться на стадії розвитку. Перша команда &8212; !clear
&8212; видаляє вказану кількість повідомлень у чаті. Її код виглядає наступним чином:
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, щоб самостійно виправляти помилки або редагувати код під себе.