mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-02 04:22:04 -04:00
Configurable ping interval and inactivity timeout. Won't ping anymore when the connection is dead
This commit is contained in:
@@ -95,15 +95,24 @@ public class ChatBot
|
|||||||
|
|
||||||
private async Task KfPingTask()
|
private async Task KfPingTask()
|
||||||
{
|
{
|
||||||
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(10));
|
var interval = (await Helpers.GetValue(BuiltIn.Keys.KiwiFarmsPingInterval)).ToType<int>();
|
||||||
|
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(interval));
|
||||||
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
||||||
{
|
{
|
||||||
_logger.Debug("Pinging KF");
|
_logger.Debug("Pinging KF");
|
||||||
KfClient.SendMessage("/ping");
|
if (KfClient.IsConnected())
|
||||||
|
{
|
||||||
|
KfClient.SendMessage("/ping");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.Info("Not pinging the connection as we're currently disconnected");
|
||||||
|
}
|
||||||
if (InitialStartCooldown) InitialStartCooldown = false;
|
if (InitialStartCooldown) InitialStartCooldown = false;
|
||||||
var inactivityTime = DateTime.UtcNow - KfClient.LastPacketReceived;
|
var inactivityTime = DateTime.UtcNow - KfClient.LastPacketReceived;
|
||||||
_logger.Debug($"Last KF event was {inactivityTime:g} ago");
|
_logger.Debug($"Last KF event was {inactivityTime:g} ago");
|
||||||
if (inactivityTime.TotalMinutes > 10)
|
var inactivityTimeout = (await Helpers.GetValue(BuiltIn.Keys.KiwiFarmsInactivityTimeout)).ToType<int>();
|
||||||
|
if (inactivityTime.TotalSeconds > inactivityTimeout)
|
||||||
{
|
{
|
||||||
// Yeah, super dodgy
|
// Yeah, super dodgy
|
||||||
KfClient.LastPacketReceived = DateTime.UtcNow;
|
KfClient.LastPacketReceived = DateTime.UtcNow;
|
||||||
|
|||||||
@@ -458,6 +458,27 @@ public static class BuiltIn
|
|||||||
Default = "true",
|
Default = "true",
|
||||||
IsSecret = false,
|
IsSecret = false,
|
||||||
CacheDuration = TimeSpan.FromHours(1)
|
CacheDuration = TimeSpan.FromHours(1)
|
||||||
|
},
|
||||||
|
new BuiltInSettingsModel
|
||||||
|
{
|
||||||
|
Key = Keys.KiwiFarmsInactivityTimeout,
|
||||||
|
Regex = @"\d+",
|
||||||
|
// You would think the WS library would trip up with the "NoMessageReceived" exception, but there's some bug
|
||||||
|
// where it'll occasionally fail to reconnect properly and sit there dead forever, hence the watchdog timer
|
||||||
|
Description = "Length of time the client can go without receiving ANY packets from Sneedchat before forcing a reconnect.",
|
||||||
|
Default = "300",
|
||||||
|
IsSecret = false,
|
||||||
|
CacheDuration = TimeSpan.FromHours(1)
|
||||||
|
},
|
||||||
|
new BuiltInSettingsModel
|
||||||
|
{
|
||||||
|
Key = Keys.KiwiFarmsPingInterval,
|
||||||
|
Regex = @"\d+",
|
||||||
|
Description = "Interval in seconds to ping Sneedchat using the non-existent /ping command. " +
|
||||||
|
"Note this affects how often the bot will check inactivity of the connection.",
|
||||||
|
Default = "10",
|
||||||
|
IsSecret = false,
|
||||||
|
CacheDuration = TimeSpan.FromHours(1)
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -501,5 +522,7 @@ public static class BuiltIn
|
|||||||
public static string KiwiFarmsCookies = "KiwiFarms.Cookies";
|
public static string KiwiFarmsCookies = "KiwiFarms.Cookies";
|
||||||
public static string BotGmKasinoImageRotation = "Bot.GmKasinoImageRotation";
|
public static string BotGmKasinoImageRotation = "Bot.GmKasinoImageRotation";
|
||||||
public static string TwitchShillRestreamOnCommercial = "Twitch.ShillRestreamOnCommercial";
|
public static string TwitchShillRestreamOnCommercial = "Twitch.ShillRestreamOnCommercial";
|
||||||
|
public static string KiwiFarmsInactivityTimeout = "KiwiFarms.InactivityTimeout";
|
||||||
|
public static string KiwiFarmsPingInterval = "KiwiFarms.PingInterval";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user