Как сделать музыкального бота в дискорде python

Обновлено: 05.07.2024

Всем привет.
В интернете очень мало качественных гайдов на тему разработки Discord-бота . Поэтому я решил написать полный подробный курс на эту тему.
В этом курсе мы будем учиться созданию Discord-бота на языке программирования Python (библиотека Discord.py) с нуля.

Создание приложения

Для начала нам нужно получить токен для взаимодействия с API Discord. Получить его достаточно просто.
Перейдите по ссылке https://discordapp.com/developers/applications/ . Если вы не авторизованы в аккаунте Discord - нужно будет авторизоваться.
Справа сверху появится кнопка "New Application" .

Нажимаем на нее. В открывшемся окне нам будет предложено ввести название нового приложения.

Вводим и нажимаем Create. Теперь нам нужно выбрать вкладку "Bot" в меню слева.

В правой верхней части экрана нажимаем "Add Bot" . В открывшемся окне нажимаем "Yes, do it!" .

Строка "USERNAME" - будущее имя бота.
Token - это и есть наш код доступа к API, ради которого мы все это делали.

Добавление бота в канал

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

Теперь нажимаем кнопку "Продолжить" , а затем "Авторизовать" , проходим проверку на робота. Готово! Наш бот добавлен в наш сервер.

Теперь перейдем непосредственно к разработке самого бота.

Установка Discord.py

Я буду показывать пример работы в Командной Строке Windows . В целом, ход действий мало отличается от Linux , так что, если у вас линукс, - пишите то же самое.

Для удобства работы лучше будет создать виртуальное окружение (Virtual Env) . В консоли переходим в папку нашего проекта. В ней выполняем следующие команды:

// Устанавливаем VirtualEnv, если он у вас еще не установлен
> pip install virtualenv

// Создаем нашу виртуальную среду
> python -m venv [название]

// Активируем виртуальную среду
[Windows] > [название]\Scripts\activate.bat
[Linux] > source [название]/bin/activate

// Активацию нужно будет повторять при каждом запуске консоли

Теперь нам нужно установить библиотеку Discord.py . Пишем в консоли:

Готово. Библиотека успешно установлено в наше виртуальное пространство. Теперь можно перейти непосредственно к коду.

Написание основы для бота

В папке нашего проекта создаем Python-файл с любым названием и открываем его в любом редакторе. В моем случае это будет bot.py .
В этот файл вы должны написать такой код:

import discord
from discord.ext import commands

token = 'токен'
bot = commands.Bot(command_prefix='/')

Создание первой команды

В этой статье мы создаем своего дискорд-бота на боксе с нуля.

Подготовка

Предварительные действия на боксе такие же, как и в нашей статье про Telegram:


Выбираем имя приложения (выбирайте мудро, хоть его и можно изменить позже):


Готово. Здесь можно переименовать приложение, дать описание, загрузить аватарку:


Токен бота можно получить по кнопке Copy:


Если вдруг токен попал не только в ваши руки, его всегда можно заменить кнопкой Regenerate.

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


Выдаем права, действительно нужные боту для администрирования сервера:


Теперь бота можно добавить на сервер. Копируем ссылку и открываем её в браузере. В диалоговом окне выбираем сервер:


Проверяем его привилегии:


Всё, бот на сервере:


Код бота

Активируем виртуальное окружение и ставим нужную библиотеку:

Добавляем директорию для бота, не выходя виртуального окружения:

Создаем конфиг бота:

Наполняем его содержимым

Дальше код бота. Создаем bot.py и сразу редактируем его vim’ом:

Первыми строками активируем виртуальное окружение и импортируем нужные модули:

Обозначаем боту, с какого символа начинаются его команды:

Добавляем в код функцию запуска:

Закрываем редактор и запускаем бота:


Код бота целиком:

Запуск бота

Создаем Linux-демона — он будет следить, что бот работает. Открываем файл (mlg, если нужно, меняем на своё имя сервиса):

Добавляем в него строки:

И запускаем демона:

Проверить, что всё работает, можно так:

Дополнение кода бота

Бот улучшается в два этапа:

  • добавляем код в файл бота
  • перезапускаем бота

Для примера добавим в бота какое-нибудь рандомное API. Открываем файл бота:

И добавляем в него пару библиотек и ещё одну функцию обработки команд:

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

Результатом будет рандомный мем:


Готово! Боты в Discord умеют многое, и мы можем и дальше расширять его возможности, изучая документацию.

JavaScript

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 и создании с его помощью простого бота.

Что лучше использовать для разработки

Нужно выбрать программную платформу, чтобы создавать собственного бота. Всего у нас есть два варианта: Node.js и всеми полюбившийся Python. Чем они отличаются, вы спросите?

Node.js

Да все очень просто, первый вариант — это среда разработки, использующая JavaScript. Разработчики все оптимизировали, поэтому Node.js позволяет взаимодействовать с устройствами ввода и вывода через свой API. Кроме того, допускается подключать разные языки программирования.

Python

А что второй вариант? Здесь все немного иначе. Python — это среда, использующая высокоуровневую динамическую типизацию. В основном ее используют именно для написания скриптов и создания бота.

Таким образом, написание бота в Discord должно начаться с обязательного выбора ПО. От этого будет зависеть конечный результат, а нам он нужен положительным. Каковы наши рекомендации? Попробуйте сделать помощника, используя оба способа, так вы приобретете и опыт, и начальные знания в программировании, а мы вам поможем. Рассмотрим оба варианта в подробностях — от создания каркаса, до тестирования.

Используем Python

Обновление Python

Нам нужно перейти на официальный сайт Python, чтобы загрузить последнюю версию среды разработки.

Установка библиотек

Дальнейшие инструкции такие:

Создаем словарь

Теперь нам нужно обучить своего бота. Сделать это просто — пишем словарь:

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

IDLE Python

>

Далее нужно посетить сайт разработчиков Discord Developer Portal, просто вбейте наименование в поисковике:

Создаем каркас

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

Нужно добавить основной код:

async def hello(ctx):

Далее идет функция и выглядит она следующим образом:

Запуск

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

Путь через командную строку

У вас путь к каркасу бота может отличаться. Кроме того, можно прописать путь к файлу через командную строку.

Откройте Дискорд с компьютера или телефона, чтобы проверить, есть ли бот в сети. Если вы наблюдаете отсутствие помощника, то проверьте отступы, ведь при программировании в Python нужно строго их соблюдать. Это поможет не стать заложником ошибок, таких как Syntax Error.

Используем библиотеку Node.js и JavaScript

Теперь мы расскажем, как осуществляется настройка бота в php Node.js:

Откройте последний файл и пропишите код:

Прописывание данных бота

>

Префикс можно использовать любой, а токен вы найдете на портале Discord Developer.

Запуск

Чтобы запустить бота нам нужна командная строка:

Заключение

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

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