From aa4017e090d27b4b309679ebaab52916cfb37f6b Mon Sep 17 00:00:00 2001 From: Choco <94597336+ChocoMeow@users.noreply.github.com> Date: Mon, 9 Sep 2024 11:34:45 +0800 Subject: [PATCH] Supported clear queue endpoint in ipc --- cogs/basic.py | 8 +------- ipc/methods.py | 5 +++++ voicelink/player.py | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/cogs/basic.py b/cogs/basic.py index 06baea6..e6ed3a6 100644 --- a/cogs/basic.py +++ b/cogs/basic.py @@ -646,13 +646,7 @@ class Basic(commands.Cog): if not player.is_privileged(ctx.author): return await send(ctx, "missingPerms_queue", ephemeral=True) - queue = queue.lower() - if queue == 'history': - player.queue.history_clear(player.is_playing) - else: - queue = "queue" - player.queue.clear() - + await player.clear_queue(queue, ctx.author) await send(ctx, "cleared", queue.capitalize()) @commands.hybrid_command(name="remove", aliases=get_aliases("remove")) diff --git a/ipc/methods.py b/ipc/methods.py index b0f0764..d88bcfc 100644 --- a/ipc/methods.py +++ b/ipc/methods.py @@ -266,6 +266,10 @@ async def removeTrack(player: Player, member: Member, data: Dict) -> None: index, index2 = data.get("index"), data.get("index2") await player.remove_track(index, index2, requester=member) +async def clearQueue(player: Player, member: Member, data: Dict) -> None: + queue_type = data.get("queue_type", "").lower() + await player.clear_queue(queue_type, member) + async def updateVolume(player: Player, member: Member, data: Dict) -> None: if not member.guild_permissions.manage_guild: return missingPermission(member.id) @@ -711,6 +715,7 @@ METHODS: Dict[str, Union[SystemMethod, PlayerMethod]] = { "shuffleTrack": PlayerMethod(shuffleTrack, credit=3), "repeatTrack": PlayerMethod(repeatTrack), "removeTrack": PlayerMethod(removeTrack), + "clearQueue": PlayerMethod(clearQueue), "updateVolume": PlayerMethod(updateVolume, credit=2), "updatePause": PlayerMethod(updatePause), "updatePosition": PlayerMethod(updatePosition), diff --git a/voicelink/player.py b/voicelink/player.py index 24ab376..d58dfbb 100644 --- a/voicelink/player.py +++ b/voicelink/player.py @@ -633,6 +633,7 @@ class Player(VoiceProtocol): return self._volume async def shuffle(self, queue_type: str, requester: Member = None) -> None: + """Shuffles the tracks in the specified queue or history.""" replacement = self.queue.tracks() if queue_type == "queue" else self.queue.history() if len(replacement) < 3: raise VoicelinkException(self.get_msg('shuffleError')) @@ -708,6 +709,19 @@ class Player(VoiceProtocol): self._logger.debug(f"Player in {self.guild.name}({self.guild.id}) has been applied a {filter.tag} filter.") return self._filters + async def clear_queue(self, queue_type: str, requester: Member = None) -> None: + queue_type = queue_type.lower() + if queue_type == 'history': + self.queue.history_clear(self.is_playing) + elif queue_type == "queue": + self.queue.clear() + + if self.is_ipc_connected: + await self.send_ws({ + "op": "clearQueue", + "queue_type": queue_type + }, requester) + async def remove_filter(self, filter_tag: str, requester: Member = None, fast_apply: bool = False) -> Filters: self._filters.remove_filter(filter_tag=filter_tag) payload = self._filters.get_all_payloads()