Перейти к содержанию
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

    Обратная связь

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

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



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

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

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

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

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

    Войти

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

    Войти
×
×
  • Создать...

Важная информация

Мы используем файлы cookie и другие средства сохранения предпочтений и анализа действий посетителей сайта. Нажмите «Принять», если даете согласие на это. Политика конфиденциальности - Условия использования

Вверх
Вверх