Создаем бота для Discord (NodeJS + Docker)

Виджеты Дискорд — специальные программы (скрипты), предназначенные для добавления чата приложения на сайт. Многие из них могут отображать всех онлайн-пользователей на сервере, показывать активность и т. д. С их помощью можно поддерживать общение без входа в Discord, что делает коммуникацию более удобной.

vidzhety-discord-2.jpg

Что это

Виджет Дискорд для сайта представляет собой скрипт, который встраивается на ресурс и позволяет общаться с другими пользователями без входа в приложение. Такая опция полезна для разных сообществ по интересам, которые нуждаются в обсуждении разных тем. Наличие виджета Дискорд на ресурсе позволяет быстрей связаться с единомышленниками и не отвлекаться на работу в программе.vidzhety-discord-11.jpg

Для чего нужен

В зависимости от ситуации виджеты открывают ряд возможностей для пользователей Дискорд. С его помощью можно общаться, видеть все каналы сервера. Также доступно общее число пользователей онлайн, отображается общий список участников и т. д. В некоторых вариантах можно использовать уведомления для привлечения внимания, менять цвета и т. д.

Как ставить и пользоваться

Много вопросов касается того, как установить скрипт на сайт и обеспечить его корректную работу. Общий алгоритм действий имеет следующий вид:

  1. Войдите в Дискорд.
  2. Выберите нужный сервер в списке.
  3. Зайдите в его настройки. Для этого жмите на него правой кнопкой мышки.
  4. Перейдите в категорию «Виджет».
  5. Переведите пункт «Включить виджет сервера» в правую сторону.
  6. Выберите канал из перечня, чтобы дать возможность скрипту приглашать людей на канал. Это значит, что при нажатии кнопки Connect пользователи войдут на этот канал. При отсутствии канала кнопки Connect не будет.
  7. Жмите на клавишу Copy возле строки ID сервера для копирования данных и сохраните информацию для дальнейшего встраивания.
  8. Создайте шаблон и вставьте его на страницу в виде кода. На этом этапе можно использовать готовый или собственный вариант.
  9. Внесите в необходимое поле скопированный ID сервер.

Существует также ряд платных сервисов, где можно создать свой виджет для Дискорд, а далее пользоваться его возможностями. К примеру, такая опция доступна на сайте elfsight.com. Здесь для добавления скрипта необходимо сделать следующие шаги:

  1. Настройте собственный вариант скрипта с учетом личных предпочтений.
  2. Копируйте уникальный код готового виджета.
  3. Установите готовый код в шаблон или структуру сайта, где он будет находиться.

В дальнейшем можно пользоваться возможностями и менять внешний вид прямо из сайта, где установлено дополнение.

Примеры готовых виджетов

При желании можно использовать уже готовые виджеты для Discord. Наиболее распространенный вариант — скрипт DiscordIntegrator/ru. Он интегрируется в правую часть страницы и может показывать количество пользователей на сервере, их активность, кто и во что играет, гостей канал и т. д. Подробная инструкция по установке скрипта для Дискорд доступна по ссылке dev.fandom.com. Для корректной работы обязательно включите возможность отображения в самом Discord по схеме, которая рассмотрена выше.

Еще одно решение под номером 02 — воспользоваться возможностями сервиса elfsight.com/ru/discord-chat-widget/ и получить Дискорд Чат. Здесь можно посмотреть на Демо программы, внести корректировки в оформление и использовать приложение для общения.

Еще один вариант — Discord Server Widget. Это простой и удобный в пользовании скрипт, предназначенный для отображения активности и онлайн-участников на server Дискорд.

Теперь вы знаете, что такое виджеты Дискорд, для чего они применяются, и как ими пользоваться. При желании можно найти и другие варианты, но главное — правильно добавить код на сайт, а после этого проверить правильность его работы. В комментариях расскажите, какие вы используйте дополнения для установки на сайт и общения в Discord.

Рекомендуем:

Сколько раз можно менять никПрограмма для изменения голосаКак очистить чатОтключить/включить звуковые уведомленияСкачатьУдалить бота 21 мая в 2020 20K

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

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

Создание основных файлов

Как я указал в начале статьи, мы будем использовать 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. Выбрать сервер, на который будет добавлен бот.

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

Заключение

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

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

  • документация библиотеки discordjs;
  • справочная информация по JavaScript;
  • ознакомительный курс по Docker.

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

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

NoName +4Используемые источники:

  • https://discordgid.ru/vidjety/
  • https://timeweb.com/ru/community/articles/sozdaem-bota-dlya-discord-nodejs-docker

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий