Discord.py重写音乐机器人排队

我正在使用discord.py rewrite在音乐机器人上解决不和谐问题,并创建了一个词典队列,该队列添加了带有服务器ID的新条目,但是我不确定如何在当前歌曲播放时播放下一个词典条目完成播放。

我还使play命令调用queueNext()函数从队列中删除当前正在播放的歌曲,因此下一首歌曲是第一首条目,但是现在该代码没有方法播放队列中的下一首歌曲,下面是代码:

# Music Bot
ytdl_options = {
    'format': 'bestaudio/best','restrictfilenames': True,'noplaylist': True,'nocheckcertificate': True,'quiet': True,'ignoreerrors': False,'logtostderr': False,'no_warnings': True,'default_search': 'auto','source_address': '0.0.0.0'
    }
bot.queue = {}
bot.vc = None
async def queueNext(srv):
    if bot.queue[srv]:
        bot.queue[srv].pop(0)
    else:
        bot.vc.disconnect()
@bot.command()
async def play(ctx,*,url: str = None):
    if not url:
        await ctx.send('Please specify a title or URL for me to play.')
        return
    voiceChannel = ctx.author.voice.channel
    if ctx.voice_client is not None:
        await ctx.voice_client.move_to(voiceChannel)
    elif ctx.author.voice and ctx.author.voice.channel:
        await voiceChannel.connect()
    bot.vc = ctx.voice_client
    ytdl = youtube_dl.YoutubeDL(ytdl_options)
    loop = asyncio.get_event_loop()
    data = await loop.run_in_executor(None,lambda: ytdl.extract_info(url))
    if 'entries' in data:
        data = data['entries'][0]
    server = ctx.guild.id
    if server in bot.queue:
        bot.queue[server].append(data)
    else:
        bot.queue[server] = [data]
    await ctx.send(data.get('title') + ' added to the queue.')
    if not bot.vc.is_playing() if bot.vc else True:
        source = ytdl.prepare_filename(bot.queue[server][0])
        bot.vc.play(discord.FFmpegPCMAudio(source,options='-vn'),after=await queueNext(server))
        await ctx.send('Now playing: ' + data.get('title'))

任何帮助将不胜感激,即使只是帮助逻辑地解释使它按预期工作也必须做些什么。

wz7181 回答:Discord.py重写音乐机器人排队

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3029569.html

大家都在问