Commit Graph

71 Commits

Author SHA1 Message Date
owen fde236118d Add YTAudio cog: YouTube playback via yt-dlp -> mp3 -> Lavalink
Standalone cog that owns the Red-Lavalink client connection
(initialize on startup, close on unload) and plays YouTube/yt-dlp
sources by downloading audio, transcoding to mp3, and playing through
Lavalink's local source. Per-guild queues, multi-VC capable. Commands:
play, skip, stop, pause, resume, queue, nowplaying, volume, join, leave.
2026-09-17 17:00:42 -05:00
kingston 89c96259fa assistant: add local Ollama backend for the humor chatbot
Make the API base URL configurable (new global config base_url, default to the
local Ollama OpenAI-compatible endpoint http://127.0.0.1:11434/v1 on gpu1).
Local endpoints (127.0.0.1/localhost) need no API key: the on_message, _chat,
and models guards allow a missing key when local, and the Authorization header
is only sent when a key is set. Default guild model is now
llama3.2:3b-instruct-q4_K_M with a humor-focused system prompt. Adds
[p]assistant baseurl to switch endpoints (omit to reset to local), shows the
backend in settings, and raises the request timeout to 120s for local
inference. GreenPT remains usable as a fallback by setting the base URL back to
it and providing a key.

Note: Llama-3.2-3B-Instruct is text-only; the vision path needs a
vision-capable model (e.g. a local llava/llama3.2-vision) or GreenPT.
2026-09-14 18:30:31 -05:00
kingston 164b195c2f style: remove em/en dashes from command help and log text 2026-09-14 18:00:24 -05:00
kingston 6ed69bc686 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.
2026-09-14 14:46:09 -05:00
kingston 5545564e3b ttstoy: remove server start/install commands now handled by systemd
Drop the dectalkstart, dectalkinstall, dectalkautotoggle, morshustart, and
voxstart commands along with the orphaned _start/_stop/_install helper methods
and the dectalk mode-switch auto-start path. The three TTS servers run as
independent systemd services; the stop and status commands now point at
systemctl.
2026-09-14 14:43:16 -05:00
kingston 9ca1511f82 ttstoy: decouple TTS services from the bot lifecycle
The dectalk, morshu, and vox TTS servers now run as independent systemd
services on their fixed ports (33001/33002/33003). The cog no longer spawns
or kills them: start/stop helpers became reachability checks and no-ops, the
cog_load auto-start and cog_unload teardown were removed, and the start/stop/
status commands now point at systemctl. The HTTP client calls are unchanged.
2026-09-14 14:35:53 -05:00
owen f60833b1fd docs: webui now separate service; add Grigori MiniMax alias 2026-09-14 12:23:34 -05:00
owen b40e7f6cad refactor: move webui out of cog, use shared-state pending queue
- drop bundled Flask webui (now lives in scrapyard-website TtsToy)
- _take_pending_state_updates: pop pending commands/posts + refresh user
  info under cross-process lock, matching the webui-side producer
2026-09-14 11:45:47 -05:00
owen 9b992d6dbe fix: persist user guild map when login token is registered
user_guild_map was only written when a login token was consumed on the
webui login page. Users on stale session cookies never re-login, so
their jobs carried empty guild_id and TTS was posted to whatever global
channel happened to match instead of the server they logged in from.
Persist the guild as soon as the bot registers the token so
_resolve_guild_id() falls back to the correct login guild.
2026-09-12 22:12:21 -05:00
owen 53cf544680 fix: route webui internal callbacks to localhost
The bot posts job-status updates and login-token registration to the
public webui URL (ttstoy.kingstons-scrapyard.net) with a 5s timeout.
Under load, that WAN hop times out and jobs stay stuck 'pending' even
though audio was generated. Since the webui runs as a child process of
the bot on the same host, use http://127.0.0.1:8098 for these
server-to-server callbacks instead.
2026-09-12 22:00:29 -05:00
owen 9c0f0fac4f fix: trim chatterbox voice uploads over 30s in webui 2026-09-08 00:22:47 -05:00
owen 6aac9bcae9 fix: trim long chatterbox voice clips to 30s on upload 2026-09-07 23:41:07 -05:00
kingston e0ff129b6b DM listed users when deadman is armed 2026-09-07 15:49:17 -05:00
kingston 9cc3b1ecc1 Add deadman switch cog 2026-09-07 15:45:03 -05:00
kingston b81f3429d4 Add vision model support: auto-switch on image detection, visionmodel command 2026-08-17 00:40:04 -05:00
kingston 71d71b4773 Add showprompt command (admin only) to display full system prompt 2026-08-16 23:51:38 -05:00
kingston 58b1c85bcb Add reasoning command to control reasoning_effort per guild 2026-08-16 23:49:15 -05:00
kingston 28abf4aced Add reasoning_effort: none to prevent empty content from reasoning models 2026-08-16 23:48:03 -05:00
kingston d959d18f41 Fix models sort (by output cost), filter non-chat models, add compression variants 2026-08-16 23:45:23 -05:00
kingston 7eb96c6e65 Remove reasoning_content fallback - don't expose internal thinking 2026-08-16 23:43:15 -05:00
kingston a5c5d29ded Handle DeepSeek reasoning_content fallback for empty responses 2026-08-16 23:27:56 -05:00
kingston 1217bfae67 Debug: show raw API response when empty 2026-08-16 23:26:13 -05:00
kingston 8287efae0d Handle empty API responses gracefully 2026-08-16 23:22:47 -05:00
kingston c0ef8d0e4e Add maxlength command to set max response tokens 2026-08-16 23:21:10 -05:00
kingston ca541c2e82 Fix API URL (api.greenpt.ai), add models command, remove debug logging 2026-08-16 23:07:29 -05:00
kingston 4028f8ef20 Debug: use log.info for visible console output 2026-08-16 23:04:25 -05:00
kingston 3d5a207b13 Fix: remove strict TextChannel check, broaden channel support 2026-08-16 23:03:55 -05:00
kingston ab0a72b660 Debug: add reaction indicators to trace on_message 2026-08-16 23:01:04 -05:00
kingston e72dc8ecbd Add debug logging to on_message listener 2026-08-16 22:58:09 -05:00
kingston 71b70c3ba1 Fix setkey: use button+modal instead of ctx.send_modal 2026-08-16 22:55:02 -05:00
kingston 3e1300112a Fix command group: use @commands.group decorator instead of Group() 2026-07-31 20:48:48 -05:00
kingston 7fa85d7dd9 Rename greeptchat cog to assistant - generic AI chatbot branding 2026-07-31 20:41:40 -05:00
kingston 37a5682e3e Add GreeptChat cog - GreenPT API chat integration 2026-07-27 07:20:44 -05:00
kingston 6b3205da27 Add imagegrab cog: zip channel images with type-based filenames
Images are named using the message text as the filename (type tags for
WebTable card decks). Single image = text.ext, multiple = text_1.ext,
text_2.ext, etc. Falls back to messageID.ext when no text is present.
2026-07-25 16:11:58 -05:00
kingston d9c835edf2 Simplify playit cog - channel ID config, status command 2026-07-10 07:14:11 -05:00
kingston 3f1701d741 Add playitstatus cog - monitor playit.gg status 2026-07-10 07:12:12 -05:00
kingston 79d149f3b8 feat: add minimax mode to /api/mc/tts endpoint 2026-06-09 16:06:54 -05:00
kingston 7c0af41670 feat: rewrite /api/mc/tts with full ttstoy pipeline
- SFX emoji interleaving (inline 🎉💀🔥 etc.)
- Voice switching via [mode|voice] tags
- Chatterbox turbo tokens ([laugh], [cough]) passthrough
- Multi-segment audio concatenation via ffmpeg
- Supports all modes: chatterbox, clone, dectalk, morshu, vox
2026-06-09 11:19:39 -05:00
kingston 47afd9c7c4 fix: update chatterbox_api_url default to 192.168.0.200 2026-06-09 11:10:52 -05:00
kingston e48d77d55c feat: add DECTalk voice selector to webui dashboard 2026-06-09 11:09:38 -05:00
kingston 2f1e66cef4 feat: add VOX TTS server on port 33003 with webui integration
- New vox-server/server.py (HTTP API matching morshu-server pattern)
- Added voxstart/voxstop/voxstatus commands to ttstoy cog
- WebUI /api/tts/generate and /api/mc/tts now support VOX mode
- Cog_unload stops VOX server automatically
2026-06-09 11:07:59 -05:00
kingston fa8c904c6f fix: update dectalk_port and morshu_port instance variables to 33001/33002 2026-06-09 11:01:11 -05:00
kingston f13b88ab82 chore: change DECTalk port to 33001, Morshu port to 33002, add AI context file 2026-06-09 10:47:06 -05:00
kingston ee3c452670 Fix post-to-discord checkbox: pass skip_post flag to bot, skip posting when unchecked 2026-06-08 03:24:20 -05:00
kingston 579c4c0a9f morshu-server: report startup errors in Discord 2026-06-06 19:56:16 -05:00
kingston 561cec8bee morshu-server: use resolved absolute paths and pass env properly 2026-06-06 19:55:17 -05:00
kingston 33aa6aba33 morshu-server: fix startup by passing env and using sys.executable 2026-06-06 19:48:27 -05:00
kingston c9e9b7c91e morshu-server: add proper start script and systemd service 2026-06-06 19:45:12 -05:00
kingston 57b51be48e Filter user-uploaded voices from /api/mc/voices 2026-06-05 21:44:08 -05:00
kingston ea8abdfdc2 Fix chatterbox URL default to 192.168.0.83:8099 2026-06-05 21:04:21 -05:00