Были времена, когда люди все делали сами. Конечно, поручить тяжелый физический труд они могли автоматизированным машинам. Однако умственные операции, где нужно производить логический анализ, поручить было некому. С недавнего времени эта проблема решилась программами с готовыми логическими инструкциями, которые называются ботами. Расскажем, как создать собственного бота в сервисе Дискорд, который считается одним из лучших мессенджеров в 2023 году.
С чего начать
Может, где-то на просторах интернета и «гуляют» готовые конструкторы (их иногда называют Creator) ботов, они довольно ограничены по функционалу. Так как невозможно предсказать все желания пользователя. Потому мы будем рассматривать разработку Discord bot на основе языка программирования JavaScript(JS), а точнее платформы Node.js. Первым делом необходимо создать приложение в базе Discord.
Для этого выполните следующие действия:
- Перейдите по этой ссылке. Рекомендуем сделать это не на телефоне, а через компьютер.
- Нажмите на кнопку «New Application».
- Введите название для приложения. В будущем оно будет отображаться как имя бота.
- Перейдите в раздел «Bot», который находится в левом навигационном меню.
- Нажмите кнопку «Add bot». Подтвердите действие. Если возникнет ошибка, то, скорее всего, название вашего приложения уже использовалось и нужно придумать новое. Отредактировать его можно в разделе «General».
- Найдите поле «Token». Кликните по ссылке под ним. Должен появиться длинный текст из разных символов. Это и есть токен, с помощью которого происходит обращение к боту.
- Скопируйте его и сохраните куда-то. Без него обращение невозможно. Также не рекомендуем показывать этот токен кому-либо, так как этот кто-то сможет управлять вашим приложением.
Готово. Местечко для приложения мы уже подготовили. Осталось установить сам код на выделенном хостинге.
Подготовка сервера
В нашем случае будет использовать VDS (виртуальный выделенный сервер) с ОС Ubuntu 18.04. Если вы новичок, то рекомендуем остановиться именно на этом дистрибутиве. Сам сервер необходимо арендовать. Для обучения можно найти и бесплатный хостинг. Для подготовки сервера выполняем следующие действия:
- Запустите сервер и откройте терминал. В Ubuntu достаточно нажать ПКМ по рабочему столу и выбрать «Терминал».
- Введите следующие команды:
sudo apt update
sudo apt install docker npm.
Таким образом мы установили npm, который нужен для установки пакетов node.js. Уже непонятно? Тогда рекомендуем для начала ознакомиться с базовым курсом по JS и Node.js. Впрочем, если полностью следовать инструкциям, дополнительный материал для изучения не понадобится.
Создание основных файлов бота
Теперь переходим к разработке самого программного кода. Любой исполняемый код должен помещаться в текстовом файле в отдельной директории. Подробный алгоритм подготовки окружения:
- Откройте терминал.
- Перейдите в домашний каталог с помощью команды «cd /home».
- Создайте директорию с произвольным названием. В нашем случае это будет mkdir newbot.
Готово, окружение подготовлено. Переходим к файлам.
Добавление команд
Первый делом создайте в этой директории файл package.json с помощью команды «touch package.json». С помощью текстового редактора заполните файл следующими строками:
{
“name”: “*здесь укажите имя бота*”,
“version”: “*его версию (на свое усмотрение) *”,
“description”: “*описание, которое будут видеть пользователи*”,
“author”: “электронный адрес автора”,
“main”: “main.js”,
“keywords”: [
“nodejs”
],
“dependencies”: {
“discord.js”: “^12.1.1”,
“dotenv”: “^8.2.0”
}
}
Обратите внимание на строку «”main”: “main.js”». Внутри кавычек указывается исполняемый файл. В нашем случае это main.js. Создайте в этой же директории файл с таким названием, а после введите следующий готовый код:
require(‘dotenv’).config();
const Discord = require(‘discord.js’);
const bot = new Discord.Client();
const token = process.env.token;
const prefix = process.env.prefix;
bot.login(token);
bot.on(‘ready’, () => {
console.info(`Logged in as ${bot.user.tag}!`);
console.info(`Current prefix: ${prefix}`);
});
bot.on(‘message’, message => {
if (message.content === `${prefix}hello`) {
console.log(message.content, message.author);
message.channel.send(‘hello!’);
}
});
bot.on(‘message’, message => {
if (message.content === `${prefix}server`) {
console.log(message.content, message.author);
message.channel.send(`Сообщество: ${message.guild.name}nУчастников: ${message.guild.memberCount}`);
}
});
Это простейший скрипт, который будет приветствовать пользователя и по команде «Server» выводить количество участников. Теперь создадите файл .env, в котором необходимо написать следующие строки:
token=*токен, который был скопирован при создании бота*
prefix=”*символ, с которого будут начинаться команды*”
В звездочках указаны места, куда нужно ввести свои данные. При подготовке кода эти звездочки писать не нужно.
Тестирование
По сути, скрипт выше не взаимодействует со стандартным интерфейсом JS, а «общается» сразу посредством discord API. Следственно, проверить его работоспособность сразу не получится. Единственное, что может сделать пользователь на этом этапе, так это проверить, запустится ли код вообще. Для этого необходимо из терминала ввести команду «npm start», находясь в директории с проектом. Если никаких ошибок не возникло, то переходите к следующему этапу.
Docker-контейнер
Docker – это специальное окружение для проекта, которое позволяет запустить код, вне зависимости от параметров основной системы. Он также поможет собрать сам проект и запустить его локально на сервере. Для этого создайте файл Dockerfile со следующим содержимым:
FROM node:14
WORKDIR /home/newbot
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [“node”, “app.js”]
Теперь создайте файл .dockerignore, где будут храниться не используемые при сборке компоненты. Добавьте в него эти строки:
node_modules
npm-debug.log
Для запуска и сборки используем следующие команды:
docker build -t author/test
docker run -p 42150:8080 -d author/test
Как добавить своего бота не сервер
Можете спокойно выдохнуть, на этом все сложности заканчиваются. Добавления займет не более 1 минуты. Для инсталляции (от слова «install») снова вернитесь в окно создания приложения. Но теперь перейдите в раздел «OAuth2». В разделе «Scopes» выберите пункт «Bot». Сервис выдаст ссылку, которую нужно вставить в адресную строку.
Дальше у вас спросят, в какой сервер добавить бота. Когда эти процедуры завершатся, можете смело проверять ваше творение. Пока бот может выполнять только одну команду: «!server». Вместо «!» будет указан префикс, который вы использовали в скрипте. В идеале должна вернуться строка следующего вида:
Сообщество: *название сообщества*
Участников: *количество участников*
А на этом все. Не забывайте, что по истечении срока аренды хостинга отключится и приложение.
Благодарим за прочтение.