Съдържание:
В статията ще разкажем как се създава приложение за бота, извършва се първата авторизация на сървъра и се пише общ код за нормализиране на работата. Имайки "каркас", вече можете да добавяте потребителски команди и веднага да проверявате как работят те.
Създаване на приложение и авторизация на бота
Следва да се говори за два различни метода за създаване на бота — с помощта на JavaScript и Python. Всеки от тях има свои особености и нюанси, но методът за създаване на приложение и авторизация на бота на сървъра остава един и същ, тъй като не зависи от избрания език за програмиране.След това можете да преминете към избора на библиотека и работа с кода.
Преминете на Discord Developer Portal
- Преминете по линка по-горе, за да се озовете на главната страница на портала за разработчици в Discord. Използвайте личните си данни за вход, за да влезете в акаунта.
- Създайте ново приложение, като натиснете бутона "New Application".
- Въведете името на приложението и потвърдете неговото създаване.
- Разгънете менюто на сайта, като кликнете върху бутона с три хоризонтални линии.
- От появилото се меню изберете раздела с настройки "Bot".
- Пристъпете към добавяне на нов бот за това приложение.
- Потвърдете появилото се уведомление, като натиснете "Yes, do it".
- След завършване сайтът ще се обнови и ще се отвори страницата на бота, където можете да промените името му, да копирате токена или да добавите икона, която ще се показва и в Discord.
- Въпреки това, в момента ботът все още не е маркиран като такъв и за него не са зададени разрешения, затова през същото меню преминете в раздела "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('Тест!')
}// Списък с команди //
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, за да можете сами да коригирате грешки или да редактирате кода според себе си.