Как сделать селфбота в дискорде

Обновлено: 04.07.2024

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

В этой статье разберем создание бота на сервере Спринтбокс .

EXEC.START()

Подготовительные действия на боксе такие же, как и в нашей статье про Telegram из Базы знаний. Почитайте на досуге, там расписано начало работы на сервере.

Создаем бота для Discord

В этом ознакомительном HOWTO я расскажу, как можно немного занять себя на время карантина и сделать бота для своего Discord-сервера. Мы развернем NodeJS в Docker под Ubuntu 18.04 и запустим в нем бота с парочкой простых команд. В конце я оставлю ссылки на полезные источники информации, чтобы вы могли дальше развивать бота, наделяя его полезными функциями.

Программное обеспечение сервера, используемое в этом уроке:

  • Ubuntu 18.04
  • Docker 19.03.6
  • npm 6.14.5

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

Первые шаги

New application

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

Бот Дискорд

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

Добавить бота в Discord

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

Токен Discord

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

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

Проверим, что контейнер запустился, специальной командой:

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

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

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

Выбор сервера для бота

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

Проверка команд бота

Заключение

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

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

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

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

Начало работы

Если вы уже знакомы с приведёнными ниже материалами, — смело можете пролистать этот раздел.

Установка среды разработки

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

… и так далее.
Среда разработки выбирается по удобству использования и практичности, она у вас может быть любая, но мы рассмотрим её на примере Visual Studio Code, так как она является одной из самых приемлемых для новичков, а также для опытных программистов.
Для установки переходим по этой ссылке.


Выбираем свою операционную систему и запускаем скачивание.

Установка среды выполнения

Для создания бота мы используем среду выполнения node.js. Для её установки нам необходимо перейти на этот сайт.


На данный момент нас интересует версия долгосрочной поддержки (LTS), скачиваем её.

Установка полезных расширений

В Visual Studio Code присутствует возможность устанавливать расширения.
Для этого, кликните по отмеченной ниже иконке.


В открывшемся окне вписываем название название/идентификатор нужного нам расширения, после чего устанавливаем его.


Из полезных расширений могу отметить:


  1. Discord Presence — расширение, позволяющее отображать рабочую область и файл, в котором вы работаете в вашей игровой активности (функция работает только при использовании приложения Discord).Идентификатор расширения: icrawl.discord-vscode
  2. Code runner — расширение, с помощью которого предоставляется возможность запускать определённые фрагменты кода.Идентификатор расширения: formulahendry.code-runner

Создание бота



Подготовка к написанию кода

После создания аккаунта для бота, мы должны установить нужные пакеты и модули, чтобы в дальнейшем он корректно работал.
Первым делом создаём папку, после чего открываем её в VS Code (Файл > Открыть папку) / (Ctrl + K Ctrl + O)
Далее нам нужно открыть терминал (Терминал > Создать терминал) / (Ctrl + Shift + `)


После каждой появившейся строки нажимаем Enter или вписываем свои значения.
Значения в этом файле можно будет изменить в любой момент.
Далее, мы должны поочерёдно вводить в терминал эти строки:

npm install discord.js


Написание кода

Об удобстве написания кода

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

О хранении данных

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

  1. Создать отдельный файл
  2. Записать всё в константы

Я не советую вам использовать второй вариант, так как в будущем вам придётся работать с большим объёмом информации, и такая запись будет доставлять неудобства.
Разберём хранение параметров в отдельном файле.

Итак, создаем файл config.json
Вставляем в него следующий код:


* Самым распространённым среди разработчиков префиксом является !
Далее нам нужно создать файл bot .js и вставить в него данный код:

Теперь создаём файл comms.js, в нём будут сами команды.
В нём должен быть следующий код:

Чтобы добавить больше команд — просто объявляйте больше функций и добавляйте их в список, например:

И вот, мы вышли на финишную прямую!
Осталось всего ничего — запустить бота.
Для этого открываем терминал и вставляем в него следующую строку:



Как вывести ссылку-приглашение в терминал, при запуске бота?

Существует два способа:

Итоговый код должен быть таким:

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

Полезные и интересные команды

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

Заключение

Вот и подошла к концу первая часть обучения, как вы могли заметить, создать бота, используя библиотеку discord.js очень просто.
Итого, из этой статьи мы выяснили:

  • Как установить нужные модули и пакеты
  • Как установить среду разработки
  • Как установить среду выполнения
  • Как установить полезные расширения
  • Как создать аккаунт для бота
  • Как воплотить бота в жизнь
  • Как запустить бота
  • Как научить бота реагировать на команды
  • Как пригласить бота на свой сервер
  • Как писать код для работы команд

А также научились некоторым интересным и полезным командам.
Надеюсь, что вам понравилась моя статья и вы узнали из неё что-то новое.
Я постарался объяснить всё максимально доходчиво и подробно.
Следующую часть обучения я планирую сделать об использовании аргументов, а также покажу вам команды для модерации (!kick, !ban, !warn, !mute и т.д).

Создание Discord – бота на .NET Core с деплоем на VPS-сервер

Статья будет состоять из предыстории, подготовительного этапа, написания логики и переноса бота на удаленный сервер.

Надеюсь, данная статья поможет многим начинающим.

Предыстория

«Программист (разработчик бота)
Требования:

  • знание языков программирования;
  • способность к самообучению.
  • умение разбираться в чужом коде;
  • знание функционала DISCORD.
  • разработка бота;
  • поддержка и сопровождение работы бота.

Ваша выгода:

Это мгновенно меня заинтересовало. Да, за данную работу не платили, но от тебя никаких обязательств не требовали, да и в портфолио лишним не будет. Поэтому я написал админу сервера, и он попросил написать бота, который будет показывать статистику игрока в World of Tanks.

Подготовительный этап

Создание Discord – бота на .NET Core с деплоем на VPS-сервер


Discrod
Прежде, чем приступить к написанию нашего бота, его необходимо создать для Discord. Вам необходимо:

  1. Войти в Discord аккаунт по ссылке
  2. Во вкладе “Applications” нажать на кнопку “New Application” и назвать бота
  3. Получить токен бота, войдя в вашего бота и найдя в списке “Settings” вкладку “Bot”
  4. Сохранить где-нибудь токен

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

Для тех, кто не знает, или забыл, как устанавливать приложения из NuGet.Инструкция для Visual Studio

  1. Переходим во вкладку Проект – Управление пакетами NuGet;
  2. Нажимаем на обзор и в поле поиска вводим “DSharpPlus”;
  3. Выбираем и устанавливаем framework;
  4. PROFIT!

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

Написание логики

Создание Discord – бота на .NET Core с деплоем на VPS-сервер

Работа с Discord бот происходит через функцию static async Task MainTask(string[] args);
Чтобы вызвать данную функцию, в Main необходимо прописать

Далее, вам необходимо инициализировать своего бота:

Где token – токен вашего бота.
Потом, через лямбду, прописываем необходимые команды, которые должен выполнять бот:

В конце данной функции, необходимо прописать await discord.ConnectAsync(); и await Task.Delay(-1);

Это позволит выполнять команды на фоне, не занимая основной поток.

Теперь необходимо разобраться с Wargaming API. Тут все просто – пишете CURL-запросы, получаете ответ в виде JSON – строки, вытягиваете оттуда необходимые данные и делаете над ними манипуляции.

Пример работы с WargamingAPI

Внимание! Все токены и ID приложений хранить в открытом виде строго не рекомендуется! Как минимум – Discord банит такие токены, когда они попадают во всемирную сеть, как максимум – бот начинает пользоваться злоумышленниками.

Деплой на VPS – сервер

Создание Discord – бота на .NET Core с деплоем на VPS-сервер

После того, как вы закончили с ботом, его необходимо разместить на сервере, который постоянно работает 24/7. Это связанно с тем, что когда работает ваше приложение, то работает и бот. Как только вы выключаете приложение, засыпает и ваш бот.

Много VPS серверов существует на этом свете, как на Windows, так и на Linux, однако в большинстве случаев, на Linux в разы дешевле размещать.

На Discord – сервере мне посоветовали vscale.io, и я тут же создал на нем виртуальный сервер на Ubuntu и залил бота. Я не буду описывать, как работает данный сайт, а сразу перейду к настройки бота.

Далее, вам необходимо залить бота на Git – сервис, вроде GitHub и ему подобные и склонировать на VPS — сервер, или, другими путями скачать вашего бота. Учтите, что у вас будет только консоль, GUI не будет. Совсем.

После того, как вы скачали вашего бота, вам необходимо его запустить. Для этого, вам необходимо:

  • Восстановить все зависимости: dotnet restore
  • Построить приложение: dotnet build name_project.sln -c Release
  • Перейти к построенной DLL;
  • dotnet name_of_file.dll

Поздравляю! Ваш бот запущен. Однако, бот, к несчастью, занимает консоль, и выйти из VPS – сервера так просто не выйдет. Также, в случае перезагрузки сервера, придется по новому запускать бота. Тут есть пару выходов из ситуации. Все они связаны с запуском при старте сервера:

  • Добавить запуск скрипта в /etc/init.d
  • Создать сервис, который будет запускаться при старте.

Подробно останавливаться на них не вижу смысла, достаточно подробно все описано в интернете.

Выводы

Читайте также: