From 42132c6013b4a324b8a4aac2c3bf26b2ae4f67a7 Mon Sep 17 00:00:00 2001 From: SamlonDev Date: Thu, 22 May 2025 11:44:29 +0200 Subject: use python yt-dlp instead of shell --- cogs/music/skip.py | 84 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 35 deletions(-) (limited to 'cogs/music/skip.py') diff --git a/cogs/music/skip.py b/cogs/music/skip.py index f48218b..67c391e 100644 --- a/cogs/music/skip.py +++ b/cogs/music/skip.py @@ -4,44 +4,58 @@ import discord class Skip(commands.Cog): def __init__(self, bot): self.bot = bot - self.queues = {} - - def get_queue(self, guild_id): - return self.queues.setdefault(guild_id, []) - - def play_next(self, ctx, vc, guild_id): - queue = self.get_queue(guild_id) - if queue: - _, _, file_path = queue[0] - def after_playing(error=None): - if queue: - queue.pop(0) - if queue: - _, _, next_file = queue[0] - if not vc.is_playing(): - vc.play(discord.FFmpegPCMAudio(next_file), after=after_playing) - if not vc.is_playing(): - vc.play(discord.FFmpegPCMAudio(file_path), after=after_playing) @commands.slash_command(name="pomiń", description="przeskocz do nastepnej melodyji") async def pomin(self, ctx): - guild_id = ctx.guild.id + """Skip the current song and play the next one in the queue.""" vc = ctx.voice_client - if vc and vc.is_playing(): - queue = self.get_queue(guild_id) - if queue: - queue.pop(0) - if queue: - vc.stop() - self.play_next(ctx, vc, guild_id) - await ctx.respond("przeskoczono do nastepnej melodyji") - else: - await ctx.respond("koleyjka jest pustawa") - await vc.disconnect() - else: - await ctx.respond("nic nie gra") - else: - await ctx.respond("nic nie gra") + + if not vc or not vc.is_connected(): + await ctx.respond("Nie jestem połączony z kanałem głosowym.") + return + + if not vc.is_playing() and not vc.is_paused(): + await ctx.respond("Nic nie jest teraz odtwarzane.") + return + + # Get the play cog + play_cog = self.bot.get_cog('Play') + if not play_cog: + await ctx.respond("Błąd: Nie można znaleźć modułu odtwarzania.") + return + + queue = play_cog.get_queue(ctx.guild.id) + + if not queue: + await ctx.respond("Kolejka jest pusta.") + return + + # Stop the current song (this will trigger play_next in the after callback) + vc.stop() + await ctx.respond("Pominięto aktualną piosenkę.") + + @commands.slash_command(name="kolejka", description="pokaż aktualną kolejkę") + async def queue_list(self, ctx): + """Show the current queue.""" + play_cog = self.bot.get_cog('Play') + if not play_cog: + await ctx.respond("Błąd: Nie można znaleźć modułu odtwarzania.") + return + + queue = play_cog.get_queue(ctx.guild.id) + + if not queue: + await ctx.respond("Kolejka jest pusta.") + return + + queue_list = [] + for i, (title, _) in enumerate(queue[:10], 1): # Show up to 10 songs + queue_list.append(f"{i}. {title}") + + if len(queue) > 10: + queue_list.append(f"...i {len(queue) - 10} więcej") + + await ctx.respond("\n".join(["**Kolejka:**"] + queue_list)) def setup(bot): - bot.add_cog(Skip(bot)) \ No newline at end of file + bot.add_cog(Skip(bot)) \ No newline at end of file -- cgit v1.2.3