deadTime was the wrong name for this stupid variable. Now updating the last reconnect attempt timestamp when reconnecting, considering both timestamps again for determining whether to exit and avoiding forced reconnects if within a minute of a previous reconnect attempt.

Future plan is to basically disable automatic reconnection in the WS library and use the fast fail functionality instead since it just causes more problems than it's worth.
This commit is contained in:
barelyprofessional
2026-05-31 13:14:12 -05:00
parent 3ae74c0fbf
commit 80916c9b2d
+5 -4
View File
@@ -156,12 +156,13 @@ public class ChatBot
_logger.Info("Not pinging the connection as we're currently disconnected");
}
var inactivityTime = DateTime.UtcNow - KfClient.LastPacketReceived;
var lastReconnect = DateTime.UtcNow - _lastReconnectAttempt;
_logger.Debug($"Last KF event was {inactivityTime:g} ago");
var inactivityTimeout = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsInactivityTimeout)).ToType<int>();
if (inactivityTime.TotalSeconds > inactivityTimeout)
if (inactivityTime.TotalSeconds > inactivityTimeout && lastReconnect.TotalMinutes > 1)
{
// Yeah, super dodgy
KfClient.LastPacketReceived = DateTime.UtcNow;
_lastReconnectAttempt = DateTime.UtcNow;
_logger.Error("Forcing reconnect as bot is completely dead");
await KfClient.ReconnectAsync();
}
@@ -178,7 +179,7 @@ public class ChatBot
var deadTime = DateTime.UtcNow - _lastReconnectAttempt;
// No connection and no successful reconnection attempt in the last 5 minutes
// Either the site is completely dead or the bot got screwed by a nasty error and can't reconnect
if (inactivityTime > TimeSpan.FromMinutes(10) || deadTime > TimeSpan.FromMinutes(15))
if (inactivityTime > TimeSpan.FromMinutes(10) && deadTime > TimeSpan.FromMinutes(15))
{
var shouldExit = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotExitOnDeath)).ToBoolean();
_logger.Error("The bot as is dead beyond belief right now");