Changelog - Version 5.7.12 (2026-06-08)
Version Information
- Updated version from 5.7.11 to 5.7.12
- Fix for the Stable bot: the internal WebSocket connection now reconnects reliably after drops/server reboots, so commands and alerts no longer silently stop working until a manual restart
Bug Fixes
- Fixed the internal WebSocket failing to reconnect, which silently disabled most commands
- The bot’s connection to the internal Specter system (
wss://websocket.botofthespecter.com) carries every overlay/alert event — deaths, sound & video alerts, walk-ons, follow/sub/cheer/raid alerts, TTS, and more. When that connection dropped (e.g. during an internal-server reboot) it sometimes never re-established, leaving the bot’swebsocket_connectedflag stuck off. Because the bot skips sending events while the socket is down — and some commands (like!weather) refuse to run without it — this made most commands appear to stop working until the bot was manually restarted. - Root cause: the Socket.IO client was running two reconnection mechanisms at once — python-socketio’s built-in auto-reconnect and the bot’s own manual reconnect loop. Each reconnect re-registered under the same name, and the server evicts a duplicate registration by name, so the two mechanisms repeatedly knocked each other’s session offline in a self-sustaining flap. The bot could also hang indefinitely if the rebooting server accepted the TCP connection but never completed the Socket.IO handshake, because the connect call had no timeout.
- Fix: the Socket.IO client is now created with
reconnection=False, making the bot’s own reconnect loop the single reconnection authority — reconnects are deterministic, and the server’s duplicate-name cleanup simply clears the bot’s own stale session instead of fighting a second connection. The connect step now has a hard 30-second timeout so a half-open server can no longer hang the bot, and the loop always force-disconnects before reconnecting to recover from any indeterminate socket state. Only the internal Specter socket is affected — tipping/integration sockets and the other websocket services are unchanged.
- The bot’s connection to the internal Specter system (
Changes
- Unified the OpenAI chat model to
gpt-5.4-mini- The AI chat-reply model was previously a hardcoded
gpt-5-nanostring inlined at each OpenAI call site. The model is now read from a singleOPENAI_MODELconstant defined alongside the OpenAI client, and every chat-completion call references it — so the model can be changed in one place. - The model itself was updated to
gpt-5.4-minifor better response quality.
- The AI chat-reply model was previously a hardcoded
Technical Details
- WebSocket reconnection:
specterSocket = AsyncClient(reconnection=False), andspecter_websocket()now wrapsspecterSocket.connect(...)in a 30-secondasyncio.wait_for(...)and unconditionally disconnects before each reconnect attempt. The StreamElements socket and thewebsockets-based external services (Twitch EventSub, HypeRate, etc.) are untouched. - Added
OPENAI_MODEL = "gpt-5.4-mini"next to theopenai_clientinitialisation; the AI chat-completion calls now passmodel=OPENAI_MODELin place of the inlinemodel="gpt-5-nano"arguments.
Thank you for your feedback and support!
As always, your feedback is appreciated. Please report any issues, bugs, or suggestions in the #ticket-info channel on our Discord server. You can also submit feedback and bug reports directly on our support website: https://support.botofthespecter.com/