From a51483f9da9f89d445502ad0b12c8384570a0ac5 Mon Sep 17 00:00:00 2001
From: "Edgar P. Burkhart" <git@edgarpierre.fr>
Date: Sun, 23 Mar 2025 13:06:45 +0100
Subject: [PATCH] Add shuffle listener to VoiceBot for enhanced voice state
 management

---
 botbotbot/voice.py | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/botbotbot/voice.py b/botbotbot/voice.py
index 2299151..65c5e8c 100644
--- a/botbotbot/voice.py
+++ b/botbotbot/voice.py
@@ -28,6 +28,7 @@ class VoiceBot:
 
     def init_events(self) -> None:
         self.bot.add_listener(self.on_voice_state_update, "on_voice_state_update")
+        self.bot.add_listener(self.shuffle, "on_voice_state_update")
         self.bot.add_listener(self.random_connect, "on_ready")
         self.bot.add_application_command(
             discord.SlashCommand(
@@ -145,6 +146,17 @@ class VoiceBot:
         ):
             await self.connect_voice(after.channel)
 
-        if self.shf and before.channel is None and random.random() < 5 / 100:
+    async def shuffle(
+        self,
+        member: discord.Member,
+        before: discord.VoiceState,
+        after: discord.VoiceState,
+    ) -> None:
+        if (
+            self.shf
+            and before.channel is None
+            and member != self.bot.user
+            and random.random() < 5 / 100
+        ):
             logger.info(f"Voice shuffle from {member}")
             await self.shf.try_shuffle(member.guild)