@x4zx
python developer

Как создать список треков?

пишу музыкального бота, на данный момент столкнулся с проблемой, при вызове команды "play" бот проигрывает музыку, соответственно это заносится в очередь и каждый трек под своим номером. Но получилось так что часть кода почему-то не работает и при вводе команды для получения списка треков "queue" все треки имеют номер 1

Код:

@commands.command()
    async def queue(self, ctx):
        """Retrieve a basic queue of upcoming songs."""
        vc = ctx.voice_client

        if not vc or not vc.is_connected():
            embed = discord.Embed(title = "", description = "Я не подключен к голосовому каналу.", colour = 0x9370DB)
            return await ctx.send(embed = embed)

        player = self.get_player(ctx)
        if player.queue.empty():
            embed = discord.Embed(title = "", description="Очередь пуста.", colour = 0x9370DB)
            return await ctx.send(embed = embed)

        seconds = vc.source.duration % (24 * 3600) 
        hour = seconds // 3600
        seconds %= 3600
        minutes = seconds // 60
        seconds %= 60
        if hour > 0:
            duration = "%d:%02d:%02d" % (hour, minutes, seconds)
        else:
            duration = "%02d:%02d" % (minutes, seconds)

        # Grabs the songs in the queue...
        upcoming = list(itertools.islice(player.queue._queue, 0, int(len(player.queue._queue))))
        fmt = '\n'.join(f"`{(upcoming.index(_)) + 1}.` [{_['title']}]({_['webpage_url']}) | Запросил: {_['requester']}\n" for _ in upcoming)
        embed = discord.Embed(title = f'Очередь для {ctx.guild.name}', description = fmt, colour = 0x9370DB)
        embed.set_footer(text = f"{ctx.author}", icon_url = ctx.author.avatar_url)

        await ctx.send(embed = embed)
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
> upcoming.index(_)
Попробуй использовать enumerate() для нумерации элементов списка (или иной коллекции).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы