Подготовьте своего бота к работе менее чем за 5 минут

Создание бота Discord может быть довольно запутанным и пугающим, но не волнуйтесь! В этом пошаговом руководстве ваш собственный бот будет запущен всего за несколько минут с использованием Javascript и библиотеки DiscordJS, чтобы упростить задачу.

Видеоурок

Что ты будешь делать

Сначала вы подключите своего бота, и он уведомит вас о том, что он в сети, а затем постепенно добавите следующие функции:

  • Бот для ответа на сообщение для реакции на сообщения пользователя по заданной команде.
  • Бот для очистки сообщений, который берет заданное число и удаляет такое количество сообщений с сервера.
  • Бот-модератор для автоматического исключения и блокировки пользователей с ролевыми ограничениями, определяющими, кто может его использовать.
  • Бот-шутник, который использует вызов API для создания шуток. Этот шаблон можно использовать для создания погодного бота или чего-либо еще, где соответствующие данные могут быть доступны через API.
  • Бот-модератор с фильтром слов для удаления сообщений, содержащих слова, которые вам не нужны на вашем сервере.

Зачем делать бота в Discord

Discord имеет огромную базу пользователей, насчитывающую около 100 миллионов активных пользователей, что упрощает создание и развитие вашего сообщества. С этой целью может быть очень полезным управление вашим сервером Discord с помощью бота. Боты могут выполнять такие задачи, как приветствовать пользователей на сервере, повышать вовлеченность ваших пользователей и обрабатывать базовые задачи модерации, чтобы свести к минимуму хаос на вашем сервере.

Discord API предоставляет доступ к функциям Discord для внешнего мира, позволяя пользователям добавлять функции, которые сам Discord еще не предоставляет. События передаются вашему боту из Discord через соединение API Websocket, которое предоставляет информацию для использования вашим ботом. Затем ваш бот может ответить Discord с помощью REST API для выполнения различных задач, таких как создание сообщений, изменение настроек на сервере и многое другое.

Три основных элемента бота Discord: 1.) пользователи, взаимодействующие с сервером, 2.) сам сервер Discord, и 3.) ваш бот Discord, работающий на собственном сервере, реагирующий на события на основе вашего кода.

Начиная

Перед тем как начать, вам понадобятся две вещи:

  • Среда разработки NodeJS. Для этого вы можете установить NodeJS на свой компьютер вместе с текстовым редактором, таким как VS Code, или использовать веб-инструмент, такой как CodeSandbox или Replit, если вы не хотите ничего устанавливать. NodeJS - это среда выполнения Javascript, которая позволяет нам использовать Javascript на нашем сервере.
  • Учетная запись Discord и сервер, к которому должен подключаться ваш бот.

После выполнения вышеуказанной настройки первое, что вам нужно сделать, это перейти на портал разработчиков Discord и создать свое приложение:

Затем нажмите на свое недавно созданное приложение и перейдите в раздел «бот», где вы создадите бота:

Нажмите «Добавить бота» и подтвердите, что хотите создать своего бота, нажав «Да» во всплывающем окне. Как только вы это сделаете, перейдите на вкладку с надписью OAuth2, чтобы подключить нового бота к серверу Discord. Oauth2 - это способ, которым ваш бот аутентифицируется на вашем сервере и взаимодействует с Discord API. Он работает с использованием «токенов», которые позволяют вашему боту аутентифицироваться в Discord без необходимости использовать имя пользователя или пароль.

Нажмите кнопку «Добавить перенаправление», введите http://localhost:5000 и сохраните эти изменения. Выберите его в качестве URL-адреса перенаправления, а затем добавьте область «бота», установив флажок ниже. Список разрешений появится ниже, установите флажок «Администратор».

Затем вам просто нужно скопировать и вставить сгенерированный URL-адрес, который вы видите на изображении выше, в свой браузер, и вы будете перенаправлены к такой форме:

Выпадающий список даст вам возможность добавить бота на любые серверы, для которых у вашей учетной записи есть разрешения на это. Как только вы это сделаете, вы увидите, что бот отображается на вашем сервере как офлайн.

Написание вашей первой команды Discord Bot

Теперь, когда ваш бот подключен к вашему серверу Discord, мы можем начать писать код и создавать команды. Начнем с установки библиотеки DiscordJS, запустив:

npm install discord.js

После установки этого пакета в среду разработки вы можете запустить своего бота, скопировав этот код Javascript в текстовый редактор и запустив файл:

Приведенный здесь код импортирует библиотеку DiscordJS, создаст клиент Discord, зарегистрирует вашего бота на сервере Discord и запишет сообщение «бот готов» на вашу консоль после подключения. Токен служит своего рода паролем для вашего бота, чтобы получить его, вам нужно вернуться на портал разработчика Discord и получить токен, как вы можете видеть ниже:

ОБЯЗАТЕЛЬНО ХРАНИТЕ ЭТОТ ТОКЕН В БЕЗОПАСНОСТИ! Если вы считаете, что случайно опубликовали его публично, создайте токен заново, чтобы злоумышленники не могли злоупотребить вашим ботом. Разобравшись с этим, мы можем перейти к написанию реальных команд.

Сообщение Ответить Бот

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

Приведенный выше код ответит на любое сообщение, введенное на вашем сервере, и определит, является ли это сообщение командой. Приставка может быть какой угодно. Пример того, что вернет приведенный выше код:

Сообщение- !test arg1 arg2 arg3

Ваш ответ должен выглядеть так:

command: test
[arg1, arg2, arg3]

Теперь давайте воспользуемся этой настройкой для создания двух команд:

  • Бот для ответа на сообщение, чтобы отреагировать и ответить на наше сообщение
  • Бот для удаления сообщений для очистки заданного количества сообщений.

Вставьте следующий код в прослушиватель событий сообщения:

Чтобы запустить эго-бота, вам просто нужно ввести на сервере Discord сообщение !ego. Для команды clear у вас есть возможность удалить отдельное сообщение, если вы не указали аргумент !clear, или удалить указанное количество, добавив параметр !clear 10.

Команда вызова Discord Bot API

Использование API-интерфейсов - отличный способ повысить функциональность вашего бота. Чтобы продемонстрировать это, мы создадим шуточного бота, который по команде доставляет на ваш сервер случайную шутку. Во-первых, вам нужно установить библиотеку node-fetch, чтобы мы могли вызвать API:

npm install node-fetch

а затем импортируйте его в начало файла, как вы это делали с библиотекой DiscordJS:

const fetch = require('node-fetch')

Теперь просто скопируйте приведенный ниже код в прослушиватель событий сообщений под предыдущими командами:

Вызов API возвращает объект JSON с изюминкой и настройками, которые содержат строки, содержащие шутку, которую ваш бот Discord отправляет обратно на сервер Discord в качестве ответа на сообщение.

Модерация Discord Bot-Kick или Ban пользователей

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

Хотя перед этим нам нужно будет создать роль модератора на нашем сервере и назначить эту роль нашему боту, кроме того, мы захотим включить режим разработчика, чтобы мы могли получить идентификатор роли для нашего кода.

Щелкните имя сервера в верхней левой части интерфейса Discord, затем щелкните «Настройки сервера», затем щелкните «Роли»:

Щелкните значок «+» и создайте новую роль, вы можете называть ее как хотите. Самое главное - дать роли разрешения на кикание и бан пользователей:

Теперь перейдите в настройки пользователя и нажмите «Внешний вид», прокрутите вниз и включите «Режим разработчика»:

Теперь вернитесь к роли, которую вы создали на последнем шаге, щелкните ее правой кнопкой мыши и скопируйте идентификатор, чтобы вы могли вставить его в код ниже:

Давайте подробно рассмотрим то, что происходит выше:

  • msg.member.roles.cache.has (‘ID’) - эта функция просматривает пользователя, создавшего сообщение, и проверяет, что он имеет роль модератора. Кэш ролей - это объект коллекции, возвращаемый DiscordJS, который имеет множество встроенных функций для сортировки и фильтрации данных. Чтобы увидеть их все, вы должны проверить документацию
  • msg.mentions.users.first () - проверяет первое упоминание пользователя. Важно помнить, что на самом деле это не отсортировано по порядку в самом сообщении, поэтому при упоминании нескольких пользователей может возникнуть ошибка. Пользователи сортируются по идентификатору, который зависит от того, когда они присоединились к серверу. Вы можете добавить сюда дополнительные проверки, чтобы убедиться, что в сообщении упоминается только один пользователь, или разрешить банку нескольких участников с помощью одной команды.
  • member.kick () - эта команда фактически удаляет участника, аргумент, переданный ей в виде строки, регистрируется на сервере. Возвращается обещание Javascript, поэтому вы можете использовать функцию then () для выполнения любого действия, которое вы хотите, после того, как пользователь был выгнан. Вы также можете изменить команду на member.ban(), если хотите заблокировать их, а не просто пинать их.

Word Filter Bot

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

Здесь важно отметить, что вы хотите определить свой набор вне прослушивателя событий, иначе он будет воссоздаваться каждый раз при получении события сообщения (что замедлит работу вашего бота). Приведенный выше код можно настроить для нужд вашего сервера Discord, вместо удаления сообщения вы можете просто предупредить или даже заблокировать пользователя, используя код, аналогичный уже созданному нами модерационному боту.

Вывод

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

Подпишитесь на будущие руководства по работе с ботами Discord

Это руководство для начинающих, в будущем я буду делать более продвинутые руководства по работе с ботами Discord, такие как:

  • Как использовать базу данных для создания валюты или рейтинговой системы для вашего сервера
  • Масштабирование бота и организация кода с помощью обработчиков команд
  • Создание вставок с помощью бота Discord
  • Как разместить своего бота Discord для круглосуточной доступности
  • Любые другие идеи ботов, которые читатели хотят увидеть, обязательно прокомментируйте их ниже!