fix(voice): make play_tts play in VC instead of no-op
play_tts was returning success without playing anything when bot was in a voice channel. Now it calls play_in_voice_channel directly. Simplified skip_double dedup: base adapter handles voice input TTS via play_tts (which now works for VC), runner skips to avoid double.
This commit is contained in:
parent
5254d0bba1
commit
f1b4d0b280
3 changed files with 23 additions and 25 deletions
|
|
@ -695,13 +695,14 @@ class DiscordAdapter(BasePlatformAdapter):
|
|||
) -> SendResult:
|
||||
"""Play auto-TTS audio.
|
||||
|
||||
When the bot is in a voice channel for this chat's guild, skip the
|
||||
file attachment — the gateway runner plays audio in the VC instead.
|
||||
When the bot is in a voice channel for this chat's guild, play
|
||||
directly in the VC instead of sending as a file attachment.
|
||||
"""
|
||||
for gid, text_ch_id in self._voice_text_channels.items():
|
||||
if str(text_ch_id) == str(chat_id) and self.is_in_voice_channel(gid):
|
||||
logger.debug("[%s] Skipping play_tts for %s — VC playback handled by runner", self.name, chat_id)
|
||||
return SendResult(success=True)
|
||||
logger.info("[%s] Playing TTS in voice channel (guild=%d)", self.name, gid)
|
||||
success = await self.play_in_voice_channel(gid, audio_path)
|
||||
return SendResult(success=success)
|
||||
return await self.send_voice(chat_id=chat_id, audio_path=audio_path, **kwargs)
|
||||
|
||||
async def send_voice(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue