繁体   English   中英

Discord.py 播放音乐未播放但加入

[英]Discord.py play music isnt playing but joins

所以我的机器人加入并搜索歌曲就好了。 但是,它不播放任何内容。 我在控制台上遇到的错误是:

忽略命令播放中的异常: Traceback(最近一次调用最后一次):文件“C:\Users\Richard Ille\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py” ,第 85 行,已包装 ret = await coro(*args, **kwargs) 文件“C:\Users\Richard Ille\Desktop\Folders\Yota Inc discord bot\cogs\music3.py”,第 94 行,在玩自我.start_playing(ctx.voice_client, player) 文件“C:\Users\Richard Ille\Desktop\Folders\Yota Inc discord bot\cogs\music3.py”,第 108 行,在 start_playing self.queue[0] = player IndexError:列表分配索引超出范围

上述异常是以下异常的直接原因:

Traceback(最近一次调用):文件“C:\Users\Richard Ille\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py”,第 939 行,在调用中等待 ctx.command.invoke(ctx) 文件“C:\Users\Richard Ille\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py”,第 863 行,在调用等待注入(*ctx.args,**ctx.kwargs)文件“C:\Users\Richard Ille\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py ",第 94 行,从 exc discord.ext.commands.errors.CommandInvokeError:命令引发异常:IndexError:列表分配索引超出范围

这是我的代码:

@commands.command()
    async def play(self, ctx, *, url):

        #try:

        async with ctx.typing():
            player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True)

            if len(self.queue) == 0:

                self.start_playing(ctx.voice_client, player)
                await ctx.send(f':mag_right: **Searching for** ``' + url + '``\n**Now Playing:** ``{}'.format(player.title) + "``")

            else:
                    
                self.queue[len(self.queue)] = player
                await ctx.send(f':mag_right: **Searching for** ``' + url + '``\n**Added to queue:** ``{}'.format(player.title) + "``")

        #except:

        #await ctx.send("Somenthing went wrong - please try again later!")

    def start_playing(self, voice_client, player):

        self.queue[0] = player

        i = 0
        while i <  len(self.queue):
            try:
                voice_client.play(self.queue[i], after=lambda e: print('Player error: %s' % e) if e else None)

            except:
                pass
            i += 1

我不太了解您要说的内容,但是错误消息清楚地表明问题出在self.queue[0] = player中。 正如if语句所保证的那样, self.queue是空的,因此尝试获取索引会引发IndexError

此外,在else块中,您无法获得self.queue[len(self.queue)] ,因为最后一个索引是len(self.queue)-1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM