Code/TwitchComponent.cs
using System;
using Sandbox;
namespace TwitchAPI;
public class TwitchComponent : Component
{
[Property] public string Username { get; set; }
[Property, Group( "Actions" )] public Action<TwitchChatMessage> OnMessageReceived { get; set; }
[Property, Group( "Actions" )] public Action<TwitchChatMessage> OnMessageRemoved { get; set; }
[Property, Group( "Actions" )] public Action OnChatCleared { get; set; }
TwitchChatConnection TwitchChat;
protected override void OnEnabled()
{
if ( string.IsNullOrWhiteSpace( Username ) ) return;
TwitchChat = new TwitchChatConnection( Username );
TwitchChat.OnMessageReceived += OnChatMessageReceived;
TwitchChat.OnMessageRemoved += OnChatMessageRemoved;
TwitchChat.OnChatCleared += OnChatChatCleared;
}
protected override void OnDisabled()
{
if ( TwitchChat is not null )
{
TwitchChat?.Dispose();
TwitchChat.OnMessageReceived -= OnChatMessageReceived;
TwitchChat.OnMessageRemoved -= OnChatMessageRemoved;
TwitchChat.OnChatCleared -= OnChatChatCleared;
}
}
void OnChatMessageReceived( TwitchChatMessage message )
{
OnMessageReceived?.Invoke( message );
}
void OnChatMessageRemoved( TwitchChatMessage message )
{
OnMessageRemoved?.Invoke( message );
}
void OnChatChatCleared()
{
OnChatCleared?.Invoke();
}
}