Программное обеспечение сервера:
- Ubuntu 18.04
- Docker 19.03.6
- npm 6.14.5
Первые шаги
Первым шагом станет создание приложения на официальном сайте Discord (убедитесь, что вы зарегистрированы). Для этого потребуется пройти по ссылке и нажать на кнопку “New application”.
В появившемся окне нужно придумать имя своему приложению (будущему боту):
После указания имени и создания приложения мы можем перейти к созданию бота. Для этого в левом меню выберите пункт “Bot” и нажмите на кнопку “Add Bot”.
Последним шагом здесь будет копирование token по кнопке “Copy”. Держите в секрете ваш token и сохраните его куда-нибудь — он понадобится позже.
Подготовка сервера
В качестве площадки для размещения бота я использую VDS под управлением операционной системы Ubuntu 18.04. Вы можете разместить бота и на других дистрибутивах, убедившись в том, что в них установлены нужные пакеты.
Команды для установки в Ubuntu 18.04:
sudo apt update
sudo apt install docker npm
Создание основных файлов
Как я указал в начале статьи, мы будем использовать NodeJS для запуска бота. Дополнительно нам потребуются две библиотеки:
- discord.js (основная библиотека для работы бота);
- dotenv (будет использоваться для конфигурационного файла).
Создадим рабочую директорию проекта и файл package.json. В моем случае рабочая директория располагается в директории /home, но вы можете выбрать любую другую на свое усмотрение.
mkdir /home/my-discord-bot
cd /home/my-discord-bot
touch package.json
Примерный вид файла:
{ "name": "my-discord-bot", "version": "1.0.0", "description": "My discord bot", "author": "Me <example@example.com>", "main": "app.js", "keywords": [ "nodejs" ], "dependencies": { "discord.js": "^12.1.1", "dotenv": "^8.2.0" } }
В нем мы указали имя будущего пакета (name), версию (version), описание (description), автора (author), основной файл (app.js) и список зависимостей (dependencies).
Запустим npm install и убедимся, что создался файл package-lock.json, который потом также будет скопирован в контейнер.
Теперь создадим файл самого бота app.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}`);
}
});
Учитывая, что здесь используется конфигурационный файл, создадим в рабочей директории .env и запишем в него:
token=tokenbot
prefix="!"
Вместо “tokenbot” подставляется token бота, который был сохранен в начале статьи, а в качестве prefix указывается символ, после которого будут вводиться команды. Я выбрал в качестве префикса “!”, но вы можете выбрать другой удобный символ, если только он не используется самим Discord, как например “@” или “/”.
Создание Docker-контейнера
Теперь в рабочей директории нам нужно создать Dockerfile, который будет содержать инструкции для сборки образа, на основе которого будет запущен контейнер. В него мы запишем:
FROM node:14
WORKDIR /home/my-discord-bot
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "app.js"]
Создадим файл .dockerignore и запишем туда несколько локальных файлов, которые будут игнорироваться:
node_modules
npm-debug.log
Соберем образ и запустим на его основе контейнер:
docker build -t authorname/my-discrod-bot
docker run -p 42150:8080 -d authorname/my-discrod-bot
Вместо “authorname” можно ввести имя пользователя, от которого создается бот, и через “/” указать имя бота.
Проверим, что контейнер запустился, специальной командой:
docker ps
9fbaf1176c7a authorname/my-discrod-bot "docker-entrypoint.s…" 6 seconds ago Up 4 seconds 0.0.0.0:42150->8080/tcp pensive_carson
Добавление бота на сервер
Бот запущен и работает в контейнере. Осталось только пригласить его на сервер и проверить его работу.
Для приглашения необходимо:
- Вернуться обратно по ссылке.
- Выбрать созданное приложение.
- Перейти во вкладку “OAuth2”.
- В списке “Scopes” выбрать “bot”.
- Скопировать ссылку и перейти по ней в браузере.
- Выбрать сервер, на который будет добавлен бот.
Теперь мы можем проверить работу двух команд, созданных ранее:
Заключение
В этой ознакомительной статье мы зарегистрировали новое приложение, создали бота, написали несколько простых команд, запустили контейнер и пригласили бота на сервер.
Далее бота можно развивать, наполняя его другими более сложными и полезными функциями. Для этого вам пригодятся знания JavaScript и следующие ссылки:
- документация библиотеки discordjs;
- справочная информация по JavaScript;
- ознакомительный курс по Docker.
Надеюсь, этот материал будет полезен для всех, кто давно хочет создать собственного бота в Discord, но не знает, с чего начать.

От qwert
-
1
Рекомендуемые комментарии
Комментариев нет
Создайте учетную запись или войдите, чтобы комментировать
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти