Commit Graph

5 Commits

Author SHA1 Message Date
cottongin
d6d5ac10e6 fix: separate bot vs viewer WebSocket connections, add client identification
The dashboard's own WS connection was being counted as a bot subscriber,
causing "1 bot connected" with no bots actually present. Now WS clients
send a role ("bot" or "viewer") in the subscribe message. Only bots count
toward the subscriber total. Bot plugins also send a configurable client_id
so the dashboard shows which specific bots are connected.

Made-with: Cursor
2026-03-12 07:51:55 -04:00
cottongin
e31a9503db Add WebSocket announce listener to both IRC bot plugins
- Limnoria: add wsUrl, announceChannel config; __init__, die, _ws_listener
- Sopel: add ws_url, announce_channel config; setup/shutdown, _ws_listener
- Feature parity: subscribe to WS, receive announce msgs, send to IRC channel
- Deferred websocket-client import to avoid load failure if not installed

Made-with: Cursor
2026-03-12 07:22:49 -04:00
cottongin
9664b8225d feat: add human-readable datetime formatting and !lastshow command
IRC plugins now format datetimes as "Wed Mar 11, 10:00 PM EDT" instead
of raw ISO 8601. Configurable timezone defaults to America/New_York.

Adds !lastshow N command to both Limnoria and Sopel plugins, returning
track N from the previous week's show via existing API endpoints.

Made-with: Cursor
2026-03-12 05:31:50 -04:00
cottongin
05bcf184ac fix: playlist truncation overflow and align logging across plugins
- Fix format_playlist truncation: +4 → +5 to account for ", ..." suffix
- Add API error logging to all Sopel command handlers (matching Limnoria)
- Add long-track truncation test case

Made-with: Cursor
2026-03-12 03:24:29 -04:00
cottongin
2a00cc263f feat(sopel): add NtR playlist IRC plugin
Made-with: Cursor
2026-03-12 03:11:04 -04:00