Перейти к публикации
IPS Invision Community
  • Как создать бота для Discord

    Как создать бота для Discord

    Программное обеспечение сервера:

    • Ubuntu 18.04
    • Docker 19.03.6
    • npm 6.14.5 

    Первые шаги

    Первым шагом станет создание приложения на официальном сайте Discord (убедитесь, что вы зарегистрированы). Для этого потребуется пройти по ссылке и нажать на кнопку “New application”.

    Discord 1.png

    В появившемся окне нужно придумать имя своему приложению (будущему боту):

    Discord 2.png

    После указания имени и создания приложения мы можем перейти к созданию бота. Для этого в левом меню выберите пункт “Bot” и нажмите на кнопку “Add Bot”.

    Discord 3.png

    Последним шагом здесь будет копирование token по кнопке “Copy”. Держите в секрете ваш token и сохраните его куда-нибудь — он понадобится позже. 

    Discord 4.png

    Подготовка сервера

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

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

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

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

    1. Вернуться обратно по ссылке.
    2. Выбрать созданное приложение.
    3. Перейти во вкладку “OAuth2”.
    4. В списке “Scopes” выбрать “bot”.
    5. Скопировать ссылку и перейти по ней в браузере.
    6. Выбрать сервер, на который будет добавлен бот.

    Discord 5.png

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

    Discord 6.png

    Заключение

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

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

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

    Было ли это полезно?

    qwert
    • Нравится 1

    Отзывы пользователей

    Рекомендованные комментарии

    Нет комментариев для отображения



    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!

    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.

    Войти сейчас
×
×
  • Создать...
Вверх
Вверх