gpt4 book ai didi

python - 如何使用 youtube-dl 在 discord.py bot 上播放整个 youtube 播放列表

转载 作者:行者123 更新时间:2023-12-04 23:11:58 24 4
gpt4 key购买 nike

我正在尝试制作一个不和谐的音乐机器人。我正在使用 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.

最佳答案

您可以检查语音是否正在播放音频并根据该值执行操作,

if voice is None:
voice.play(player, after = lambda e: play_next(ctx, source))
else:
print("Audio is playing!")
但是通过执行“voice is None”,这意味着它不仅会检查音频是否正在播放,它还会检查所有有声音的事情,但这样做的好处是你可以检查机器人是否仍在语音 channel 中或如果机器人在播放歌曲和导致不活动之间存在一些延迟,则不应在下一首歌曲开始并再次加入 channel 之前,
voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
if voice is_playing(): <--- something like this but that works!
voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
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))
最后一个例子可能有点未完成,但如果你能得到我的箭头指向的部分,它应该非常接近工作,但据我所知,这是一个很好的解决方案希望这能帮助我知道我是这个很晚了:)。

关于python - 如何使用 youtube-dl 在 discord.py bot 上播放整个 youtube 播放列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64999669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com