Socket
Book a DemoInstallSign in
Socket

kichat.js

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

kichat.js

A JavaScript library to connect to Kick.com chat.

latest
Source
npmnpm
Version
1.0.4
Version published
Weekly downloads
18
50%
Maintainers
1
Weekly downloads
 
Created
Source

kichat.js

NPM Version NPM Downloads

A robust JavaScript library to connect to Kick.com's chat, designed to work seamlessly in both Node.js and browser environments.

Features

  • Isomorphic: Works in Node.js and modern browsers out-of-the-box.
  • Robust Connections: Automatic reconnection with configurable exponential backoff.
  • Event-Driven: Clean, event-based architecture for handling chat interactions.
  • Fully Typed: Written in TypeScript for a better developer experience.
  • Rich Data: Provides detailed channel and chatroom information upon joining.

Installation

Node.js

npm i kichat.js
import { KickChat } from 'kichat.js';

const client = new KickChat();

client.on('connected', () => {
	console.log('Successfully connected to Kick!');
	// Join a channel after connecting
	client.join('xqc');
});

client.on('join', (channel) => {
    console.log(`Joined channel: ${channel.slug}`)
});

client.on('message', (message, channel) => {
	console.log(`[${channel.slug}] ${message.sender.username}: ${message.content}`);
});

// Start the connection
client.connect();

Browser

The library is available on the window object as kickChat.

<script src="https://cdn.jsdelivr.net/npm/kichat.js/dist/kichat.js.browser-global.min.js"></script>
<script>
    const client = new kichat.KiChatjs()
    client.on('connected', () => console.log('Connected!'));
    client.on('join', (data) => console.log(`Successfully joined channel: ${data.info.slug}`))
    client.connect();
    client.join('xqc');
</script>

API Reference

new KickChat(options)

Creates a new client instance.

Options:

  • channels (string[], optional): An array of channel slugs to automatically join upon connection.
  • reconnect (boolean, optional, default: true): Whether the client should attempt to reconnect automatically if the connection is lost.
  • reconnectMaxAttempts (number, optional, default: Infinity): Maximum number of reconnection attempts.
  • reconnectInitialTimeout (number, optional, default: 1000): The initial time to wait in milliseconds before the first reconnection attempt.
  • reconnectMaxTimeout (number, optional, default: 60000): The maximum time to wait in milliseconds between reconnection attempts.
  • subscribePusher ({ channel: boolean, chatRoom: boolean, predictions: boolean }, optional, default: true): With this you can choose which events you want to connect in the pusher, if you only want chat messages you can enable only the chatRoom

Methods

  • .connect(): Establishes the connection to Kick's WebSocket server. This must be called to start receiving events.

  • .close(): Cleanly disconnects the client.

  • .isConnected(): Checks if the websocket is connected.

  • .join(channelName): Asynchronously joins a chat channel. Returns a Promise which resolves with the Channel object upon successful join confirmation from the server.

    • channelName (string): The slug of the channel to join (e.g., 'xqc').
  • .leave(channelName): Leaves a chat channel.

    • channelName (string): The slug of the channel to leave from.
  • .fetchUserInfo(channelName): Get user data from api.

    • channelName (string): The slug of the channel to fetch.
  • .fetchChatRoom(channelName): Get chat room data from api.

    • channelName (string): The slug of the channel to fetch.

Events

Listen to events using client.on('eventName', (arg1, arg2, ...) => { ... });

Connection Events

  • connected: Fired when the WebSocket connection is successfully established.
  • disconnected (reason: string): Fired when the client is disconnected.
  • reconnecting: Fired when the client is attempting to reconnect after an unexpected disconnection.
  • join (channel: Channel): Fired when the client successfully subscribes to a channel's events.
  • leave (channel: Channel): Fired when the client leaves a channel.
  • error (error: Error): Fired when an error occurs.

Chat & Channel Events

All channel-specific events return the Channel object as the last parameter, which contains rich data about the channel and its chatroom settings.

  • message (message: MessageData, channel: Channel): A standard chat message was sent.
  • subscription (subscription: Subscription, channel: Channel): A user subscribed to the channel.
  • giftedSubscriptions (event: GiftedSubscriptionsEvent, channel: Channel): One or more gift subscriptions were sent in chat.
  • streamHost (event: StreamHostEvent, channel: Channel): The channel started hosting another channel.
  • userBanned (event: UserBannedEvent, channel: Channel): A user was banned from the chatroom.
  • userUnbanned (event: UserUnbannedEvent, channel: Channel): A user was unbanned.
  • messageDeleted (event: MessageDeletedEvent, channel: Channel): A single message was deleted.
  • pinnedMessageCreated (event: PinnedMessageCreatedEvent, channel: Channel): A message was pinned.
  • pinnedMessageDeleted (event: MessageDeletedEvent, channel: Channel): A pinned message was removed.
  • chatroomUpdated (event: ChatroomUpdatedEvent, channel: Channel): Chatroom settings (e.g., slow mode) were updated.
  • pollUpdate (event: PollUpdateEvent, channel: Channel): A poll was created or updated.
  • pollDelete (channel: Channel): A poll was deleted.
  • streamerIsLive (event: StreamerIsLiveEvent, channel: Channel): The streamer started a live broadcast.
  • stopStreamBroadcast (event: StopStreamBroadcastEvent, channel: Channel): The live broadcast has ended.
  • goalCreated (event: GoalEvent, channel: Channel): A new follower/sub goal was created.
  • goalCanceled (event: GoalEvent, channel: Channel): A goal was canceled.
  • goalProgressUpdate (event: GoalEvent, channel: Channel): A goal's progress was updated.
  • livestreamUpdated (event: LivestreamUpdatedEvent, channel: Channel): Livestream info (title, category) was updated.
  • predictionCreated (event: PredictionEvent, channel: Channel): A new prediction was started.
  • predictionUpdated (event: PredictionEvent, channel: Channel): A prediction was updated (locked, resolved, etc.).
  • rewardRedeemed (event: RewardRedeemedEvent, channel: Channel): A viewer redeemed a channel point reward.
  • luckyUsersWhoGotGiftSubscriptions (event: LuckyUsersWhoGotGiftSubscriptionsEvent, channel: Channel): A list of users who received gifted subscriptions.
  • giftsLeaderboardUpdated (event: GiftsLeaderboardUpdatedEvent, channel: Channel): The gift leaderboard was updated.

Building from Source

If you wish to build the library from the source code, clone the repository and run the following commands:

git clone https://github.com/zaacksb/kickChat-gemini.git
cd kickChat-gemini
npm install
npm run build

Contributing

Contributions are welcome! Please feel free to open an issue to discuss what you would like to change or submit a Pull Request.

Future Work / TODO

Here are some features and improvements planned for the future:

  • Send Chat Messages: Implement a .say(channel, message) method to send messages to a chatroom. This will likely require handling user authentication.
  • Authentication: Add support for authenticating as a Kick user to perform actions on their behalf (like sending messages or performing moderation actions).
  • Moderation Methods: Implement methods for moderators, such as .ban(), .unban(), .timeout(), and .deleteMessage().
  • Add a Testing Framework: Integrate a testing framework like Jest or Vitest to ensure code quality and stability.
  • CI/CD Workflow: Set up a GitHub Actions workflow to automatically run tests and builds on push/pull request.
  • Complete TSDoc Documentation: Add detailed TSDoc comments to all public methods and interfaces for improved IntelliSense and auto-generated documentation.

Keywords

kick

FAQs

Package last updated on 19 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.