From 03e858991836bab6fe1230d7cfb98fe5278aa571 Mon Sep 17 00:00:00 2001 From: owen Date: Thu, 17 Sep 2026 17:29:36 -0500 Subject: [PATCH] ttstoy: make tts join behave as a summon Connect to the caller's voice channel when the bot is not in voice, and move to the caller's channel if the bot is currently in a different one (via Player.move_to). Previously it only connected when the bot had no voice state, so it would not follow the user between channels. --- ttstoy/ttstoy.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/ttstoy/ttstoy.py b/ttstoy/ttstoy.py index 5e96e34..a907b9c 100644 --- a/ttstoy/ttstoy.py +++ b/ttstoy/ttstoy.py @@ -2434,12 +2434,21 @@ class TtsToy(Cog): # Check if user is in a VC - we'll play there if so, but it's not required user_in_vc = ctx.author.voice and ctx.author.voice.channel - if user_in_vc and not ctx.guild.me.voice: - # Connect via the shared Lavalink client (owned by the YTAudio cog). - try: - await lavalink.connect(ctx.author.voice.channel) - except Exception: - log.exception("[TTS] Failed to connect to voice channel via Lavalink.") + if user_in_vc: + target_channel = ctx.author.voice.channel + me_voice = ctx.guild.me.voice + # Summon: connect if not in voice, or move if in a different channel. + if me_voice is None or me_voice.channel is None: + try: + await lavalink.connect(target_channel) + except Exception: + log.exception("[TTS] Failed to connect to voice channel via Lavalink.") + elif me_voice.channel.id != target_channel.id: + try: + player = lavalink.get_player(ctx.guild.id) + await player.move_to(target_channel) + except Exception: + log.exception("[TTS] Failed to move to the user's voice channel.") mode = await self._get_tts_mode()