https://github.com/zehsteam/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.
https://github.com/zehsteam/twitchchatapi
bepinex mod twitch unity
Last synced: about 2 months ago
JSON representation
Add Twitch chat integration to your Unity game mods! Subscribe to events like Messages, Cheers, Subs, and Raids. No Twitch authentication or connections required.
- Host: GitHub
- URL: https://github.com/zehsteam/twitchchatapi
- Owner: ZehsTeam
- License: mit
- Created: 2024-12-24T04:56:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-14T22:30:49.000Z (about 1 year ago)
- Last Synced: 2025-05-14T22:33:57.059Z (about 1 year ago)
- Topics: bepinex, mod, twitch, unity
- Language: C#
- Homepage:
- Size: 45.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
Awesome Lists containing this project
README
# TwitchChatAPI
[](https://github.com/ZehsTeam/TwitchChatAPI)
[](https://thunderstore.io/c/lethal-company/p/Zehs/TwitchChatAPI/)
[](https://thunderstore.io/c/lethal-company/p/Zehs/TwitchChatAPI/)
[](https://www.nuget.org/packages/Zehs.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.**
**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.
```cs
[BepInDependency(TwitchChatAPI.MyPluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.HardDependency)]
```
```cs
[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
```cs
namespace TwitchChatAPI;
public static class API
{
public static string Channel { get; }
public static ConnectionState ConnectionState { get; }
public static event Action OnConnectionStateChanged;
public static event Action OnConnect;
public static event Action OnDisconnect;
public static event Action OnMessage;
public static event Action OnCheer;
public static event Action OnSub;
public static event Action OnRaid;
public static event Action OnRoomStateUpdate;
public static IReadOnlyCollection 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
```cs
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](https://discord.gg/XeyYqRdRGC) | `#mod-releases` | [TwitchChatAPI](https://discord.com/channels/1168655651455639582/1324949317030772838) |
| [Unofficial Lethal Company Community](https://discord.gg/nYcQFEpXfU) | `#mod-releases` | [TwitchChatAPI](https://discord.com/channels/1169792572382773318/1324949327453356145) |
| [R.E.P.O. Modding Server](https://discord.com/invite/vPJtKhYAFe) | `#released-mods` | [TwitchChatAPI](https://discord.com/channels/1344557689979670578/1373837610832629842) |
- **GitHub Issues Page:** [TwitchChatAPI](https://github.com/ZehsTeam/TwitchChatAPI/issues)
- **My Links:** https://solo.to/crithaxxog
[
](https://ko-fi.com/zehsteam)