Музыкальный бот для Discord на Python
Написал музыкального бота, который при команде -play (link) входит в голосовой канал, но не включает музыку, а выдает ошибку Код:
import discord from discord.ext import commands import pafy import logging import youtube_dl logging.basicConfig(filename='bot.log', level=logging.INFO) TOKEN = 'token' PREFIX = '-' intents = discord.Intents.all() intents.members = True bot = commands.Bot(command_prefix=PREFIX, intents=intents) @bot.event async def on_ready(): print(f'Logged in as ') @bot.event async def on_message(message): if message.content.lower() == 'привет': await message.channel.send('Привет!') await bot.process_commands(message) @bot.command() async def play(ctx, url: str): if not ctx.author.voice: return await ctx.send("Вы не подключены к голосовому каналу!") voice_channel = ctx.author.voice.channel if ctx.voice_client is None: vc = await voice_channel.connect() else: await ctx.voice_client.move_to(voice_channel) vc = ctx.voice_client video = pafy.new(url) best = video.getbestaudio() source = await discord.FFmpegOpusAudio.from_probe(best.url, method='fallback') vc.play(source) @bot.command() async def leave(ctx): if ctx.voice_client: await ctx.guild.voice_client.disconnect() else: await ctx.send("Бот не подключен к голосовому каналу.") logging.info('Bot Online') bot.run(TOKEN)
Ошибка:
ERROR discord.ext.commands.bot Ignoring exception in command play Traceback (most recent call last): File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\YoutubeDL.py", line 815, in wrapper return func(self, *args, **kwargs) File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\YoutubeDL.py", line 836, in __extract_info ie_result = ie.extract(url) File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\extractor\common.py", line 534, in extract ie_result = self._real_extract(url) File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\extractor\youtube.py", line 1794, in _real_extract 'uploader_id': self._search_regex(r'/(?:channel|user)/([^/?]+)', owner_profile_url, 'uploader id') if owner_profile_url else None, File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\extractor\common.py", line 1012, in _search_regex raise RegexNotFoundError('Unable to extract %s' % _name) youtube_dl.utils.RegexNotFoundError: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "a:\Work\piton\discord3\venv\lib\site-packages\discord\ext\commands\core.py", line 229, in wrapped ret = await coro(*args, **kwargs) File "a:\Work\piton\discord3\main.py", line 37, in play info = ytdl.extract_info(url, download=False) File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\YoutubeDL.py", line 808, in extract_info return self.__extract_info(url, ie, download, extra_info, process) File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\YoutubeDL.py", line 824, in wrapper self.report_error(compat_str(e), e.format_traceback()) File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\YoutubeDL.py", line 628, in report_error self.trouble(error_message, tb) File "a:\Work\piton\discord3\venv\lib\site-packages\youtube_dl\YoutubeDL.py", line 598, in trouble raise DownloadError(message, exc_info) youtube_dl.utils.DownloadError: ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "a:\Work\piton\discord3\venv\lib\site-packages\discord\ext\commands\bot.py", line 1350, in invoke await ctx.command.invoke(ctx) File "a:\Work\piton\discord3\venv\lib\site-packages\discord\ext\commands\core.py", line 1023, in invoke await injected(*ctx.args, **ctx.kwargs) # type: ignore File "a:\Work\piton\discord3\venv\lib\site-packages\discord\ext\commands\core.py", line 238, in wrapped raise CommandInvokeError(exc) from exc discord.ext.commands.errors.CommandInvokeError: Command raised an exception: DownloadError: ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Как написать музыкального бота для discord
Если вы хотите установить готового музыкального бота, без лишних проблем и траты времени, то этот гайд специально для вас. Мы объясним на конкретном примере, как поставить на ваш сервер Discord музыкального бота, который будет работать круглые сутки. Разделим наш гайд на этапы, чтобы вам было немного удобнее ориентироваться в тексте.
1 этап – Выбор
На этом этапе нам необходимо выбрать бота на сервер.
Для этого заходим по ссылке: https://www.carbonitex.net/Discord/bots
Во вкладке Info можно узнать полезную информацию о боте, его функционал, возможности и т. д.
Во вкладке Features вы можете посмотреть основные особенности бота, его отличие от остальных.
Во вкладке Usage обычно пишут способ применения бота, его основные команды и подсказки.
Обратите внимание, что нам необходимо выбрать бота с музыкальным функционалом.
Для примера мы выбрали бота под названием WildBot, но вы можете выбрать другого.
2 этап – Установка
После того, как вы выбрали подходящего бота, нажмите на зелёную кнопку Add Bot To Server.
Затем, нам необходимо выбрать сервер на который мы хотим установить бота.
Для примера мы выбрали Тестовый сервер.
Рекомендуем вам создать аналогичный, пустой сервер, для пробной попытки.
Желательно не снимать галочки с разрешений (если они есть), для успешного функционирования бота.
Нажимаем кнопку Авторизовать.
Переходим в программу Discord, на тестовый сервер.
3 этап – Настройка и запуск музыкального бота
В сети мы можем увидеть нашего музыкального бота.
Обычно боты автоматически задают себе роль и права после авторизации, но в нашем случае необходимо выдать права и роль в ручную. Пишем название роли для бота, мы для примера взяли Бот и выставляем галочки в правах.
Внимание: У каждого бота есть свои текстовые команды и префикс, условия для работы, но они они могут повторятся.
Например: у одного бота, команда воспроизведение музыки может быть следующая $Music[пробел]название трека, а другого !Play[пробел]название трека
У выбранного нами бота WildBot имеются свои команды и префикс (++) для ввода.
Вводим в текстовой чат на сервере команду ++help и получаем в личные сообщения от нашего бота список основных команд для работы.
Далее мы вводим команду ++voice, чтобы добавить бота в голосовой чат.
(Очень важно, если вы хотите слышать музыку)
Далее мы видим в текстовом чате следующее.
- ++request – Добавление музыки в плейлист (Ссылка на видео из Youtube или Soundcloud).
- ++music pause – Поставить музыку на паузу.
- ++music play – Воспроизводить музыку.
- ++volumе – Изменять громкость музыки.
- ++playlist – Посмотреть плейлист.
- ++Shuffle – Перемешать треки в плейлисте.
- ++voteskip – Голосование за пропуск трека.
- ++skip – Пропустить трек.
- ++leave-voice – Убрать бота из голосового чата.
Если бот не начал играть музыку после ввода команды ++voice, добавляем свои треки при помощи команды ++request и затем жмём ++music play.
Наслаждаемся музыкальным ботом на своём сервере.
4 этап – Конец
В данном гайде мы рассмотрели один из вариантов установки музыкального бота на ваш сервер. Этот вариант подойдет тем, кто не хочет мудрить с настройками и установкой бота на свой ПК (сервер). Минус в том, что вы не сможете контролировать работоспособность такого бота, но вы всегда можете его поменять на другого.
Музыкальные боты для Discord
Discord по праву считается одним из лучших игровых чатов. Он обладает простым интерфейсом и широкими функциональными возможностями. И это не осталось незамеченным у пользователей, которые все чаще выбирают именно данный чат для своего отдыха. Разработчики, в свою очередь, стремятся сделать свое детище еще лучше. Возможность добавления бота – отличный способ разнообразить время, проведенное за программой. Музыкальный бот для Discord – прямое доказательство этому.
Нужен ли бот?
Музыкальный бот «Дискорд» дает своим пользователям широкие возможности для управления и регулирования процессом воспроизведения музыки. Он позволяет слушать любимую музыку, улучшает проведенное за приложением время. Позволяет просто расслабиться, забыть о суете повседневной жизни.
Последнее время все чаще можно наткнуться на музыкальные каналы. Это говорит о том, что функция по воспроизведению музыки является актуальной для многих пользователей.
Включенные аудиоплееры снижают скорость работы компьютера. А «Дискорд» практически никак на нее не влияет, так как разработан специально для геймеров. Имеется возможность прослушивать музыку в фоне, но в реальном времени. Это значит, что можно составить свой плейлист. К сожалению, транслировать треки с «ВКонтакте», к примеру, не получится.
Установка
Для инсталляции необходимо скачать бота. Для этого можно воспользоваться, к примеру, ресурсом www.carbonitex.net. Здесь можно отыскать много различных вариантов. В том числе и на русском языке. Можно воспользоваться любым другим сайтом, которых существует достаточное количество. Все они предлагают различные продукты нужного нам направления с различным функционалом. Внимательно ознакомьтесь с предложениями. Просмотрите описание. Одни варианты предложат только прослушивать музыку. В их названии, как правило, имеется вставка «MusicBot». У других более широкие возможности вспомогательного характера.
Сделав свой выбор, приступаем непосредственно к установке. Для этого рядом с названием бота ищем кнопку «Add Bot To Server» либо же «Добавить», «Invite». В зависимости от источника, названия будут разные. Желательно, чтобы во время инсталляции «Дискорд» был запущен. Это ускорит и облегчит процесс.
Начнется загрузка, и откроется отдельное окно, позволяющее сделать нужные настройки. Первым делом выберите из списка сервер, на который будет устанавливаться продукт. Когда выбор сделан, необходимо настроить бота. Рекомендуется не снимать галочки, чтобы бот работал правильно и успешно выполнял свои функции. Но все настройки установлены по умолчанию. Поэтому по своему желанию их можно изменить.
Остается лишь активировать программу. Может потребоваться ввести капчу, чтобы подтвердить, что вы не робот.
Как пользоваться
После установки можно приступать к использованию продукта. Для этого на созданном сервере проверяем участников. Имя бота должно быть в списке.
Управление ботом происходит с помощью специальных кодов, которые у каждого продукта свои. Конечно, команды могут быть схожими. Но для каждого бота существует свой отдельный префикс для ввода.
Варианты ботов
На «Дискорд» можно поставить много различных приложений. Наиболее популярными являются:
- Rhythm;
- MedalBot;
- Fredboat;
- WildBot;
- Groovy;
- ErisBot;
- Tony Bamanaboni XD;
- Dabbot;
- 24/7;
- Zandercraft;
- BMO.
Некоторые продукты рассмотрим подробнее.
Rhythm
Это лучший музыкальный бот, по мнению многих пользователей. Он поддерживает потоковое воспроизведение из нескольких источников («Ютуб», Soundcloud, Twitch). Обладает интересной способностью извлекать песню из имеющегося плейлиста. В Rythme можно просматривать тексты песен.
Модульная панель позволит администраторам настроить приложение по своему усмотрению.
Существует и недостаток. Дело в том, что дополнение работает только в голосовых каналах. Для текстовых он не подойдет.
MedalBot
Удобно прослушивать аудио через бота MedalBot. После установки его имя появится в чате вместе с другими участниками. Для него используется префикс «.» (точка без кавычек). Для начала работы нужно запросить список кодов, отправив ему в личных сообщениях команду .medalhelp. В ответ придет сообщение с кодами. Удобно то, что они разделены на разделы.
На сервере нужно создать канал в разделе «Голосовая связь». В строке для сообщения нужно ввести команду m!play, затем пробел и затем ссылку. Ссылка может быть скопирована, к примеру, с «Ютуба» или облака Cloud. В ответном сообщении будет указано название и длительность трека, а также никнейм пользователя, который сделал запрос на воспроизведение.
WildBot
Для начала работы с данным продуктом необходимо получить список команд управления. Для этого в чате необходимо отправить сообщение ++help. В ответ придет список кодов. Стоит отметить, что для ввода в данном случае используется префикс «++». Чтобы прослушивать музыку, необходимо бота добавить в чат с помощью команды ++voice. Список команд придет на английском языке. Поэтому их придется переводить. Некоторые из них приведены на картинке ниже.
Fredboat
Разработан для воспроизведения музыки из различных источников. В том числе и по прямой ссылке с различных источников. Имеется возможность создавать плейлисты. Треки переключаются в автоматическом режиме.
Искать музыку можно через поисковик. Не обязательно указывать ссылку. Можно ввести название желаемого трека. Программа предоставит 5 вариантов по заданному запросу.
Дополнений для прослушивания музыки в «Дискорд» очень много. И выбрать из них сложно. У каждого пользователя свои требования и предпочтения. Поэтому именно участники и решают, какой же бот лучше.
Как создать музыкального бота в Discord за 2 минуты?
Сегодня расскажем как создавать собственного музыкального бота в Дискорде. Нижеприведенный способ выгодно отличается тем, что вам не нужен свой хост и бот будет запускаться на внешнем сервере (на сайте dynobot.net).
1. На сайте dynobot.net нажимаем «Login with Discord». Далее нажимаем «авторизировать». В следующем окне в верхнем справа выпадающем списке выберите сервер, на который вы хотите добавить бота.
2. Далее перед нами открывается экран настроек бота. В самом верхнем пункте меню слева выберите «Bot Settings», там можно задать Prefix, т.е. тот символ с которого будут начинаться команды для ботов на вашем сервере (по умолчанию это восклицательный знак). В поле «Nickname» можно задать имя бота.
3. Создаем непосредственно музыкального бота для канала. В меню слева находим пункт меню «Music». Там нужно выбрать канал, на котором будет работать данный бот и задать ему роль. Роль можно выбрать из существующих или создать новую.
4. Далее переходим на наш сервер Дискорд, открываем канал, где в предыдущем пункте мы указали будет работать наш музыкальный бот. В канале можно написать !help (обратите внимание, что команда начинается с префикса ! или того, который вы задали во 2 пункте). Бот отправит вам в личку список доступных команд.
5. Чтобы музыкальный бот проиграл песню, нужно ввести !play esskeetit. То есть после !play через пробел вводите название песни. Чтобы остановить песню пропишите !stop.
Команда пропуска песни — !skip, а команда очистки экрана от текстов бота !clean
Вот и всё, это самая простая и быстрая установка музыкального бота.