Added support for the Twitch ToS strike packet and an alert for it

This commit is contained in:
barelyprofessional
2025-03-25 19:38:44 +08:00
parent 0b1251a49d
commit f644c0f8cc
2 changed files with 16 additions and 0 deletions

View File

@@ -175,6 +175,7 @@ public class BotServices
_twitch = new Twitch([settings[BuiltIn.Keys.TwitchBossmanJackId].ToType<int>()], settings[BuiltIn.Keys.Proxy].Value, _cancellationToken); _twitch = new Twitch([settings[BuiltIn.Keys.TwitchBossmanJackId].ToType<int>()], settings[BuiltIn.Keys.Proxy].Value, _cancellationToken);
_twitch.OnStreamStateUpdated += OnTwitchStreamStateUpdated; _twitch.OnStreamStateUpdated += OnTwitchStreamStateUpdated;
_twitch.OnStreamCommercial += OnTwitchStreamCommercial; _twitch.OnStreamCommercial += OnTwitchStreamCommercial;
_twitch.OnStreamTosStrike += OnTwitchStreamTosStrike;
await _twitch.StartWsClient(); await _twitch.StartWsClient();
_logger.Info("Built Twitch Websocket connection for livestream notifications"); _logger.Info("Built Twitch Websocket connection for livestream notifications");
} }
@@ -637,6 +638,12 @@ public class BotServices
true); true);
} }
private void OnTwitchStreamTosStrike(object sender, int channelId)
{
var username = Helpers.GetValue(BuiltIn.Keys.TwitchBossmanJackUsername).Result;
_chatBot.SendChatMessage($":!::!: {username.Value} was just banned from Twitch! :!::!:", true);
}
private void OnChipsggRecentBet(object sender, ChipsggBetModel bet) private void OnChipsggRecentBet(object sender, ChipsggBetModel bet)
{ {
var settings = Helpers var settings = Helpers

View File

@@ -18,8 +18,10 @@ public class Twitch : IDisposable
private List<int> _channels; private List<int> _channels;
public delegate void OnStreamStateUpdateEventHandler(object sender, int channelId, bool isLive); public delegate void OnStreamStateUpdateEventHandler(object sender, int channelId, bool isLive);
public delegate void OnStreamCommercialEventHandler(object sender, int channelId, int length, bool scheduled); public delegate void OnStreamCommercialEventHandler(object sender, int channelId, int length, bool scheduled);
public delegate void OnStreamTosStrikeEventHandler(object sender, int channelId);
public event OnStreamStateUpdateEventHandler OnStreamStateUpdated; public event OnStreamStateUpdateEventHandler OnStreamStateUpdated;
public event OnStreamCommercialEventHandler OnStreamCommercial; public event OnStreamCommercialEventHandler OnStreamCommercial;
public event OnStreamTosStrikeEventHandler OnStreamTosStrike;
private CancellationToken _cancellationToken = CancellationToken.None; private CancellationToken _cancellationToken = CancellationToken.None;
private Task? _pingTask = null; private Task? _pingTask = null;
private CancellationTokenSource _pingCts = new(); private CancellationTokenSource _pingCts = new();
@@ -164,6 +166,13 @@ public class Twitch : IDisposable
return; return;
} }
if (twitchMessage.GetProperty("type").GetString() == "tos-strike")
{
_logger.Info("Received a TOS strike packet");
OnStreamTosStrike?.Invoke(this, channelId);
return;
}
if (twitchMessage.GetProperty("type").GetString() == "commercial") if (twitchMessage.GetProperty("type").GetString() == "commercial")
{ {
_logger.Info("Twitch commercial received"); _logger.Info("Twitch commercial received");