Skip to content

Repository files navigation

Firebot Kick Integration

⚠️ Archive Notice: This plugin is not compatible with backend infrastructure changes in Firebot 5.67 and higher. The plugin will no longer be updated.

Disclaimer and Warning

THIS PROJECT IS NOT ASSOCIATED WITH FIREBOT OR KICK.COM AND IS NOT ENDORSED OR SUPPORTED BY THEIR DEVELOPERS OR ANYONE ELSE.

ALL DATA STRUCTURES AND EVENTS IN THIS INTEGRATION -- EVEN THOSE THAT SEEM TO MAP CLEANLY -- ARE TOTAL HACKS. ALL EVENTS ARE IMPLEMENTED ... HACKILY. THIS INTEGRATION CONTAINS FORWARD-INCOMPATIBLE WORKAROUNDS AND DUE TO ITS CONTENT IT SHOULD NOT BE USED BY ANYONE.

Use caution: this integration uses forward-incompatible workarounds and should be treated as experimental.

  • Firebot is designed for a single streaming platform (Twitch), and many core assumptions and functionality are tightly coupled to this design. As a result, full compatibility with Kick is not achievable under the current architecture.

  • While I've tried to clearly separate Kick user data from Firebot's built-in databases, there's a risk of data leakage or corruption. This could impair or disable your Firebot instance entirely. Always maintain reliable backups.

  • Kick's public API is currently limited and incomplete. Only a small set of events is supported. (Note: Some bots use private APIs, but I purposefully avoided that route to reduce brittleness.)

  • Some features of this integration depends upon Kick's undocumented "pusher" WebSocket service, but that could break without warning.

  • Firebot only responds to events once a Kick notification is received. From time to time, Kick webhook delivery has proven to be unreliable, with notifications delayed by seconds or even minutes or sometimes dropped entirely.

Introduction

This Firebot integration provides chat feed integration, events and effects for the kick.com streaming platform. This allows you to handle events in Firebot from the Kick platform, such as chat messages, follows, subscriptions, hosts, and more. This also provides effects to send messages to Kick, change the title or category of your stream, and ban and unban users.

Version Requirements

  • Versions 0.11.0 and higher require Firebot 5.65 or 5.66 and version 0.0.5 or higher of firebot-mage-platform-lib
  • Versions 0.10.0 and higher require Firebot 5.65 or 5.66 and a compatible version of firebot-mage-platform-lib
  • Version 0.7.0 and higher require Firebot 5.65 or 5.66

Effects

Effects are calls to the Kick API made by Firebot as a result of event handlers, preset effect lists, quick actions, and the like.

Effect Supported Min. Version Notes
Ban/Unban viewer ✅
Channel reward: Manage / unmanage ✅ 0.9.0 Also cost, queue, enabled/disabled
Chat (send message) ✅ Can chat as streamer or second "bot" account
Delete message ✅ 0.8.0
Stream category change ✅
Stream title change ✅
Timeout viewer ✅ Unban the viewer to un-timeout

Note: The integration currently has effects for all of the operations available via Kick's Public API. Any effects "missing" from this list cannot be added unless and until the Kick API is expanded with more functionality. See Limitations due to Kick.

Events

Event Supported? Min. Version Notes
Channel data updated ✅ Periodic refresh of info from public Kick API
Channel points redeemed ✅ 0.9.0
Chat account age restriction Possible No public API support
Chat cleared Possible No public API support
Chat emote only mode on/off Possible No public API support
Chat followers only mode on/off Possible No public API support
Chat message (incoming) ✅
Chat slow mode on/off Possible No public API support
Chat sub only mode on/off Possible No public API support
Follow ✅
Goal created Possible No public API support
Goal ended ? No public API support, have not evaluated
Goal progress ? No public API support, have not evaluated
Goal updated Possible No public API support
Host (raid) (incoming) ✅ Uses "pusher" due to no public API support
Host (raid) (outgoing) ✅ Uses "pusher" due to no public API support
Kicks (like bits) ✅
Message deleted ✅ 0.8.0
Message pinned Possible No public API support
Message un-pinned Possible No public API support
Stream category (game) updated ✅
Stream ended ✅
Stream started ✅
Stream title updated ✅
Sub ✅
Sub (Community Gifted) ✅
Sub (Gifted) ✅
Viewer arrived ✅
Viewer banned ✅
Viewer timed out ✅
Viewer unbanned ✅ Uses "pusher" due to no public API support; also handles un-timeout

"Possible" indicates that based on documentation and/or actual testing, the Kick API or Pusher websocket sends a webhook or websocket message that the author believes can be used to trigger a Firebot event. However, since the author is unlikely to use this event himself, it is not currently prioritized for implementation.

Firebot features

Feature Support Status Min. Version Notes
Channel point rewards: Create/manage ✅ 0.9.0 Accessible properties limited
Channel point rewards: Enable/disable ✅ 0.9.0 Enable/disable only
Channel point rewards: Redemption triggers effects ✅ 0.9.0 Full support
Chat feed: Ban user (on Kick message) ✅ Works via context menu and /ban command
Chat feed: Delete Kick messages ✅ 0.8.0 Works!
Chat feed: Display Kick messages ✅ Works! Shows badges and emotes too
Chat feed: Timeout user ✅ Works via context menu and /timeout command
Chat feed: Unban user ✅ Works via /unban and /untimeout commands
Chat feed: User profile ❌ Firebot assumes all users are Twitch users 🔥
Chat feed: All other context menu items ❌ Various limitations 🇰 🔥
Commands ✅ Cooldowns do not work 🔥
Currency Partial 0.11.0 Supports currency effects and variables of mage-platform-lib
Currency: Watch time ❌ No viewer list API endpoint on Kick 🇰
Moderation: Banned words / URLs ? Maybe possible now that Kick API supports deleting messages?
Ranks ❌ Pointless without proper currency support
Roles ✅ Twitch role filters emulated in platform-aware filter
Viewer database ❌ Firebot assumes all users are Twitch users 🔥

🇰 = Denotes that the feature cannot be fully supported due to Kick limitations

🔥 = Denotes that the feature cannot be fully supported due to Firebot limitations

Limitations due to Kick

  • Many user actions (e.g. raids, unbans) don't trigger webhooks. The integration can only support events that Kick provides.
  • Kick delivers profile image URLs that only resolve from kick.com, so these images may not display correctly elsewhere.
  • Kick's public API is lacking basic chat management options (e.g. delete message, clear chat), so we cannot implement these in Firebot's chat feed.
  • There is currently no API for fetching the viewer list, which prevents watch-time tracking and currency accrual.
  • There is currently no API to list your followers, subscribers, VIPs, moderators, etc. This limits what can be practically achieved with roles.
  • Channel point redemptions can now be managed programmatically via API, but there is no API support for approving or rejecting rewards.
  • Channel point redemption properties are limited: name, description, cost, queued, and enabled/disabled. There's no ability to set icons.
  • Kick does not provide programmatic definitions of chat badges (or even publish these as plain image files). We've hard-coded in the current definitions in the Firebot chat feed. If those change on Kick, you'll still see the old badges in the Firebot chat feed until the integration is updated.
  • Configuration of the "pusher" websocket requires your channel ID and chatroom ID, which are different from your user ID. The process to determine these can be tedious. Thankfully, you'll only need to do this once.

Limitations due to Firebot

  • Firebot's viewer database uses Twitch user IDs as primary keys and assumes every user is from Twitch. This rigid design prevents many features that depend on storing information about users (e.g. currency, metadata).
  • Rate limiting (cooldowns) for commands and redeems doesn't work natively. Consider using the Firebot Rate Limiter if needed.
  • Slash commands in the Firebot chat (e.g. /clear) only apply to Twitch. (There aren't Kick API endpoints for most of these anyway.)
  • You won't be able to add a Kick user to a custom role via the Firebot GUI, because Firebot does a Twitch lookup on whatever you type.

Installation

This integration is experimental and aimed at users comfortable with technical setup. I will reconsider broader release and support once:

  1. Kick offers a public WebSocket connection option, and
  2. Kick's public REST API is substantially more complete, and
  3. Firebot evolves for cleaner multi-platform support.

Installation instructions are available if you're feeling adventurous.

Upgrading instructions are available if you felt adventurous in the past and are still feeling adventurous.

Configuration instructions are available if ... well, you get the point.

Support

This plugin is no longer being updated or supported.

Contributions

This plugin is no longer being developed. Contributions are not being accepted.

Archive Notice

This plugin is not compatible with Firebot 5.67 and higher due to backend infrastructure changes. The plugin will no longer be updated.

If you are running Firebot 5.67 or higher, this plugin may not work correctly. Your options are:

  1. Downgrade to Firebot 5.66. Be sure to disable automatic upgrades and manually install the latest Firebot 5.66 release. Note that you will not get new Firebot features and will no longer receive support from official Firebot channels.
  2. Uninstall this plugin.

Thank you for your interest and support.

License

This project is released under the GNU General Public License version 3.

Some code in this project is based on (or copied from) Firebot, which is licensed under the GNU GPL 3 as well. Since the source code is distributed here and links back to Firebot, this project complies with the license.

About

Integration for Firebot with kick.com streaming service

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages