Бот дискорд который включает музыку из ютуба

Как воспроизвести весь плейлист YouTube на discord.py бот с youtube-dl

  • Post author: admin
  • Запись опубликована: 24 августа, 2022
  • Post category: Вопросы по программированию

#python #ffmpeg #bots #discord.py #youtube-dl

#python #ffmpeg #боты #discord.py #youtube-dl

Вопрос:

Я пытаюсь создать музыкального бота discord. Я использую youtube-dl для извлечения информации и ffmpeg для воспроизведения звука. Мой бот может успешно ставить в очередь и воспроизводить обычные видео, но когда дело доходит до воспроизведения всего списка воспроизведения, он не работает.

Это мой код для воспроизведения плейлистов:

if ‘entries’ in info: for i in info[‘entries’]: URL = i[‘formats’][0][‘url’] player = FFmpegPCMAudio(URL, **FFMPEG_OPTIONS) queue.append(player) source = queue.pop(0) voice.play(player, after = lambda e: play_next(ctx, source)) await ctx.send(‘playing song’)

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

СМОТРИ ЗАКРЕПЛЕННЫЙ КОМЕНТАРИЙ || Ютуб бот для дискорда | Как сделать оповещения о новых роликах.


discord.errors.ClientException: Already playing audio.

Ответ №1:

вы можете проверить, воспроизводит ли голос аудио или нет, и делать что-то на основе этого значения,

if voice is None: voice.play(player, after = lambda e: play_next(ctx, source)) else: print(«Audio is playing!»)

но, выполнив команду «voice is None», это означает, что он не только проверит, воспроизводится ли звук, но и проверит все, что нужно делать с голосом, но хорошая вещь при этом заключается в том, что вы можете проверить, находится ли бот все еще в голосовом канале или нет, прежде чем должна начаться следующая песня, иприсоединяйтесь к каналу снова, если у бота была некоторая задержка между воспроизведением песен и оставленной причиной бездействия,

Еще по теме:  Топикстартер дискорд что это

voice = discord.utils.get(client.voice_clients, guild=ctx.guild) if voice is_playing(): if voice is None: voiceChannel = discord.utils.get(ctx.guild.voice_channels, name=ctx.author.voice.channel.name) await voiceChannel.connect() voice = discord.utils.get(client.voice_clients, guild=ctx.guild) voice.play(player, after = lambda e: play_next(ctx, source)) else: voice = discord.utils.get(client.voice_clients, guild=ctx.guild) voice.play(player, after = lambda e: play_next(ctx, source))

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

Ответ №2:

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

Вам нужно либо посмотреть, как выполнить блокирующий вызов play (вне области видимости для переполнения стека), либо проверить время воспроизведения из метаданных файла, и sleep это долго.

ЮТУБ БЛОКИРУЕТ МУЗЫКАЛЬНЫХ БОТОВ В DISCORD | ИЗВЕСТНАЯ ИНФОРМАЦИИ И ВОЗМОЖНЫЕ ПУТИ РЕШЕНИЯ

Это заставляет вас двигаться?

1. Понятно, думаю, я попробую это сделать. Большое спасибо!

Источник: programbox.ru

discord.py и youtube_dl воспроизведение аудио без скачки

как можно воспроизвести аудио в боте при помощи библиотеки youtube_dl, но без установки самого аудио в директорию бота (из-за этой установки невозможно запустить стримы с музыкой по типу lo-fi) и если ни как нельзя, то какую библиотеку можно для этого использовать (существуют же боты по типу MEE6, Rythm, Groove, которые играют стримы спокойно и моментально, а с учётом что запуск аудио моментальный, да и боты очень популярны, то явно это происходит без скачки видео)

Еще по теме:  Как заблокировать человека в дискорд

Отслеживать
задан 6 дек 2020 в 13:33
Maxim Filonenko Maxim Filonenko
43 2 2 серебряных знака 8 8 бронзовых знаков
никакие адекватные люди не делают ботов на питоне. Для этого есть js
6 дек 2020 в 13:59

А что плохого в питоне для этой цели? Есть динамическая типизация, что крайне удобно при работе с переменными из команд, сам синтаксис очень простой. Чем так не устраивает?

6 дек 2020 в 14:07

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Делается это так:

Для реализации такой команды нужен FFMPEG — .exe файл, необходимый для запуска звука. Этот экзешник запускается через Discord API.

Скачать его можно здесь. Также можете скачать архив (Загрузка начнется сразу)

В папке должно быть 3 файла: ffmpeg.exe , ffplay.exe , ffprobe.exe .

Запускам с явным указанием исполняемого файла ffmpeg.exe :

voice.play(discord.FFmpegPCMAudio(executable=»путь\к\файлу\ffmpeg.exe», source = URL, **FFMPEG_OPTIONS))

Источник: ru.stackoverflow.com

Как транслировать музыку с YouTube через дискорд бота?

Здравствуйте, хочу освоить это направление в написании дискорд ботов.

Все видео которые я смотрел основаны на скачивании музыки с ютуба с помощью ytdl или pytube но мне это никак не помогает. Это работает, да, но кому надо засорять место на жд так и ещё убрать ассинхронность бота?(Я делаю бота всего для 5 серверов, но этого достаточно чтобы было слишком много запросов.)

Я давно подозревал что все музыкальные боты которые были успешно запущены в массовое пользование аудио не скачивают а транслируют с YouTube.
С поиском композиции я справился, а с трансляцией в дискорд нет. Неужели если я захочу послушать часовую версию какой-нибудь песни боту придётся её полностью скачивать и транслировать в дискорд? Я вот послушаю минут 10 и выключу. Это как минимум не логично и это бессмысленная трата ресурсов.

Еще по теме:  Voice master discord bot что это

Я даже кусок кода не могу вставить потому что понятия не имею что там может быть.

P.s. Возможно вопрос дубликат. Да, я понимаю что это тема заезженная. Но чтобы настолько всё было плохо я ещё не видел. Помогите кто может.

  • Вопрос задан 28 окт. 2022
  • 271 просмотр

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...