[英]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.