A small Streamer.bot extension that converts Kick's public Pusher WebSocket events into custom triggers. It runs inside Streamer.bot and does not need a bridge application, bot account, webhook, browser source, or separate .NET runtime.
This is not an official Kick integration. It uses Kick's public, undocumented Pusher protocol.
- Download
streamer-bot-kick-socket-v*.sbfrom the latest release. - Open Import from the top toolbar in Streamer.bot 1.x.
- Drag the
.sbfile onto the Import String field and import all three actions. - Restart Streamer.bot once so the lifecycle action can initialize.
If a Kick broadcaster is already connected under Platforms > Kick, that is all you need to do. The extension reads the connected broadcaster through Streamer.bot's KickGetBroadcaster() API, resolves and permanently caches the socket-specific channel/chatroom IDs, and starts automatically.
To listen to another channel or change advanced settings, right-click Actions & Queues > Actions > Kick Socket > Kick Socket - 2. Settings and select Test. Enter a channel URL or slug, click Resolve IDs, then Save & Restart. The resolved channel and chatroom IDs are cached, so later startups do not depend on another API lookup. Both IDs can also be entered manually if Kick blocks automatic resolution.
Keep Precompile on Application Start enabled on the Runtime action. Its Init() method owns the background socket and its Dispose() method shuts it down; users do not run the Runtime action themselves. Connection and configuration failures are written to the log and shown in an on-screen error dialog. Repeated identical dialogs are suppressed for five minutes.
Streamer.bot does not currently offer a third-party plugin SDK for adding a native Platforms page, toolbar button, trigger type, or sub-action. Its supported community extension model is an import containing actions and C# lifecycle code. In this project the Runtime action is only the host for the extension: it auto-starts, registers entries under Custom > Kick Socket, and dispatches events through Streamer.bot's public RegisterCustomTrigger and TriggerCodeEvent APIs.
The Settings action is the only action a user may open, and it presents a normal settings window instead of asking the user to edit C# constants. You can optionally add it to Streamer.bot Chat's Global Quick Actions for one-click access. Quick Actions and Streamer.bot Deck layouts are user settings and are not supported by the import/export format, so the release cannot add those buttons automatically.
Streamer.bot's native Kick integration should be your first choice for standard official events. It receives Kick API webhooks through the Streamer.bot Website Integration and already provides chat, follow, stream, subscription, moderation, KICKs, and reward triggers.
This extension is useful when you need direct public-socket delivery, events not exposed by the native integration (for example pins, polls, chatroom changes, unbans, and leaderboard updates), or a raw-event fallback for new Kick events. The native connection is reused to select the broadcaster, but Streamer.bot exposes only the Kick user identity, not the legacy Pusher channel ID or chatroom ID, so those two values are resolved from Kick's public channel response.
After initialization, triggers are available under Custom > Kick Socket. For example:
- Create a Streamer.bot action for an OBS effect.
- Add Custom > Kick Socket > Chat > Message, or any other Kick Socket trigger.
- Add your OBS source, sound, video, filter, delay, or other sub-actions.
Every event includes the configured channel identity, original Pusher event name, receive timestamp, and raw JSON. Semantic events also expose normalized arguments such as message, userName, userId, kicksAmount, rewardTitle, and rewardUserInput.
Reward triggers do not require a setup or mapping action. The first valid redemption automatically creates and persists a trigger under Custom > Kick Socket > Rewards:
- When the payload contains
reward_idorreward.id, the stable trigger key is derived from that ID. - When Kick omits the reward ID, the key is derived from the normalized title plus a short hash.
- Every redemption also fires Any Reward, so an action can be attached before any reward-specific trigger has been discovered.
The generated key is exposed as rewardKey; rewardId, rewardTitle, and rewardUserInput are included when available. Ordinary chat messages are never treated as rewards.
Running Kick Socket - 3. Control & Diagnostics normally writes the current status to the Streamer.bot log. A Quick Action or another action can pass an operation argument:
operation |
Result |
|---|---|
diagnostics |
Logs status, IDs, the last error, and dropped event count |
restart |
Reconnects with the saved settings |
start / stop |
Enables or disables the runtime |
clear-discovered-events |
Clears automatically discovered raw event names |
- Connection: connected, disconnected, reconnecting, error
- Chat/chatroom: message, deletion, clear, settings update, pins
- Channel/stream: follow, follower count, online, offline, host/move
- Community: subscriptions, gift subscriptions, polls, bans/unbans
- Gifts/rewards: KICKs, leaderboards, structured reward redemption
- Raw: all known and newly discovered public Pusher events
Legacy and current socket aliases are subscribed together. Duplicate deliveries are collapsed, while unknown events are preserved through Raw > Any Event and an event-specific raw trigger.
- No OAuth operations are performed by this extension, so it cannot accept/reject rewards or manage official redemption state.
- Private or authenticated Pusher channels cannot be observed.
- A release update may be required if Kick changes its Pusher key, cluster, channel names, or payload shapes.
Action source lives in src/, tests in tests/, and the deterministic import builder in tools/.
make test
make packagemake package builds the self-contained Streamer.bot .sb import under dist/. The source is MIT licensed.