Цикл песен для бота Discord (Python)

#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.

Если с ошибкой ничего не поделаешь или она выглядит слишком утомительной для исправления, я не возражаю просто не добавлять эту опцию. Достаточно легко ввести «-играть» десять раз. Просто хотел знать, есть ли что-то, чего я не вижу. Спасибо за помощь!