From 6ed69bc686e3db7964ce7ec6459207c98a3b69d7 Mon Sep 17 00:00:00 2001 From: owen Date: Mon, 14 Sep 2026 14:46:09 -0500 Subject: [PATCH] ttstoy: remove all TTS server management commands from the bot The dectalk, morshu, and vox servers are managed entirely by systemd now, so the bot no longer needs to inspect or manage them. Removed the stop and status commands for all three, the unused dectalk_auto_start config, and the dead server directory and process attributes. The cog keeps only the fixed ports it uses to reach the services over HTTP. --- ttstoy/ttstoy.py | 136 +++-------------------------------------------- 1 file changed, 6 insertions(+), 130 deletions(-) diff --git a/ttstoy/ttstoy.py b/ttstoy/ttstoy.py index f564e90..1a8a176 100644 --- a/ttstoy/ttstoy.py +++ b/ttstoy/ttstoy.py @@ -365,19 +365,15 @@ class TtsToy(Cog): self.tts_storage = cog_data_path(cog_instance=self).joinpath("ttstoy") self.sfx_root = Path(__file__).resolve().parent / "sfx" - self.dectalk_dir = Path(__file__).resolve().parent / "dectalk-server" - self.dectalk_process = None + # TTS servers run as independent systemd services; the cog only needs + # their ports to reach them over HTTP. self.dectalk_port = 33001 - - # Morshu TTS engine + server + + # Morshu TTS engine (in-process fallback) + service port self.morshu = Morshu() if MORSHU_AVAILABLE else None - self.morshu_dir = Path(__file__).resolve().parent / "morshu-server" - self.morshu_process = None self.morshu_port = 33002 - - # VOX server - self.vox_dir = Path(__file__).resolve().parent / "vox-server" - self.vox_process = None + + # VOX service port self.vox_port = 33003 # TTS queue system - one queue per guild @@ -403,7 +399,6 @@ class TtsToy(Cog): tts_mode="minimax", chatterbox_api_url=CHATTERBOX_DEFAULT_URL, dectalk_api_url=f"http://127.0.0.1:33001", - dectalk_auto_start=True, accessibility_mode=False, vox_pack="vox", webui_tts_channel_id=None, # channel to post web UI TTS transcripts/audio @@ -1931,125 +1926,6 @@ class TtsToy(Cog): await self.config.dectalk_api_url.set(url) await ctx.send(f"✅ DECTalk API URL set to: `{url}`") - @ttstoy_group.command(name="dectalkstop") - @commands.is_owner() - async def dectalk_stop(self, ctx: commands.Context): - """The DECTalk server is managed by systemd, not the bot.""" - await ctx.send( - "The DECTalk server now runs as an independent systemd service " - "(dectalk-tts-server). Manage it with: " - "`sudo systemctl stop dectalk-tts-server`" - ) - - @ttstoy_group.command(name="dectalkstatus") - @commands.is_owner() - async def dectalk_status(self, ctx: commands.Context): - """Check DECTalk server status.""" - auto_start = await self.config.dectalk_auto_start() - dectalk_url = await self._get_dectalk_api_url() - - # Check if installed - server_js = self.dectalk_dir / "server.js" - node_modules = self.dectalk_dir / "node_modules" - installed = server_js.exists() and node_modules.exists() - - # The service is managed by systemd; report API reachability. - # Check if API is responding - api_responding = False - try: - test_url = f"{dectalk_url.rstrip('/')}/health" - r = requests.get(test_url, timeout=2) - api_responding = r.status_code == 200 - except: - pass - - lines = [ - "**DECTalk Server Status**", - f"Installed: {'✅ Yes' if installed else '❌ No'}", - f"API Responding: {'✅ Yes' if api_responding else '❌ No'}", - f"Auto-start: {'✅ Enabled' if auto_start else '❌ Disabled'}", - f"URL: `{dectalk_url}`", - "", - ] - - if not api_responding: - lines.append( - "Service managed by systemd. Start with: " - "`sudo systemctl start dectalk-tts-server`" - ) - - await ctx.send("\n".join(lines)) - - @ttstoy_group.command(name="morshustop") - @commands.is_owner() - async def morshu_stop(self, ctx: commands.Context): - """The Morshu server is managed by systemd, not the bot.""" - await ctx.send( - "The Morshu server now runs as an independent systemd service " - "(morshu-tts-server). Manage it with: " - "`sudo systemctl stop morshu-tts-server`" - ) - - @ttstoy_group.command(name="morshustatus") - @commands.is_owner() - async def morshu_status(self, ctx: commands.Context): - """Check Morshu server status.""" - api_responding = False - try: - r = requests.get(f"http://127.0.0.1:{self.morshu_port}/health", timeout=2) - api_responding = r.status_code == 200 - except: - pass - - lines = [ - "**Morshu Server Status**", - f"API Responding: {'✅ Yes' if api_responding else '❌ No'}", - f"URL: `http://127.0.0.1:{self.morshu_port}`", - ] - - if not api_responding: - lines.append( - "\nService managed by systemd. Start with: " - "`sudo systemctl start morshu-tts-server`" - ) - - await ctx.send("\n".join(lines)) - - @ttstoy_group.command(name="voxstop") - @commands.is_owner() - async def vox_stop(self, ctx: commands.Context): - """The VOX server is managed by systemd, not the bot.""" - await ctx.send( - "The VOX server now runs as an independent systemd service " - "(vox-tts-server). Manage it with: " - "`sudo systemctl stop vox-tts-server`" - ) - - @ttstoy_group.command(name="voxstatus") - @commands.is_owner() - async def vox_status(self, ctx: commands.Context): - """Check VOX server status.""" - api_responding = False - try: - r = requests.get(f"http://127.0.0.1:{self.vox_port}/health", timeout=2) - api_responding = r.status_code == 200 - except: - pass - - lines = [ - "**VOX Server Status**", - f"API Responding: {'✅ Yes' if api_responding else '❌ No'}", - f"URL: `http://127.0.0.1:{self.vox_port}`", - ] - - if not api_responding: - lines.append( - "\nService managed by systemd. Start with: " - "`sudo systemctl start vox-tts-server`" - ) - - await ctx.send("\n".join(lines)) - @ttstoy_group.command(name="accessibility") @commands.is_owner() async def accessibility_toggle(self, ctx: commands.Context):