#python #discord
Вопрос:
Приведенный ниже код функционирует так, как задумано, когда я ввожу «- цикл » во время воспроизведения песни. Он даже показывает текущую очередь. Однако, когда песня заканчивается, она не зацикливается, несмотря на то, что режим цикла включен / включен.
@commands.command(name='loop', help='This command toggles loop mode')
async def loop_(self, ctx):
global loop
if loop:
await ctx.send('Loop mode is now `False!`')
loop = False
else:
await ctx.send('Loop mode is now `True!`')
loop = True
Я искал ошибки, и все сводилось к этому.
IndexError: list index out of range
Что относится к этому фрагменту кода.
@commands.command(name='play', aliases=['sing','p'], description="streams music")
async def play_(self, ctx, *, search: str):
await ctx.trigger_typing()
vc = ctx.voice_client
if not vc:
await ctx.invoke(self.connect_)
player = self.get_player(ctx)
if loop:
queue.append(queue[0])
del(queue[0])
await ctx.send('**Now playing:** {}'.format(player.title))
await player.queue.put(source)
И эти конкретные строки в этом фрагменте кода. Две строки «если цикл» предназначены для добавления текущей воспроизводимой песни в конец, чтобы после завершения второй песни в очереди первая песня воспроизводилась снова. Строка «del(очередь[0])» предназначена для удаления первой песни после ее воспроизведения.
if loop:
queue.append(queue[0])
del(queue[0])
Я попытался включить цикл, прежде чем вводить «-воспроизведение [песни]», чтобы посмотреть, должен ли заказ что-либо с этим делать. Это не оказало никакого влияния. Я попытался определить различные элементы управления очередью вместо того, чтобы помещать «просмотреть очередь», «удалить песню 1» и «добавить в очередь» под одну и ту же команду, но это никак не повлияло.
Главный вопрос, который у меня есть, — «Что означает IndexError: индекс списка вне диапазона» в этом контексте? Я чувствую, что если я это пойму, то смогу найти решение.
Любые предложения помогут! Кроме того, я новичок в переполнении стека, поэтому дайте мне знать, если я отформатировал что-то неправильно или не соблюдаю этикет переполнения стека lol.
Если с ошибкой ничего не поделаешь или она выглядит слишком утомительной для исправления, я не возражаю просто не добавлять эту опцию. Достаточно легко ввести «-играть» десять раз. Просто хотел знать, есть ли что-то, чего я не вижу. Спасибо за помощь!