You are viewing a potentially older version of this package. View all versions.
Zehs-TwitchChatAPI-2.0.0 icon

TwitchChatAPI

Add Twitch chat integration to your Unity game mods! Subscribe to events like Messages, Cheers, Subs, and Raids. No Twitch authentication or connections required.

Date uploaded 2 months ago
Version 2.0.0
Download link Zehs-TwitchChatAPI-2.0.0.zip
Downloads 34114
Dependency string Zehs-TwitchChatAPI-2.0.0

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

TwitchChatAPI

GitHub Thunderstore Version Thunderstore Downloads NuGet Version

Add Twitch chat integration to your Unity game mods! Subscribe to events like Messages, Cheers, Subs, and Raids. No Twitch authentication or connections required.

Who needs this mod installed for it to work? Only you!

API Usage

Click to Expand

Reference TwitchChatAPI in your project's .csproj file.

Add TwitchChatAPI as a dependency to your plugin class.

[BepInDependency(TwitchChatAPI.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
[BepInPlugin("You.YourMod", "YourMod", "1.0.0")]
[BepInDependency(TwitchChatAPI.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
public class YourMod : BaseUnityPlugin
{
    // ...
}

API

https://github.com/ZehsTeam/TwitchChatAPI/blob/main/TwitchChatAPI/API.cs

namespace TwitchChatAPI;

public static class API
{
    public static string Channel { get; }

    public static ConnectionState ConnectionState { get; }
    public static event Action<ConnectionState> OnConnectionStateChanged;

    public static event Action OnConnect;
    public static event Action OnDisconnect;
    public static event Action<TwitchMessage> OnMessage;
    public static event Action<TwitchCheerEvent> OnCheer;
    public static event Action<TwitchSubEvent> OnSub;
    public static event Action<TwitchRaidEvent> OnRaid;
    public static event Action<TwitchRoomState> OnRoomStateUpdate;

    public static IReadOnlyCollection<TwitchUser> Users { get; }

    public static void Connect();
    public static void Connect(string channel);

    public static void Disconnect();    

    public static bool TryGetUserByUsername(string username, out TwitchUser twitchUser);
    public static bool TryGetUserByUserId(string userId, out TwitchUser twitchUser);
    public static TwitchUser[] GetUsersSeenWithin(TimeSpan timeSpan);
}

TwitchUser

https://github.com/ZehsTeam/TwitchChatAPI/blob/main/TwitchChatAPI/Objects/TwitchUser.cs

TwitchMessage

https://github.com/ZehsTeam/TwitchChatAPI/blob/main/TwitchChatAPI/Objects/TwitchMessage.cs

TwitchEvents (Cheer, Sub, Raid)

https://github.com/ZehsTeam/TwitchChatAPI/blob/main/TwitchChatAPI/Objects/TwitchEvents.cs

Example

using TwitchChatAPI;
using TwitchChatAPI.Enums;
using TwitchChatAPI.Objects;
using UnityEngine;

public class TwitchChatExample : MonoBehaviour
{
    private void OnEnable()
    {
        // Subscribe to Twitch events
        API.OnMessage += HandleMessage;
        API.OnCheer += HandleCheer;
        API.OnSub += HandleSub;
        API.OnRaid += HandleRaid;
    }

    private void OnDisable()
    {
        // Unsubscribe to avoid memory leaks
        API.OnMessage -= HandleMessage;
        API.OnCheer -= HandleCheer;
        API.OnSub -= HandleSub;
        API.OnRaid -= HandleRaid;
    }

    private void HandleMessage(TwitchMessage message)
    {
        Debug.Log($"[{message.User.DisplayName}]: {message.Message}");
    }

    private void HandleCheer(TwitchCheerEvent cheer)
    {
        Debug.Log($"{cheer.User.DisplayName} cheered {cheer.CheerAmount} bits!");
    }

    private void HandleSub(TwitchSubEvent sub)
    {
        //...
    }

    private void HandleRaid(TwitchRaidEvent raid)
    {
        Debug.Log($"Raid incoming! {raid.User.DisplayName} is raiding with {raid.ViewerCount} viewers!");
    }
}

Developer Contact

Report bugs, suggest features, or provide feedback:

Discord Server Forum Post
Lethal Company Modding #mod-releases TwitchChatAPI
Unofficial Lethal Company Community #mod-releases TwitchChatAPI
R.E.P.O. Modding Server #released-mods TwitchChatAPI

CHANGELOG

v2.0.0

  • Changed root namespace from com.github.zehsteam.TwitchChatAPI to TwitchChatAPI.
  • Changed plugin guid from com.github.zehsteam.TwitchChatAPI to TwitchChatAPI.
  • Removed all references to Lethal Company to make this mod work for other games.
  • Renamed SubType to Type in TwitchSubEvent.
  • Removed IsPrime bool from TwitchSubEvent and added Prime option to the SubTier enum.
  • Added Channel string to the API.
  • Added OnConnectionStateChanged event to the API.
  • Added Connect, Connect(string channel), and Disconnect() methods to the API.
  • Added extension methods to TwitchUser for getting the DisplayName with color as a rich text string.

v1.1.0

  • Updated TwitchSubEvent class.
    • Changed Tier from an int to an enum.
    • Renamed Months to CumulativeMonths.
  • Updated TwitchUser class.
    • Added Username property.
  • Updated API.
    • Added public static IReadOnlyCollection<TwitchUser> Users { get; } property.
    • Added public static bool TryGetUserByUsername(string username, out TwitchUser twitchUser); method.
    • Added public static bool TryGetUserByUserId(string userId, out TwitchUser twitchUser); method.
    • Added public static TwitchUser[] GetUsersSeenWithin(TimeSpan timeSpan); method.

v1.0.1

  • API events are now invoked on the main thread.
  • Bug fixes and improvements.

v1.0.0

  • Initial release.