Как сделать экономику в discord js
API discord предоставляет инструмент для создания и использования ботов. Рассмотрим пример создания базового музыкального бота и добавления его на сервер. Бот сможет проигрывать, пропускать и останавливать музыку, а также будет поддерживать функцию очереди воспроизведения.
Создаем новое приложение на портале разработки discord.
Переходим на портал и нажимаем на “new application”.
Затем вводим название приложения и нажимаем на кнопку “create”.
Затем переходим на вкладку бот и нажимаем на “add bot”.
Бот создан! Теперь можно перейти к добавлению его на сервер.
Добавляем созданный бот с помощью генератора OAuth2 URL.
Для этого переходим на страницу OAuth2 и выбираем бота в панели scope.
Теперь копируем сгенерированный URL и вставляем его в браузер.
Затем выбираем сервер, на который хотим добавить URL и нажимаем на кнопку “authorize”.
Переходим к созданию проекта с использованием терминала.
Для начала создаем директорию и переходим в нее, используя две следующие команды:
Затем создаем модули проекта с помощью команды npm init. После введения команды будут заданы несколько вопросов. Ответьте на них и продолжайте.
Создаем два файла, в которых мы будем работать.
Теперь откройте проект в текстовом редакторе. Я использую VS Code и открываю его с помощью следующей команды:
Прежде чем начать, нужно установить несколько зависимостей.
После завершения установки продолжаем написание файла config.json. Сохраните для бота токен и префикс, который он должен слушать.
Для получения токена снова зайдите на портал разработки discord и скопируйте его из раздела bot.
Это все, что нужно выполнить в файле config.json. Приступим к написанию кода javascript.
Сначала импортируем все зависимости.
Затем с помощью токена создаем клиента и логин.
Добавляем несколько базовых listeners, выполняющих метод console.log при запуске.
Теперь можно начать работу с ботом с помощью команды node. Бот должен быть online в discord и в консоль выведется“Ready!”
После этого проверяем, какую команду нужно запустить. Это можно выполнить с помощью простых операторов if.
Узнав, какие команды нужно запустить, можно перейти к их реализации.
Начнем с добавления команды play. Для этого понадобится песня и гильдия (гильдия представляет собой изолированную коллекцию пользователей и каналов и часто упоминается в качестве сервера). Также понадобится ранее установленная библиотека ytdl.
Для начала создаем map с названием очереди, в котором будут сохранены все песни, введенные в чат.
Переходим к получению информации о песне и сохранении ее в объект song. Для этого используем библиотеку ytdl, которая получает информацию о песне по ссылке на youtube.
Необходимая информация сохраняется в объект song.
В этом фрагменте мы проверяем, является ли serverQueue пустым. Если нет добавляем туда песню.
Если serverQueue имеет значение null, создаем контракт.
В этом блоке кода создается контракт, а песня добавляется в массив songs.
Затем присоединяемся к голосовому чату пользователя и вызываем функцию play(), которую затем реализуем.
Поскольку теперь можно добавлять песни в очередь и создавать контракт при его отсутствии, можно приступить к реализации функцию проигрывания.
Сначала создаем функцию play, которая обладает двумя параметрами (гильдия и песня, которую нужно проиграть) и проверяет, является ли объект song пустым. Если да, то покидаем голосовой канал и удаляем очередь.
Затем начинаем проигрывать песню с помощью функции playStream() и URL-адреса песни.
В этом фрагменте мы создаем stream и передаем его URL-адресу песни. Также добавляем два listeners, которые обрабатывают события end и error.
Примечание: это рекурсивная функция, которая повторяет вызов самой себя. Рекурсия используется для проигрывания следующей песни, когда другая заканчивается.
Теперь можно проиграть песню, введя !play URL в чат.
Переходим к реализации функции пропуска. Для этого нужно выполнить завершения диспетчера, созданного в функции play() для начала проигрывания следующей песни.
В этом фрагменте мы проверяем, находится ли пользователь, который ввел команду, в голосовом канале, а также есть ли песни для пропуска.
Функция stop() похожа на skip(), за исключением того, что массив songs очищается, из-за чего бот удаляет очередь и покидает голосовой чат.
Полный исходный код для музыкального бота:
У вас все получилось! Надеюсь, эта статья помогла вам разобраться в API Discord и создании с его помощью простого бота.
Что лучше использовать для разработки
Нужно выбрать программную платформу, чтобы создавать собственного бота. Всего у нас есть два варианта: Node.js и всеми полюбившийся Python. Чем они отличаются, вы спросите?
Да все очень просто, первый вариант — это среда разработки, использующая JavaScript. Разработчики все оптимизировали, поэтому Node.js позволяет взаимодействовать с устройствами ввода и вывода через свой API. Кроме того, допускается подключать разные языки программирования.
А что второй вариант? Здесь все немного иначе. Python — это среда, использующая высокоуровневую динамическую типизацию. В основном ее используют именно для написания скриптов и создания бота.
Таким образом, написание бота в Discord должно начаться с обязательного выбора ПО. От этого будет зависеть конечный результат, а нам он нужен положительным. Каковы наши рекомендации? Попробуйте сделать помощника, используя оба способа, так вы приобретете и опыт, и начальные знания в программировании, а мы вам поможем. Рассмотрим оба варианта в подробностях — от создания каркаса, до тестирования.
Используем Python
Нам нужно перейти на официальный сайт Python, чтобы загрузить последнюю версию среды разработки.
Установка библиотек
Дальнейшие инструкции такие:
Создаем словарь
Теперь нам нужно обучить своего бота. Сделать это просто — пишем словарь:
Теперь в окно вставляем следующий код:
>
Далее нужно посетить сайт разработчиков Discord Developer Portal, просто вбейте наименование в поисковике:
Теперь сохраните полученный файл конфигурации в папку «Config», которую нужно создать самостоятельно.
Создаем каркас
Теперь нам нужно создать каркас для Discord bot. Здесь придется немного потрудиться, так как будем использовать команды в большом количестве:
Нужно добавить основной код:
async def hello(ctx):
Далее идет функция и выглядит она следующим образом:
Сохраняем документ привычным способом в папку «Config».
Запуск
Ну вот и мы подошли к тому, чтобы проверить работоспособность. После того как свой бот создан, нам нужно снова открыть файл IDLE. Далее прописываем такую команду:
У вас путь к каркасу бота может отличаться. Кроме того, можно прописать путь к файлу через командную строку.
Откройте Дискорд с компьютера или телефона, чтобы проверить, есть ли бот в сети. Если вы наблюдаете отсутствие помощника, то проверьте отступы, ведь при программировании в Python нужно строго их соблюдать. Это поможет не стать заложником ошибок, таких как Syntax Error.
Используем библиотеку Node.js и JavaScript
Теперь мы расскажем, как осуществляется настройка бота в php Node.js:
Откройте последний файл и пропишите код:
>
Префикс можно использовать любой, а токен вы найдете на портале Discord Developer.
Теперь откройте файл «bot.js» и пропишите следующие данные, которые показаны на рисунке.
Сохраняемся и создаем файл, где будут прописаны роли с наименованием «comms.js». Указываем команды, как показано на картинке.
Запуск
Чтобы запустить бота нам нужна командная строка:
Заключение
Создание своего бота в Discord процесс трудоемкий, но если соблюдать те инструкции, которые мы описали в статье, то у вас все получится. Мы рекомендуем попробовать каждый способ, а вы выберете для себя приемлемый.
В этом ознакомительном HOWTO я расскажу, как можно немного занять себя на время карантина и сделать бота для своего Discord-сервера. Мы развернем NodeJS в Docker под Ubuntu 18.04 и запустим в нем бота с парочкой простых команд. В конце я оставлю ссылки на полезные источники информации, чтобы вы могли дальше развивать бота, наделяя его полезными функциями.
Программное обеспечение сервера, используемое в этом уроке:
- Ubuntu 18.04
- Docker 19.03.6
- npm 6.14.5
В этой статье подразумевается, что вы обладаете навыками работы в командной строке Linux.
Первые шаги
В появившемся окне нужно придумать имя своему приложению (будущему боту):
После указания имени и создания приложения мы можем перейти к созданию бота. Для этого в левом меню выберите пункт “Bot” и нажмите на кнопку “Add Bot”.
Последним шагом здесь будет копирование token по кнопке “Copy”. Держите в секрете ваш token и сохраните его куда-нибудь — он понадобится позже.
Подготовка сервера
В качестве площадки для размещения бота я использую VDS под управлением операционной системы Ubuntu 18.04. Вы можете разместить бота и на других дистрибутивах, убедившись в том, что в них установлены нужные пакеты.
Команды для установки в Ubuntu 18.04:
Если вы используете другой дистрибутив, то установка необходимых пакетов может отличаться. Вы можете найти инструкцию для конкретного дистрибутива в документации или в поисковике.
Создание основных файлов
Как я указал в начале статьи, мы будем использовать 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, но не знает, с чего начать.
API discord предоставляет инструмент для создания и использования ботов. Рассмотрим пример создания базового музыкального бота и добавления его на сервер. Бот сможет проигрывать, пропускать и останавливать музыку, а также будет поддерживать функцию очереди воспроизведения.
Установка discord-бота
Создаем новое приложение на портале разработки discord.
Переходим на портал и нажимаем на “new application”.
Затем вводим название приложения и нажимаем на кнопку “create”.
Затем переходим на вкладку бот и нажимаем на “add bot”.
Бот создан! Теперь можно перейти к добавлению его на сервер.
Добавление бота на сервер
Добавляем созданный бот с помощью генератора OAuth2 URL.
Для этого переходим на страницу OAuth2 и выбираем бота в панели scope.
Теперь копируем сгенерированный URL и вставляем его в браузер.
Затем выбираем сервер, на который хотим добавить URL и нажимаем на кнопку “authorize”.
Создание проекта
Переходим к созданию проекта с использованием терминала.
Для начала создаем директорию и переходим в нее, используя две следующие команды:
Затем создаем модули проекта с помощью команды npm init. После введения команды будут заданы несколько вопросов. Ответьте на них и продолжайте.
Создаем два файла, в которых мы будем работать.
Теперь откройте проект в текстовом редакторе. Я использую VS Code и открываю его с помощью следующей команды:
Основы Discord js
Прежде чем начать, нужно установить несколько зависимостей.
После завершения установки продолжаем написание файла config.json. Сохраните для бота токен и префикс, который он должен слушать.
Для получения токена снова зайдите на портал разработки discord и скопируйте его из раздела bot.
Это все, что нужно выполнить в файле config.json. Приступим к написанию кода javascript.
Сначала импортируем все зависимости.
Затем с помощью токена создаем клиента и логин.
Добавляем несколько базовых listeners, выполняющих метод console.log при запуске.
Теперь можно начать работу с ботом с помощью команды node. Бот должен быть online в discord и в консоль выведется“Ready!”
После этого проверяем, какую команду нужно запустить. Это можно выполнить с помощью простых операторов if.
Узнав, какие команды нужно запустить, можно перейти к их реализации.
Добавление песен
Начнем с добавления команды play. Для этого понадобится песня и гильдия (гильдия представляет собой изолированную коллекцию пользователей и каналов и часто упоминается в качестве сервера). Также понадобится ранее установленная библиотека ytdl.
Для начала создаем map с названием очереди, в котором будут сохранены все песни, введенные в чат.
Переходим к получению информации о песне и сохранении ее в объект song. Для этого используем библиотеку ytdl, которая получает информацию о песне по ссылке на youtube.
Необходимая информация сохраняется в объект song.
В этом фрагменте мы проверяем, является ли serverQueue пустым. Если нет добавляем туда песню.
Если serverQueue имеет значение null, создаем контракт.
В этом блоке кода создается контракт, а песня добавляется в массив songs.
Затем присоединяемся к голосовому чату пользователя и вызываем функцию play(), которую затем реализуем.
Проигрывание песен
Поскольку теперь можно добавлять песни в очередь и создавать контракт при его отсутствии, можно приступить к реализации функцию проигрывания.
Сначала создаем функцию play, которая обладает двумя параметрами (гильдия и песня, которую нужно проиграть) и проверяет, является ли объект song пустым. Если да, то покидаем голосовой канал и удаляем очередь.
Затем начинаем проигрывать песню с помощью функции playStream() и URL-адреса песни.
В этом фрагменте мы создаем stream и передаем его URL-адресу песни. Также добавляем два listeners, которые обрабатывают события end и error.
Примечание: это рекурсивная функция, которая повторяет вызов самой себя. Рекурсия используется для проигрывания следующей песни, когда другая заканчивается.
Теперь можно проиграть песню, введя !play URL в чат.
Пропуск песен
Переходим к реализации функции пропуска. Для этого нужно выполнить завершения диспетчера, созданного в функции play() для начала проигрывания следующей песни.
В этом фрагменте мы проверяем, находится ли пользователь, который ввел команду, в голосовом канале, а также есть ли песни для пропуска.
Остановка песен
Функция stop() похожа на skip(), за исключением того, что массив songs очищается, из-за чего бот удаляет очередь и покидает голосовой чат.
Исходный код для index.js:
Полный исходный код для музыкального бота:
Заключение
У вас все получилось! Надеюсь, эта статья помогла вам разобраться в API Discord и создании с его помощью простого бота.
Читайте также: