Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет»
«Эпический» сериал Netflix по Assassin’s Creed впервые за несколько лет подал признаки жизни - «Новости сети»
«Эпический» сериал Netflix по Assassin’s Creed впервые за несколько лет подал признаки жизни - «Новости сети»
«Хуже моего самого страшного кошмара»: утечка геймплея с тестирования новой The Sims ужаснула фанатов - «Новости сети»
«Хуже моего самого страшного кошмара»: утечка геймплея с тестирования новой The Sims ужаснула фанатов - «Новости сети»
Самые полные издания Borderlands 3 и Diablo III добавят в Game Pass, а лучшая игра 2024 года по версии 3DNews подписку скоро покинет - «Новости сети»
Самые полные издания Borderlands 3 и Diablo III добавят в Game Pass, а лучшая игра 2024 года по версии 3DNews подписку скоро покинет - «Новости сети»
Amazon включилась в борьбу за американский бизнес TikTok - «Новости сети»
Amazon включилась в борьбу за американский бизнес TikTok - «Новости сети»
«Яндекс» представил «Нейроэксперта» — ИИ, который соберёт базу знаний по ссылкам и файлам пользователя - «Новости сети»
«Яндекс» представил «Нейроэксперта» — ИИ, который соберёт базу знаний по ссылкам и файлам пользователя - «Новости сети»
ZA/UM отреагировала на утечку «одиночной кооперативной игры» Locust City во вселенной Disco Elysium - «Новости сети»
ZA/UM отреагировала на утечку «одиночной кооперативной игры» Locust City во вселенной Disco Elysium - «Новости сети»
GTA V вернётся в Game Pass, причём совсем скоро — впервые игра будет доступна в PC Game Pass - «Новости сети»
GTA V вернётся в Game Pass, причём совсем скоро — впервые игра будет доступна в PC Game Pass - «Новости сети»
Обзор системы резервного копирования и восстановления данных «Кибер Бэкап Малый Бизнес» - «Новости сети»
Обзор системы резервного копирования и восстановления данных «Кибер Бэкап Малый Бизнес» - «Новости сети»
Nintendo создала гибридный эмулятор Switch, но работать он будет только на Switch 2 - «Новости сети»
Nintendo создала гибридный эмулятор Switch, но работать он будет только на Switch 2 - «Новости сети»
Лавкрафтианский хоррор Stygian: Outer Gods готовится к старту открытой «беты» — новый геймплейный трейлер - «Новости сети»
Лавкрафтианский хоррор Stygian: Outer Gods готовится к старту открытой «беты» — новый геймплейный трейлер - «Новости сети»
Новости мира Интернет » Новости » Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет»
Создаем бота для Discord (NodeJS + Docker) - «Новости мира Интернет»

В этом ознакомительном 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

Добавление бота на сервер


Бот запущен и работает в контейнере. Осталось только пригласить его на сервер и проверить его работу.


Для приглашения необходимо:



  1. Вернуться обратно по ссылке.

  2. Выбрать созданное приложение.

  3. Перейти во вкладку “OAuth2”.

  4. В списке “Scopes” выбрать “bot”.

  5. Скопировать ссылку и перейти по ней в браузере.

  6. Выбрать сервер, на который будет добавлен бот.



Теперь мы можем проверить работу двух команд, созданных ранее:



Заключение


В этой ознакомительной статье мы зарегистрировали новое приложение, создали бота, написали несколько простых команд, запустили контейнер и пригласили бота на сервер.


Далее бота можно развивать, наполняя его другими более сложными и полезными функциями. Для этого вам пригодятся знания jаvascript и следующие ссылки:



  • документация библиотеки discordjs;

  • справочная информация по jаvascript;

  • ознакомительный курс по Docker.


Надеюсь, этот материал будет полезен для всех, кто давно хочет создать собственного бота в Discord, но не знает, с чего начать.


Вопросы и пожелания можно оставлять в комментариях. Спасибо за внимание!

Цитирование статьи, картинки - фото скриншот - Rambler News Service.
Иллюстрация к статье - Яндекс. Картинки.
Есть вопросы. Напишите нам.
Общие правила  поведения на сайте.

В этом ознакомительном 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: Если вы используете другой дистрибутив, то установка необходимых пакетов может отличаться. Вы можете найти инструкцию для конкретного дистрибутива в документации или в поисковике. Читайте также Настройка Iptables для чайников Как установить и настроить NTP на сервере Создание основных файлов Как я указал в начале статьи, мы будем использовать NodeJS для запуска бота. Дополнительно нам потребуются две библиотеки: discord.js (основная библиотека для работы бота); dotenv (будет использоваться для конфигурационного файла). Создадим рабочую директорию проекта и файл package.json. В моем случае рабочая директория располагается в директории /home, но вы можете выбрать любую другую на свое усмотрение. Примерный вид файла: В нем мы указали имя будущего пакета (name), версию (version), описание (description), автора (author), основной файл (app.js) и список зависимостей (dependencies). Запустим npm install и убедимся, что создался файл package-lock.json, который потом также будет скопирован в контейнер. Теперь создадим файл самого бота app.js и запишем в него следующий код: Учитывая, что здесь используется конфигурационный файл, создадим в рабочей директории .env и запишем в него: Вместо “tokenbot” подставляется token бота, который был сохранен в начале статьи, а в качестве prefix указывается символ, после которого будут вводиться команды. Я выбрал в качестве префикса “!”, но вы можете выбрать другой удобный символ, если только он не используется самим Discord, как например “@” или “/”. Создание Docker-контейнера Теперь в рабочей директории нам нужно создать Dockerfile, который будет содержать инструкции для сборки образа, на основе которого будет запущен контейнер. В него мы запишем: Создадим файл .dockerignore и запишем туда несколько локальных файлов, которые будут игнорироваться: Соберем образ и запустим на его основе контейнер: Вместо “authorname” можно ввести имя пользователя, от которого создается бот, и через “/” указать имя бота. Проверим, что контейнер запустился, специальной командой: Добавление бота на сервер Бот запущен и работает в контейнере. Осталось только пригласить его на сервер и проверить его работу. Для приглашения необходимо: Вернуться обратно по ссылке. Выбрать созданное приложение. Перейти во вкладку “OAuth2”. В списке “Scopes” выбрать “bot”. Скопировать ссылку и перейти по ней в браузере. Выбрать сервер, на который будет добавлен бот. Теперь мы можем проверить работу двух команд, созданных ранее: Заключение В этой ознакомительной статье мы зарегистрировали новое приложение, создали бота, написали несколько простых команд, запустили контейнер и пригласили бота на сервер. Далее бота можно развивать, наполняя его другими более сложными и полезными функциями. Для этого вам пригодятся знания jаvascript и следующие ссылки: документация библиотеки discordjs; справочная информация по jаvascript; ознакомительный курс по Docker. Надеюсь, этот материал будет полезен для всех, кто давно хочет создать собственного бота в Discord, но не знает, с чего начать. Вопросы и пожелания можно оставлять в комментариях. Спасибо за внимание!

Смотрите также

А что там на главной? )))



Комментарии )))