import disnake import audio import sponsorblock import utils from constants import EMBED_COLOR, SPONSORBLOCK_CATEGORY_NAMES from state import players from .utils import command_allowed async def sponsorblock_command(message): if not command_allowed(message, immutable=True): return if not message.guild.voice_client.source: await utils.reply(message, "nothing is playing!") return progress = message.guild.voice_client.source.original.progress video = await sponsorblock.get_segments(players[message.guild.id].current.player.id) if not video: await utils.reply( message, "no sponsorblock segments were found for this video!", ) return text = [] for segment in video["segments"]: begin, end = map(int, segment["segment"]) if (category := segment["category"]) in SPONSORBLOCK_CATEGORY_NAMES: category = SPONSORBLOCK_CATEGORY_NAMES[category] current = "**" if progress >= begin and progress < end else "" text.append( f"{current}`{audio.utils.format_duration(begin)}` - `{audio.utils.format_duration(end)}`: {category}{current}", ) await utils.reply( message, embed=disnake.Embed( title="Sponsorblock segments", description="\n".join(text), color=EMBED_COLOR, ), )