Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет»

https://print-prime.ru/novosti/33707-sozdaem-bota-dlja-discord-nodejs-docker-novosti-mira-internet.html В этом ознакомительном HOWTO я расскажу, как можно немного занять себя на время карантина и сделать бота для своего Discord-сервера.

Мы развернем NodeJS в Docker под Ubuntu 18.04 и запустим в нем бота с парочкой простых команд. В конце я оставлю ссылки на полезные источники информации, чтобы вы могли дальше развивать бота, наделяя его полезными функциями. Программное обеспечение сервера, используемое в этом уроке: Ubuntu 18.04 Docker 19.03.6 npm 6.14.5 В этой статье подразумевается, что вы обладаете навыками работы в командной строке Linux. Первые шаги Первым шагом станет создание приложения на официальном сайте Discord (убедитесь, что вы зарегистрированы). Для этого потребуется пройти по ссылке и нажать на кнопку “New application”. В появившемся окне нужно придумать имя своему приложению (будущему боту): После указания имени и создания приложения мы можем перейти к созданию бота. Для этого в левом меню выберите пункт “Bot” и нажмите на кнопку “Add Bot”. Последним шагом здесь будет копирование token по кнопке “Copy”. Держите в секрете ваш token и сохраните его куда-нибудь — он понадобится позже. Подготовка сервера В качестве площадки для размещения бота я использую VDS под управлением операционной системы Ubuntu 18.04. Вы можете разместить бота и на других дистрибутивах, убедившись в том, что в них установлены нужные пакеты. Команды для установки в Ubuntu 18.04: sudo apt update sudo apt install docker npm Если вы используете другой дистрибутив, то установка необходимых пакетов может отличаться. Вы можете найти инструкцию для конкретного дистрибутива в документации или в поисковике. Читайте также Настройка Iptables для чайников Как установить и настроить NTP на сервере Создание основных файлов Как я указал в начале статьи, мы будем использовать 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 ", "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”. Скопировать ссылку и перейти по ней в браузере. Выбрать сервер, на который будет добавлен бот. Теперь мы можем проверить работу двух команд, созданных ранее: Заключение В этой ознакомительной статье мы зарегистрировали новое приложение, создали бота, написали несколько простых команд, запустили контейнер и пригласили бота на сервер. Далее бота можно развивать, наполняя его другими более сложными и полезными функциями. Для этого вам пригодятся знания jаvascript и следующие ссылки: документация библиотеки discordjs; справочная информация по jаvascript; ознакомительный курс по Docker. Надеюсь, этот материал будет полезен для всех, кто давно хочет создать собственного бота в Discord, но не знает, с чего начать. Вопросы и пожелания можно оставлять в комментариях. Спасибо за внимание!

Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120588264
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120588520
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120588776
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120589032
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120589288
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120589544
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120589800
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120590056
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет» - 913120590312

Комментарии

Комментариев нет.