Experimental Winna support

This commit is contained in:
barelyprofessional
2026-04-15 20:44:56 -05:00
parent 1abe5974a7
commit 39be005d38
4 changed files with 231 additions and 3 deletions

View File

@@ -43,6 +43,7 @@ public class BotServices
public KasinoRain? KasinoRain;
public KasinoShop? KasinoShop;
public KasinoKrash? KasinoKrash;
private Winna? _winna;
private Task? _websocketWatchdog;
private Task? _howlggGetUserTimer;
@@ -97,7 +98,8 @@ public class BotServices
BuildYouTubePubSub(),
BuildKasinoRain(),
BuildKasinoShop(),
BuildKasinoKrash()
BuildKasinoKrash(),
BuildWinna()
];
try
{
@@ -141,6 +143,14 @@ public class BotServices
await _shuffle.StartWsClient();
}
private async Task BuildWinna()
{
_logger.Debug("Building Winna");
_winna = new Winna((await SettingsProvider.GetValueAsync(BuiltIn.Keys.Proxy)).Value);
_winna.OnWinnaBet += OnWinnaBet;
await _winna.StartWsClient();
}
private async Task BuildShuffleDotUs()
{
_logger.Debug("Building Shuffle.us");
@@ -426,7 +436,7 @@ public class BotServices
BuiltIn.Keys.KickEnabled, BuiltIn.Keys.HowlggEnabled, BuiltIn.Keys.ChipsggEnabled,
BuiltIn.Keys.ClashggEnabled, BuiltIn.Keys.BetBoltEnabled, BuiltIn.Keys.YeetEnabled,
BuiltIn.Keys.RainbetEnabled, BuiltIn.Keys.PartiEnabled, BuiltIn.Keys.JackpotEnabled,
BuiltIn.Keys.YouTubePubSubEnabled
BuiltIn.Keys.YouTubePubSubEnabled, BuiltIn.Keys.WinnaEnabled
]);
try
{
@@ -550,6 +560,14 @@ public class BotServices
_youTubePubSub = null;
await BuildYouTubePubSub();
}
if (settings[BuiltIn.Keys.WinnaEnabled].ToBoolean() && _winna != null && !_winna.IsConnected())
{
_logger.Error("Winna died, recreating it");
_winna.Dispose();
_winna = null!;
await BuildWinna();
}
}
catch (Exception e)
{
@@ -1066,7 +1084,25 @@ public class BotServices
preamble = "🦅🦅 Shuffle US! 🦅🦅";
}
// There will be a check for live status but ignoring that while we deal with an emergency dice situation
_chatBot.SendChatMessage($"{preamble} {bet.Username} just bet {bet.Amount} {bet.Currency} which paid out [color={payoutColor}]{bet.Payout} {bet.Currency}[/color] ({bet.Multiplier}x) on {bet.GameName} 💰💰", true);
_chatBot.SendChatMessage($"{preamble} {bet.Username} just bet {bet.Amount} {bet.Currency} which paid out " +
$"[color={payoutColor}]{bet.Payout} {bet.Currency}[/color] ({bet.Multiplier}x) on {bet.GameName} 💰💰", true);
}
private void OnWinnaBet(object sender, WinnaBetModel bet)
{
var settings = SettingsProvider
.GetMultipleValuesAsync([
BuiltIn.Keys.WinnaBmjUsername, BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor,
]).Result;
if (bet.Username != settings[BuiltIn.Keys.WinnaBmjUsername].Value) return;
var usd = bet.Amounts["USD"];
_ = UpdateBossmanLastSighting($"betting {bet.BetAmount:N} {bet.Currency} on {bet.GameName} at Winna");
var payoutColor = settings[BuiltIn.Keys.KiwiFarmsGreenColor].Value;
if (bet.Multiplier < 1) payoutColor = settings[BuiltIn.Keys.KiwiFarmsRedColor].Value;
_chatBot.SendChatMessage(
$"🚨🚨 Winnafags! 🚨🚨 {bet.Username} just bet {bet.BetAmount:N} {bet.Currency} ({usd.BetAmount:C}) which paid out " +
$"[color={payoutColor}]{bet.Payout:N} {bet.Currency} ({usd.Payout:C})[/color] ({bet.Multiplier:N2} on {bet.GameName} 💰💰",
true);
}
private void OnTwitchStreamStateUpdated(object sender, string channelName, bool isLive)