mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-02 04:22:04 -04:00
Update to the Settings interface.
- Methods are now suffixed async - Extension methods moved to the actual class and class renamed from SettingValue to Setting - "Helpers" renamed to "SettingsProvider" - Removed the ghetto CSV list method. Only setting using it was Pusher Channels which was orphaned by the new Kick channel feature. The call to ToList in the Chips.gg integration was incorrect and just proves lists should be consistently based around JSON objects instead of randomly string splitting
This commit is contained in:
@@ -39,7 +39,7 @@ public class ChatBot
|
|||||||
{
|
{
|
||||||
_logger.Info("Bot starting!");
|
_logger.Info("Bot starting!");
|
||||||
|
|
||||||
var settings = Helpers.GetMultipleValues([
|
var settings = SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.KiwiFarmsWsEndpoint, BuiltIn.Keys.KiwiFarmsDomain,
|
BuiltIn.Keys.KiwiFarmsWsEndpoint, BuiltIn.Keys.KiwiFarmsDomain,
|
||||||
BuiltIn.Keys.Proxy, BuiltIn.Keys.KiwiFarmsWsReconnectTimeout]).Result;
|
BuiltIn.Keys.Proxy, BuiltIn.Keys.KiwiFarmsWsReconnectTimeout]).Result;
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ public class ChatBot
|
|||||||
|
|
||||||
private void OnFailedToJoinRoom(object sender, string message)
|
private void OnFailedToJoinRoom(object sender, string message)
|
||||||
{
|
{
|
||||||
var failureLimit = Helpers.GetValue(BuiltIn.Keys.KiwiFarmsJoinFailLimit).Result.ToType<int>();
|
var failureLimit = SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsJoinFailLimit).Result.ToType<int>();
|
||||||
_joinFailures++;
|
_joinFailures++;
|
||||||
_logger.Error($"Couldn't join the room, attempt {_joinFailures}. KF returned: {message}");
|
_logger.Error($"Couldn't join the room, attempt {_joinFailures}. KF returned: {message}");
|
||||||
_logger.Error("This is likely due to the session cookie expiring. Retrieving a new one.");
|
_logger.Error("This is likely due to the session cookie expiring. Retrieving a new one.");
|
||||||
@@ -108,7 +108,7 @@ public class ChatBot
|
|||||||
|
|
||||||
private async Task KfPingTask()
|
private async Task KfPingTask()
|
||||||
{
|
{
|
||||||
var interval = (await Helpers.GetValue(BuiltIn.Keys.KiwiFarmsPingInterval)).ToType<int>();
|
var interval = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsPingInterval)).ToType<int>();
|
||||||
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(interval));
|
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(interval));
|
||||||
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
||||||
{
|
{
|
||||||
@@ -123,7 +123,7 @@ public class ChatBot
|
|||||||
}
|
}
|
||||||
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");
|
||||||
var inactivityTimeout = (await Helpers.GetValue(BuiltIn.Keys.KiwiFarmsInactivityTimeout)).ToType<int>();
|
var inactivityTimeout = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsInactivityTimeout)).ToType<int>();
|
||||||
if (inactivityTime.TotalSeconds > inactivityTimeout)
|
if (inactivityTime.TotalSeconds > inactivityTimeout)
|
||||||
{
|
{
|
||||||
// Yeah, super dodgy
|
// Yeah, super dodgy
|
||||||
@@ -145,7 +145,7 @@ public class ChatBot
|
|||||||
}
|
}
|
||||||
|
|
||||||
var settings =
|
var settings =
|
||||||
await Helpers.GetMultipleValues([BuiltIn.Keys.KiwiFarmsUsername, BuiltIn.Keys.KiwiFarmsPassword]);
|
await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.KiwiFarmsUsername, BuiltIn.Keys.KiwiFarmsPassword]);
|
||||||
await _kfTokenService.PerformLogin(settings[BuiltIn.Keys.KiwiFarmsUsername].Value!,
|
await _kfTokenService.PerformLogin(settings[BuiltIn.Keys.KiwiFarmsUsername].Value!,
|
||||||
settings[BuiltIn.Keys.KiwiFarmsPassword].Value!);
|
settings[BuiltIn.Keys.KiwiFarmsPassword].Value!);
|
||||||
_logger.Info("Successfully logged in");
|
_logger.Info("Successfully logged in");
|
||||||
@@ -155,7 +155,7 @@ public class ChatBot
|
|||||||
{
|
{
|
||||||
// Reset value to 0 as we've now successfully joined
|
// Reset value to 0 as we've now successfully joined
|
||||||
if (_joinFailures > 0) _joinFailures = 0;
|
if (_joinFailures > 0) _joinFailures = 0;
|
||||||
var settings = Helpers.GetMultipleValues([BuiltIn.Keys.GambaSeshDetectEnabled,
|
var settings = SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.GambaSeshDetectEnabled,
|
||||||
BuiltIn.Keys.GambaSeshUserId, BuiltIn.Keys.KiwiFarmsUsername, BuiltIn.Keys.BotDisconnectReplayLimit])
|
BuiltIn.Keys.GambaSeshUserId, BuiltIn.Keys.KiwiFarmsUsername, BuiltIn.Keys.BotDisconnectReplayLimit])
|
||||||
.Result;
|
.Result;
|
||||||
// Send messages if there are any to replay (Assuming we DC'd, and it's now the message flood)
|
// Send messages if there are any to replay (Assuming we DC'd, and it's now the message flood)
|
||||||
@@ -255,8 +255,8 @@ public class ChatBot
|
|||||||
// https://github.com/jaw-sh/ruforo/blob/master/src/web/chat/connection.rs#L226
|
// https://github.com/jaw-sh/ruforo/blob/master/src/web/chat/connection.rs#L226
|
||||||
public async Task<SentMessageTrackerModel> SendChatMessageAsync(string message, bool bypassSeshDetect = false, LengthLimitBehavior lengthLimitBehavior = LengthLimitBehavior.TruncateNicely, int lengthLimit = 1023)
|
public async Task<SentMessageTrackerModel> SendChatMessageAsync(string message, bool bypassSeshDetect = false, LengthLimitBehavior lengthLimitBehavior = LengthLimitBehavior.TruncateNicely, int lengthLimit = 1023)
|
||||||
{
|
{
|
||||||
var settings = await Helpers
|
var settings = await SettingsProvider
|
||||||
.GetMultipleValues([
|
.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.KiwiFarmsSuppressChatMessages, BuiltIn.Keys.GambaSeshDetectEnabled
|
BuiltIn.Keys.KiwiFarmsSuppressChatMessages, BuiltIn.Keys.GambaSeshDetectEnabled
|
||||||
]);
|
]);
|
||||||
var reference = Guid.NewGuid().ToString();
|
var reference = Guid.NewGuid().ToString();
|
||||||
@@ -357,7 +357,7 @@ public class ChatBot
|
|||||||
|
|
||||||
private void OnUsersJoined(object sender, List<UserModel> users, UsersJsonModel jsonPayload)
|
private void OnUsersJoined(object sender, List<UserModel> users, UsersJsonModel jsonPayload)
|
||||||
{
|
{
|
||||||
var settings = Helpers.GetMultipleValues([BuiltIn.Keys.GambaSeshUserId, BuiltIn.Keys.GambaSeshDetectEnabled, BuiltIn.Keys.BotKeesSeen])
|
var settings = SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.GambaSeshUserId, BuiltIn.Keys.GambaSeshDetectEnabled, BuiltIn.Keys.BotKeesSeen])
|
||||||
.Result;
|
.Result;
|
||||||
_logger.Debug($"Received {users.Count} user join events");
|
_logger.Debug($"Received {users.Count} user join events");
|
||||||
using var db = new ApplicationDbContext();
|
using var db = new ApplicationDbContext();
|
||||||
@@ -373,7 +373,7 @@ public class ChatBot
|
|||||||
{
|
{
|
||||||
_logger.Info("Kees has joined!");
|
_logger.Info("Kees has joined!");
|
||||||
SendChatMessage($":!: :!: {user.Username} has appeared! :!: :!:", true);
|
SendChatMessage($":!: :!: {user.Username} has appeared! :!: :!:", true);
|
||||||
Helpers.SetValueAsBoolean(BuiltIn.Keys.BotKeesSeen, true).Wait(_cancellationToken);
|
SettingsProvider.SetValueAsBooleanAsync(BuiltIn.Keys.BotKeesSeen, true).Wait(_cancellationToken);
|
||||||
}
|
}
|
||||||
_logger.Info($"{user.Username} joined!");
|
_logger.Info($"{user.Username} joined!");
|
||||||
|
|
||||||
@@ -402,7 +402,7 @@ public class ChatBot
|
|||||||
|
|
||||||
private void OnUsersParted(object sender, List<int> userIds)
|
private void OnUsersParted(object sender, List<int> userIds)
|
||||||
{
|
{
|
||||||
var settings = Helpers.GetMultipleValues([BuiltIn.Keys.GambaSeshUserId, BuiltIn.Keys.GambaSeshDetectEnabled])
|
var settings = SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.GambaSeshUserId, BuiltIn.Keys.GambaSeshDetectEnabled])
|
||||||
.Result;
|
.Result;
|
||||||
if (userIds.Contains(settings[BuiltIn.Keys.GambaSeshUserId].ToType<int>()) && settings[BuiltIn.Keys.GambaSeshDetectEnabled].ToBoolean())
|
if (userIds.Contains(settings[BuiltIn.Keys.GambaSeshUserId].ToType<int>()) && settings[BuiltIn.Keys.GambaSeshDetectEnabled].ToBoolean())
|
||||||
{
|
{
|
||||||
@@ -453,7 +453,7 @@ public class ChatBot
|
|||||||
|
|
||||||
private void OnKfWsReconnected(object sender, ReconnectionInfo reconnectionInfo)
|
private void OnKfWsReconnected(object sender, ReconnectionInfo reconnectionInfo)
|
||||||
{
|
{
|
||||||
var roomId = Helpers.GetValue(BuiltIn.Keys.KiwiFarmsRoomId).Result.ToType<int>();
|
var roomId = SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsRoomId).Result.ToType<int>();
|
||||||
_logger.Error($"Sneedchat reconnected due to {reconnectionInfo.Type}");
|
_logger.Error($"Sneedchat reconnected due to {reconnectionInfo.Type}");
|
||||||
_logger.Info("Resetting GambaSesh presence so it can resync if he crashed while the bot was DC'd");
|
_logger.Info("Resetting GambaSesh presence so it can resync if he crashed while the bot was DC'd");
|
||||||
GambaSeshPresent = false;
|
GambaSeshPresent = false;
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class NewKickChannelCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var channels = (await Helpers.GetValue(BuiltIn.Keys.KickChannels)).JsonDeserialize<List<KickChannelModel>>();
|
var channels = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KickChannels)).JsonDeserialize<List<KickChannelModel>>();
|
||||||
var channelId = Convert.ToInt32(arguments["channel_id"].Value);
|
var channelId = Convert.ToInt32(arguments["channel_id"].Value);
|
||||||
if (channels.Any(channel => channel.ChannelId == channelId))
|
if (channels.Any(channel => channel.ChannelId == channelId))
|
||||||
{
|
{
|
||||||
@@ -102,7 +102,7 @@ public class NewKickChannelCommand : ICommand
|
|||||||
ChannelSlug = arguments["slug"].Value
|
ChannelSlug = arguments["slug"].Value
|
||||||
});
|
});
|
||||||
|
|
||||||
await Helpers.SetValueAsJsonObject(BuiltIn.Keys.KickChannels, channels);
|
await SettingsProvider.SetValueAsJsonObjectAsync(BuiltIn.Keys.KickChannels, channels);
|
||||||
await botInstance.SendChatMessageAsync("Updated list of channels", true);
|
await botInstance.SendChatMessageAsync("Updated list of channels", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,7 +118,7 @@ public class RemoveKickChannelCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var channels = (await Helpers.GetValue(BuiltIn.Keys.KickChannels)).JsonDeserialize<List<KickChannelModel>>();
|
var channels = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KickChannels)).JsonDeserialize<List<KickChannelModel>>();
|
||||||
var channelId = Convert.ToInt32(arguments["channel_id"].Value);
|
var channelId = Convert.ToInt32(arguments["channel_id"].Value);
|
||||||
var channel = channels.FirstOrDefault(ch => ch.ChannelId == channelId);
|
var channel = channels.FirstOrDefault(ch => ch.ChannelId == channelId);
|
||||||
if (channel == null)
|
if (channel == null)
|
||||||
@@ -128,7 +128,7 @@ public class RemoveKickChannelCommand : ICommand
|
|||||||
}
|
}
|
||||||
channels.Remove(channel);
|
channels.Remove(channel);
|
||||||
|
|
||||||
await Helpers.SetValueAsJsonObject(BuiltIn.Keys.KickChannels, channels);
|
await SettingsProvider.SetValueAsJsonObjectAsync(BuiltIn.Keys.KickChannels, channels);
|
||||||
await botInstance.SendChatMessageAsync("Updated list of channels", true);
|
await botInstance.SendChatMessageAsync("Updated list of channels", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,7 +160,7 @@ public class AddCourtHearingCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var hearings = (await Helpers.GetValue(BuiltIn.Keys.BotCourtCalendar)).JsonDeserialize<List<CourtHearingModel>>();
|
var hearings = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotCourtCalendar)).JsonDeserialize<List<CourtHearingModel>>();
|
||||||
if (hearings == null)
|
if (hearings == null)
|
||||||
{
|
{
|
||||||
await botInstance.SendChatMessageAsync("Hearings list was null", true);
|
await botInstance.SendChatMessageAsync("Hearings list was null", true);
|
||||||
@@ -174,7 +174,7 @@ public class AddCourtHearingCommand : ICommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
hearings.Add(new CourtHearingModel {CaseNumber = caseNumber, Description = arguments["description"].Value, Time = date});
|
hearings.Add(new CourtHearingModel {CaseNumber = caseNumber, Description = arguments["description"].Value, Time = date});
|
||||||
await Helpers.SetValueAsJsonObject(BuiltIn.Keys.BotCourtCalendar, hearings);
|
await SettingsProvider.SetValueAsJsonObjectAsync(BuiltIn.Keys.BotCourtCalendar, hearings);
|
||||||
await botInstance.SendChatMessageAsync("Updated list of hearings", true);
|
await botInstance.SendChatMessageAsync("Updated list of hearings", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,7 @@ public class RemoveCourtHearingCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var hearings = (await Helpers.GetValue(BuiltIn.Keys.BotCourtCalendar)).JsonDeserialize<List<CourtHearingModel>>();
|
var hearings = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotCourtCalendar)).JsonDeserialize<List<CourtHearingModel>>();
|
||||||
if (hearings == null)
|
if (hearings == null)
|
||||||
{
|
{
|
||||||
await botInstance.SendChatMessageAsync("Hearings list was null", true);
|
await botInstance.SendChatMessageAsync("Hearings list was null", true);
|
||||||
@@ -205,7 +205,7 @@ public class RemoveCourtHearingCommand : ICommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
hearings.RemoveAt(hearingIndex - 1);
|
hearings.RemoveAt(hearingIndex - 1);
|
||||||
await Helpers.SetValueAsJsonObject(BuiltIn.Keys.BotCourtCalendar, hearings);
|
await SettingsProvider.SetValueAsJsonObjectAsync(BuiltIn.Keys.BotCourtCalendar, hearings);
|
||||||
await botInstance.SendChatMessageAsync("Updated list of hearings", true);
|
await botInstance.SendChatMessageAsync("Updated list of hearings", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -340,7 +340,7 @@ public class SetAlmanacTextCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
await Helpers.SetValue(BuiltIn.Keys.BotAlmanacText, arguments["text"].Value);
|
await SettingsProvider.SetValueAsync(BuiltIn.Keys.BotAlmanacText, arguments["text"].Value);
|
||||||
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated text for the almanac shill", true);
|
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated text for the almanac shill", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -364,7 +364,7 @@ public class SetAlmanacIntervalCommand : ICommand
|
|||||||
await botInstance.SendChatMessageAsync("Not going to let you use an interval below 300 seconds", true);
|
await botInstance.SendChatMessageAsync("Not going to let you use an interval below 300 seconds", true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await Helpers.SetValue(BuiltIn.Keys.BotAlmanacInterval, arguments["interval"].Value);
|
await SettingsProvider.SetValueAsync(BuiltIn.Keys.BotAlmanacInterval, arguments["interval"].Value);
|
||||||
await botInstance.BotServices.AlmanacShill.StopShillTaskAsync();
|
await botInstance.BotServices.AlmanacShill.StopShillTaskAsync();
|
||||||
botInstance.BotServices.AlmanacShill.StartShillTask();
|
botInstance.BotServices.AlmanacShill.StartShillTask();
|
||||||
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated interval and restarted the shill task", true);
|
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated interval and restarted the shill task", true);
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class HowlggStatsCommand : ICommand
|
|||||||
{
|
{
|
||||||
var window = Convert.ToInt32(arguments["window"].Value);
|
var window = Convert.ToInt32(arguments["window"].Value);
|
||||||
var start = DateTimeOffset.UtcNow.AddHours(-window);
|
var start = DateTimeOffset.UtcNow.AddHours(-window);
|
||||||
var division = (await Helpers.GetValue(BuiltIn.Keys.HowlggDivisionAmount)).ToType<float>();
|
var division = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.HowlggDivisionAmount)).ToType<float>();
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
// EF SQLite doesn't support filtering on dates :(
|
// EF SQLite doesn't support filtering on dates :(
|
||||||
var bets = (await db.HowlggBets.ToListAsync(ctx)).Where(b => b.Date.UtcDateTime > start).ToList();
|
var bets = (await db.HowlggBets.ToListAsync(ctx)).Where(b => b.Date.UtcDateTime > start).ToList();
|
||||||
@@ -44,7 +44,7 @@ public class HowlggRecentBetCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([
|
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor, BuiltIn.Keys.HowlggDivisionAmount
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor, BuiltIn.Keys.HowlggDivisionAmount
|
||||||
]);
|
]);
|
||||||
var division = settings[BuiltIn.Keys.HowlggDivisionAmount].ToType<float>();
|
var division = settings[BuiltIn.Keys.HowlggDivisionAmount].ToType<float>();
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class AddImageCommand : ICommand
|
|||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
var imageKeys = (await Helpers.GetValue(BuiltIn.Keys.BotImageAcceptableKeys)).JsonDeserialize<List<string>>();
|
var imageKeys = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotImageAcceptableKeys)).JsonDeserialize<List<string>>();
|
||||||
if (imageKeys == null) throw new InvalidOperationException($"{BuiltIn.Keys.BotImageAcceptableKeys} was null");
|
if (imageKeys == null) throw new InvalidOperationException($"{BuiltIn.Keys.BotImageAcceptableKeys} was null");
|
||||||
var key = arguments["key"].Value;
|
var key = arguments["key"].Value;
|
||||||
var url = arguments["url"].Value;
|
var url = arguments["url"].Value;
|
||||||
@@ -65,7 +65,7 @@ public class RemoveImageCommand : ICommand
|
|||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
var imageKeys = (await Helpers.GetValue(BuiltIn.Keys.BotImageAcceptableKeys)).JsonDeserialize<List<string>>();
|
var imageKeys = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotImageAcceptableKeys)).JsonDeserialize<List<string>>();
|
||||||
if (imageKeys == null) throw new InvalidOperationException($"{BuiltIn.Keys.BotImageAcceptableKeys} was null");
|
if (imageKeys == null) throw new InvalidOperationException($"{BuiltIn.Keys.BotImageAcceptableKeys} was null");
|
||||||
var key = arguments["key"].Value;
|
var key = arguments["key"].Value;
|
||||||
var url = arguments["url"].Value;
|
var url = arguments["url"].Value;
|
||||||
@@ -103,7 +103,7 @@ public class ListImageCommand : ICommand
|
|||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
var imageKeys = (await Helpers.GetValue(BuiltIn.Keys.BotImageAcceptableKeys)).JsonDeserialize<List<string>>();
|
var imageKeys = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotImageAcceptableKeys)).JsonDeserialize<List<string>>();
|
||||||
if (imageKeys == null) throw new InvalidOperationException($"{BuiltIn.Keys.BotImageAcceptableKeys} was null");
|
if (imageKeys == null) throw new InvalidOperationException($"{BuiltIn.Keys.BotImageAcceptableKeys} was null");
|
||||||
var key = arguments["key"].Value;
|
var key = arguments["key"].Value;
|
||||||
if (!imageKeys.Contains(key))
|
if (!imageKeys.Contains(key))
|
||||||
@@ -146,7 +146,7 @@ public class GetRandomImage : ICommand
|
|||||||
var key = arguments["key"].Value.ToLower();
|
var key = arguments["key"].Value.ToLower();
|
||||||
var images = db.Images.Where(i => i.Key == key);
|
var images = db.Images.Where(i => i.Key == key);
|
||||||
if (!await images.AnyAsync(ctx)) return;
|
if (!await images.AnyAsync(ctx)) return;
|
||||||
var settings = await Helpers.GetMultipleValues([
|
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.BotImageRandomSliceDivideBy, BuiltIn.Keys.BotImagePigCubeSelfDestruct,
|
BuiltIn.Keys.BotImageRandomSliceDivideBy, BuiltIn.Keys.BotImagePigCubeSelfDestruct,
|
||||||
BuiltIn.Keys.BotImageInvertedCubeUrl, BuiltIn.Keys.BotImagePigCubeSelfDestructMin,
|
BuiltIn.Keys.BotImageInvertedCubeUrl, BuiltIn.Keys.BotImagePigCubeSelfDestructMin,
|
||||||
BuiltIn.Keys.BotImagePigCubeSelfDestructMax, BuiltIn.Keys.BotImageInvertedPigCubeSelfDestructDelay
|
BuiltIn.Keys.BotImagePigCubeSelfDestructMax, BuiltIn.Keys.BotImageInvertedPigCubeSelfDestructDelay
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public class JuiceCommand : ICommand
|
|||||||
// Have to attach the entity because it is coming from another DB context
|
// Have to attach the entity because it is coming from another DB context
|
||||||
// https://stackoverflow.com/questions/52718652/ef-core-sqlite-sqlite-error-19-unique-constraint-failed
|
// https://stackoverflow.com/questions/52718652/ef-core-sqlite-sqlite-error-19-unique-constraint-failed
|
||||||
db.Users.Attach(user);
|
db.Users.Attach(user);
|
||||||
var juicerSettings = await Helpers.GetMultipleValues([
|
var juicerSettings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.JuiceAmount, BuiltIn.Keys.JuiceCooldown, BuiltIn.Keys.JuiceLoserDivision,
|
BuiltIn.Keys.JuiceAmount, BuiltIn.Keys.JuiceCooldown, BuiltIn.Keys.JuiceLoserDivision,
|
||||||
BuiltIn.Keys.GambaSeshDetectEnabled, BuiltIn.Keys.JuiceAllowedWhileStreaming,
|
BuiltIn.Keys.GambaSeshDetectEnabled, BuiltIn.Keys.JuiceAllowedWhileStreaming,
|
||||||
BuiltIn.Keys.TwitchBossmanJackUsername, BuiltIn.Keys.JuiceAutoDeleteMsgDelay
|
BuiltIn.Keys.TwitchBossmanJackUsername, BuiltIn.Keys.JuiceAutoDeleteMsgDelay
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class CrackedCommand : ICommand
|
|||||||
{
|
{
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
var logger = LogManager.GetCurrentClassLogger();
|
||||||
var msg = arguments["msg"].Value.TrimStart('/');
|
var msg = arguments["msg"].Value.TrimStart('/');
|
||||||
var settings = await Helpers.GetMultipleValues([
|
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.CrackedZalgoFuckUpMode, BuiltIn.Keys.CrackedZalgoFuckUpPosition
|
BuiltIn.Keys.CrackedZalgoFuckUpMode, BuiltIn.Keys.CrackedZalgoFuckUpPosition
|
||||||
]);
|
]);
|
||||||
var zalgo = new ZalgoString(msg, (FuckUpMode)settings[BuiltIn.Keys.CrackedZalgoFuckUpMode].ToType<int>(),
|
var zalgo = new ZalgoString(msg, (FuckUpMode)settings[BuiltIn.Keys.CrackedZalgoFuckUpMode].ToType<int>(),
|
||||||
@@ -70,7 +70,7 @@ public class CleanCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var settings =
|
var settings =
|
||||||
await Helpers.GetMultipleValues([BuiltIn.Keys.BotCleanStartTime, BuiltIn.Keys.TwitchBossmanJackUsername]);
|
await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.BotCleanStartTime, BuiltIn.Keys.TwitchBossmanJackUsername]);
|
||||||
var start = settings[BuiltIn.Keys.BotCleanStartTime];
|
var start = settings[BuiltIn.Keys.BotCleanStartTime];
|
||||||
if (start.Value == null)
|
if (start.Value == null)
|
||||||
{
|
{
|
||||||
@@ -93,7 +93,7 @@ public class RehabCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var settings =
|
var settings =
|
||||||
await Helpers.GetMultipleValues([BuiltIn.Keys.BotRehabEndTime, BuiltIn.Keys.TwitchBossmanJackUsername]);
|
await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.BotRehabEndTime, BuiltIn.Keys.TwitchBossmanJackUsername]);
|
||||||
var end = settings[BuiltIn.Keys.BotRehabEndTime];
|
var end = settings[BuiltIn.Keys.BotRehabEndTime];
|
||||||
if (end.Value == null)
|
if (end.Value == null)
|
||||||
{
|
{
|
||||||
@@ -123,7 +123,7 @@ public class NextPoVisitCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(120);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(120);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var time = await Helpers.GetValue(BuiltIn.Keys.BotPoNextVisit);
|
var time = await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotPoNextVisit);
|
||||||
if (time.Value == null)
|
if (time.Value == null)
|
||||||
{
|
{
|
||||||
await botInstance.SendChatMessageAsync("There is no next PO visit :(", true);
|
await botInstance.SendChatMessageAsync("There is no next PO visit :(", true);
|
||||||
@@ -162,7 +162,7 @@ public class NextCourtHearingCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(120);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(120);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var hearings = (await Helpers.GetValue(BuiltIn.Keys.BotCourtCalendar)).JsonDeserialize<List<CourtHearingModel>>();
|
var hearings = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotCourtCalendar)).JsonDeserialize<List<CourtHearingModel>>();
|
||||||
if (hearings == null)
|
if (hearings == null)
|
||||||
{
|
{
|
||||||
await botInstance.SendChatMessageAsync("Caught a null when grabbing hearings", true);
|
await botInstance.SendChatMessageAsync("Caught a null when grabbing hearings", true);
|
||||||
@@ -217,7 +217,7 @@ public class JailCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.BotJailStartTime, BuiltIn.Keys.TwitchBossmanJackUsername]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.BotJailStartTime, BuiltIn.Keys.TwitchBossmanJackUsername]);
|
||||||
var start = settings[BuiltIn.Keys.BotJailStartTime];
|
var start = settings[BuiltIn.Keys.BotJailStartTime];
|
||||||
if (start.Value == null)
|
if (start.Value == null)
|
||||||
{
|
{
|
||||||
@@ -248,7 +248,7 @@ public class LastStreamCommand : ICommand
|
|||||||
var timespan = DateTimeOffset.UtcNow - latest.Time;
|
var timespan = DateTimeOffset.UtcNow - latest.Time;
|
||||||
var agt = TimeZoneInfo.ConvertTime(latest.Time, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
|
var agt = TimeZoneInfo.ConvertTime(latest.Time, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
|
||||||
// The table doesn't contain the name of the person so we'll just have to assume it's his Twitch username
|
// The table doesn't contain the name of the person so we'll just have to assume it's his Twitch username
|
||||||
var username = await Helpers.GetValue(BuiltIn.Keys.TwitchBossmanJackUsername);
|
var username = await SettingsProvider.GetValueAsync(BuiltIn.Keys.TwitchBossmanJackUsername);
|
||||||
await botInstance.SendChatMessageAsync($"{username.Value} last streamed on Twitch approximately {timespan.Humanize(precision: 2, minUnit: TimeUnit.Minute, maxUnit: TimeUnit.Hour)} ago at {agt:dddd h:mm tt} AGT", true);
|
await botInstance.SendChatMessageAsync($"{username.Value} last streamed on Twitch approximately {timespan.Humanize(precision: 2, minUnit: TimeUnit.Minute, maxUnit: TimeUnit.Hour)} ago at {agt:dddd h:mm tt} AGT", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -263,7 +263,7 @@ public class AlmanacCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var text = await Helpers.GetValue(BuiltIn.Keys.BotAlmanacText);
|
var text = await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotAlmanacText);
|
||||||
if (message.MessageRaw.Contains("almanac plain"))
|
if (message.MessageRaw.Contains("almanac plain"))
|
||||||
{
|
{
|
||||||
await botInstance.SendChatMessageAsync($"@{user.KfUsername}, [plain]{text.Value}", true);
|
await botInstance.SendChatMessageAsync($"@{user.KfUsername}, [plain]{text.Value}", true);
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class RainbetRecentBetCommand : ICommand
|
|||||||
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
public TimeSpan Timeout => TimeSpan.FromSeconds(10);
|
||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([
|
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor, BuiltIn.Keys.HowlggDivisionAmount
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor, BuiltIn.Keys.HowlggDivisionAmount
|
||||||
]);
|
]);
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class GetRestreamCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var url = await Helpers.GetValue(BuiltIn.Keys.RestreamUrl);
|
var url = await SettingsProvider.GetValueAsync(BuiltIn.Keys.RestreamUrl);
|
||||||
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, restream URL: {url.Value}", true);
|
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, restream URL: {url.Value}", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ public class SetRestreamCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
await Helpers.SetValue(BuiltIn.Keys.RestreamUrl, arguments["url"].Value);
|
await SettingsProvider.SetValueAsync(BuiltIn.Keys.RestreamUrl, arguments["url"].Value);
|
||||||
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated URL", true);
|
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated URL", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ public class SetShillRestreamCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
await Helpers.SetValue(BuiltIn.Keys.TwitchCommercialRestreamShillMessage, arguments["url"].Value);
|
await SettingsProvider.SetValueAsync(BuiltIn.Keys.TwitchCommercialRestreamShillMessage, arguments["url"].Value);
|
||||||
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated URL for the commercial break restream shill", true);
|
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, updated URL for the commercial break restream shill", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ public class SelfPromoCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var channels = Helpers.GetValue(BuiltIn.Keys.KickChannels).Result.JsonDeserialize<List<KickChannelModel>>();
|
var channels = SettingsProvider.GetValueAsync(BuiltIn.Keys.KickChannels).Result.JsonDeserialize<List<KickChannelModel>>();
|
||||||
var channel = channels.FirstOrDefault(ch => ch.ForumId == user.KfId);
|
var channel = channels.FirstOrDefault(ch => ch.ForumId == user.KfId);
|
||||||
if (channel == null)
|
if (channel == null)
|
||||||
{
|
{
|
||||||
@@ -98,7 +98,7 @@ public class GetRestreamPlainCommand : ICommand
|
|||||||
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments,
|
||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
var url = await Helpers.GetValue(BuiltIn.Keys.RestreamUrl);
|
var url = await SettingsProvider.GetValueAsync(BuiltIn.Keys.RestreamUrl);
|
||||||
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, restream URL: [plain]{url.Value}", true);
|
await botInstance.SendChatMessageAsync($"@{message.Author.Username}, restream URL: [plain]{url.Value}", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,12 +11,12 @@ public class AlmanacShill(ChatBot kfChatBot) : IDisposable
|
|||||||
|
|
||||||
private async Task AlmanacShillTask()
|
private async Task AlmanacShillTask()
|
||||||
{
|
{
|
||||||
var interval = await Helpers.GetValue(BuiltIn.Keys.BotAlmanacInterval);
|
var interval = await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotAlmanacInterval);
|
||||||
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(Convert.ToInt32(interval.Value)));
|
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(Convert.ToInt32(interval.Value)));
|
||||||
while (await timer.WaitForNextTickAsync(_almanacShillCts.Token))
|
while (await timer.WaitForNextTickAsync(_almanacShillCts.Token))
|
||||||
{
|
{
|
||||||
_logger.Info("Time to shill the almanac in chat");
|
_logger.Info("Time to shill the almanac in chat");
|
||||||
var text = await Helpers.GetValue(BuiltIn.Keys.BotAlmanacText);
|
var text = await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotAlmanacText);
|
||||||
await kfChatBot.SendChatMessageAsync($":!: {text.Value}", true);
|
await kfChatBot.SendChatMessageAsync($":!: {text.Value}", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class BotServices
|
|||||||
_chatBot = botInstance;
|
_chatBot = botInstance;
|
||||||
_cancellationToken = ctx;
|
_cancellationToken = ctx;
|
||||||
TemporarilyBypassGambaSeshForDiscord =
|
TemporarilyBypassGambaSeshForDiscord =
|
||||||
Helpers.GetValue(BuiltIn.Keys.DiscordTemporarilyBypassGambaSeshInitialValue).Result.ToBoolean();
|
SettingsProvider.GetValueAsync(BuiltIn.Keys.DiscordTemporarilyBypassGambaSeshInitialValue).Result.ToBoolean();
|
||||||
|
|
||||||
_logger.Info("Bot services ready to initialize!");
|
_logger.Info("Bot services ready to initialize!");
|
||||||
}
|
}
|
||||||
@@ -98,14 +98,14 @@ public class BotServices
|
|||||||
private async Task BuildShuffle()
|
private async Task BuildShuffle()
|
||||||
{
|
{
|
||||||
_logger.Debug("Building Shuffle");
|
_logger.Debug("Building Shuffle");
|
||||||
_shuffle = new Shuffle((await Helpers.GetValue(BuiltIn.Keys.Proxy)).Value, _cancellationToken);
|
_shuffle = new Shuffle((await SettingsProvider.GetValueAsync(BuiltIn.Keys.Proxy)).Value, _cancellationToken);
|
||||||
_shuffle.OnLatestBetUpdated += ShuffleOnLatestBetUpdated;
|
_shuffle.OnLatestBetUpdated += ShuffleOnLatestBetUpdated;
|
||||||
await _shuffle.StartWsClient();
|
await _shuffle.StartWsClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task BuildDiscord()
|
private async Task BuildDiscord()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.DiscordToken, BuiltIn.Keys.Proxy]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.DiscordToken, BuiltIn.Keys.Proxy]);
|
||||||
_logger.Debug("Building Discord");
|
_logger.Debug("Building Discord");
|
||||||
if (settings[BuiltIn.Keys.DiscordToken].Value == null)
|
if (settings[BuiltIn.Keys.DiscordToken].Value == null)
|
||||||
{
|
{
|
||||||
@@ -131,7 +131,7 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildChipsgg()
|
private async Task BuildChipsgg()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.Proxy, BuiltIn.Keys.ChipsggEnabled]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.Proxy, BuiltIn.Keys.ChipsggEnabled]);
|
||||||
if (!settings[BuiltIn.Keys.ChipsggEnabled].ToBoolean())
|
if (!settings[BuiltIn.Keys.ChipsggEnabled].ToBoolean())
|
||||||
{
|
{
|
||||||
_logger.Debug("Chips.gg is disabled");
|
_logger.Debug("Chips.gg is disabled");
|
||||||
@@ -145,7 +145,7 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildJackpot()
|
private async Task BuildJackpot()
|
||||||
{
|
{
|
||||||
var proxy = (await Helpers.GetValue(BuiltIn.Keys.Proxy)).Value;
|
var proxy = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.Proxy)).Value;
|
||||||
_jackpot = new Jackpot(proxy, _cancellationToken);
|
_jackpot = new Jackpot(proxy, _cancellationToken);
|
||||||
_jackpot.OnJackpotBet += OnJackpotBet;
|
_jackpot.OnJackpotBet += OnJackpotBet;
|
||||||
await _jackpot.StartWsClient();
|
await _jackpot.StartWsClient();
|
||||||
@@ -154,7 +154,7 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildBetBolt()
|
private async Task BuildBetBolt()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.Proxy, BuiltIn.Keys.BetBoltEnabled]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.Proxy, BuiltIn.Keys.BetBoltEnabled]);
|
||||||
if (!settings[BuiltIn.Keys.BetBoltEnabled].ToBoolean())
|
if (!settings[BuiltIn.Keys.BetBoltEnabled].ToBoolean())
|
||||||
{
|
{
|
||||||
_logger.Debug("BetBolt is disabled");
|
_logger.Debug("BetBolt is disabled");
|
||||||
@@ -168,7 +168,7 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildClashgg()
|
private async Task BuildClashgg()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.Proxy, BuiltIn.Keys.ClashggEnabled]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.Proxy, BuiltIn.Keys.ClashggEnabled]);
|
||||||
if (!settings[BuiltIn.Keys.ClashggEnabled].ToBoolean())
|
if (!settings[BuiltIn.Keys.ClashggEnabled].ToBoolean())
|
||||||
{
|
{
|
||||||
_logger.Debug("Clash.gg is disabled");
|
_logger.Debug("Clash.gg is disabled");
|
||||||
@@ -182,7 +182,7 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildTwitch()
|
private async Task BuildTwitch()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.TwitchBossmanJackId, BuiltIn.Keys.Proxy]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.TwitchBossmanJackId, BuiltIn.Keys.Proxy]);
|
||||||
if (settings[BuiltIn.Keys.TwitchBossmanJackId].Value == null)
|
if (settings[BuiltIn.Keys.TwitchBossmanJackId].Value == null)
|
||||||
{
|
{
|
||||||
_twitchDisabled = true;
|
_twitchDisabled = true;
|
||||||
@@ -199,7 +199,7 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildHowlgg()
|
private async Task BuildHowlgg()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.Proxy, BuiltIn.Keys.HowlggEnabled]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.Proxy, BuiltIn.Keys.HowlggEnabled]);
|
||||||
if (!settings[BuiltIn.Keys.HowlggEnabled].ToBoolean())
|
if (!settings[BuiltIn.Keys.HowlggEnabled].ToBoolean())
|
||||||
{
|
{
|
||||||
_logger.Debug("Howlgg is disabled");
|
_logger.Debug("Howlgg is disabled");
|
||||||
@@ -213,9 +213,9 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildKick()
|
private async Task BuildKick()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([
|
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.PusherEndpoint, BuiltIn.Keys.Proxy, BuiltIn.Keys.PusherReconnectTimeout, BuiltIn.Keys.KickEnabled,
|
BuiltIn.Keys.PusherEndpoint, BuiltIn.Keys.Proxy, BuiltIn.Keys.PusherReconnectTimeout,
|
||||||
BuiltIn.Keys.PusherChannels, BuiltIn.Keys.KickChannels
|
BuiltIn.Keys.KickEnabled, BuiltIn.Keys.KickChannels
|
||||||
]);
|
]);
|
||||||
KickClient = new KickWsClient.KickWsClient(settings[BuiltIn.Keys.PusherEndpoint].Value!,
|
KickClient = new KickWsClient.KickWsClient(settings[BuiltIn.Keys.PusherEndpoint].Value!,
|
||||||
settings[BuiltIn.Keys.Proxy].Value, settings[BuiltIn.Keys.PusherReconnectTimeout].ToType<int>());
|
settings[BuiltIn.Keys.Proxy].Value, settings[BuiltIn.Keys.PusherReconnectTimeout].ToType<int>());
|
||||||
@@ -229,11 +229,6 @@ public class BotServices
|
|||||||
if (settings[BuiltIn.Keys.KickEnabled].ToBoolean())
|
if (settings[BuiltIn.Keys.KickEnabled].ToBoolean())
|
||||||
{
|
{
|
||||||
await KickClient.StartWsClient();
|
await KickClient.StartWsClient();
|
||||||
// var pusherChannels = settings[BuiltIn.Keys.PusherChannels].ToList();
|
|
||||||
// foreach (var channel in pusherChannels)
|
|
||||||
// {
|
|
||||||
// _kickClient.SendPusherSubscribe(channel);
|
|
||||||
// }
|
|
||||||
var kickChannels = settings[BuiltIn.Keys.KickChannels].JsonDeserialize<List<KickChannelModel>>();
|
var kickChannels = settings[BuiltIn.Keys.KickChannels].JsonDeserialize<List<KickChannelModel>>();
|
||||||
if (kickChannels == null) return;
|
if (kickChannels == null) return;
|
||||||
foreach (var channel in kickChannels)
|
foreach (var channel in kickChannels)
|
||||||
@@ -245,7 +240,7 @@ public class BotServices
|
|||||||
|
|
||||||
private async Task BuildTwitchChat()
|
private async Task BuildTwitchChat()
|
||||||
{
|
{
|
||||||
var settings = await Helpers.GetMultipleValues([BuiltIn.Keys.TwitchBossmanJackUsername, BuiltIn.Keys.Proxy]);
|
var settings = await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.TwitchBossmanJackUsername, BuiltIn.Keys.Proxy]);
|
||||||
_logger.Debug("Building Twitch Chat");
|
_logger.Debug("Building Twitch Chat");
|
||||||
if (settings[BuiltIn.Keys.TwitchBossmanJackUsername].Value == null)
|
if (settings[BuiltIn.Keys.TwitchBossmanJackUsername].Value == null)
|
||||||
{
|
{
|
||||||
@@ -263,7 +258,7 @@ public class BotServices
|
|||||||
private async Task BuildAlmanacShill()
|
private async Task BuildAlmanacShill()
|
||||||
{
|
{
|
||||||
AlmanacShill = new AlmanacShill(_chatBot);
|
AlmanacShill = new AlmanacShill(_chatBot);
|
||||||
var initialState = await Helpers.GetValue(BuiltIn.Keys.BotAlmanacInitialState);
|
var initialState = await SettingsProvider.GetValueAsync(BuiltIn.Keys.BotAlmanacInitialState);
|
||||||
if (!initialState.ToBoolean())
|
if (!initialState.ToBoolean())
|
||||||
{
|
{
|
||||||
_logger.Info("Built the almanac service but not enabling as initial state is false");
|
_logger.Info("Built the almanac service but not enabling as initial state is false");
|
||||||
@@ -279,7 +274,7 @@ public class BotServices
|
|||||||
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
||||||
{
|
{
|
||||||
if (_chatBot.InitialStartCooldown) continue;
|
if (_chatBot.InitialStartCooldown) continue;
|
||||||
var settings = await Helpers.GetMultipleValues([
|
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.KickEnabled, BuiltIn.Keys.HowlggEnabled, BuiltIn.Keys.ChipsggEnabled,
|
BuiltIn.Keys.KickEnabled, BuiltIn.Keys.HowlggEnabled, BuiltIn.Keys.ChipsggEnabled,
|
||||||
BuiltIn.Keys.ClashggEnabled, BuiltIn.Keys.BetBoltEnabled
|
BuiltIn.Keys.ClashggEnabled, BuiltIn.Keys.BetBoltEnabled
|
||||||
]);
|
]);
|
||||||
@@ -379,15 +374,15 @@ public class BotServices
|
|||||||
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
while (await timer.WaitForNextTickAsync(_cancellationToken))
|
||||||
{
|
{
|
||||||
if (_howlgg == null || !_howlgg.IsConnected()) continue;
|
if (_howlgg == null || !_howlgg.IsConnected()) continue;
|
||||||
var bmjUserId = await Helpers.GetValue(BuiltIn.Keys.HowlggBmjUserId);
|
var bmjUserId = await SettingsProvider.GetValueAsync(BuiltIn.Keys.HowlggBmjUserId);
|
||||||
_howlgg.GetUserInfo(bmjUserId.Value!);
|
_howlgg.GetUserInfo(bmjUserId.Value!);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnRainbetBet(object sender, List<RainbetBetHistoryModel> bets)
|
private void OnRainbetBet(object sender, List<RainbetBetHistoryModel> bets)
|
||||||
{
|
{
|
||||||
var settings = Helpers
|
var settings = SettingsProvider
|
||||||
.GetMultipleValues([
|
.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.RainbetBmjPublicIds, BuiltIn.Keys.TwitchBossmanJackUsername,
|
BuiltIn.Keys.RainbetBmjPublicIds, BuiltIn.Keys.TwitchBossmanJackUsername,
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
||||||
]).Result;
|
]).Result;
|
||||||
@@ -448,8 +443,8 @@ public class BotServices
|
|||||||
|
|
||||||
private void OnJackpotBet(object sender, JackpotWsBetPayloadModel bet)
|
private void OnJackpotBet(object sender, JackpotWsBetPayloadModel bet)
|
||||||
{
|
{
|
||||||
var settings = Helpers
|
var settings = SettingsProvider
|
||||||
.GetMultipleValues([
|
.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.JackpotBmjUsernames, BuiltIn.Keys.TwitchBossmanJackUsername,
|
BuiltIn.Keys.JackpotBmjUsernames, BuiltIn.Keys.TwitchBossmanJackUsername,
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
||||||
]).Result;
|
]).Result;
|
||||||
@@ -470,8 +465,8 @@ public class BotServices
|
|||||||
|
|
||||||
private void OnClashggBet(object sender, ClashggBetModel bet, JsonElement jsonElement)
|
private void OnClashggBet(object sender, ClashggBetModel bet, JsonElement jsonElement)
|
||||||
{
|
{
|
||||||
var settings = Helpers
|
var settings = SettingsProvider
|
||||||
.GetMultipleValues([
|
.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.ClashggBmjIds, BuiltIn.Keys.TwitchBossmanJackUsername,
|
BuiltIn.Keys.ClashggBmjIds, BuiltIn.Keys.TwitchBossmanJackUsername,
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
||||||
]).Result;
|
]).Result;
|
||||||
@@ -506,8 +501,8 @@ public class BotServices
|
|||||||
|
|
||||||
private void OnBetBoltBet(object sender, BetBoltBetModel bet)
|
private void OnBetBoltBet(object sender, BetBoltBetModel bet)
|
||||||
{
|
{
|
||||||
var settings = Helpers
|
var settings = SettingsProvider
|
||||||
.GetMultipleValues([
|
.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.BetBoltBmjUsernames, BuiltIn.Keys.TwitchBossmanJackUsername,
|
BuiltIn.Keys.BetBoltBmjUsernames, BuiltIn.Keys.TwitchBossmanJackUsername,
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
||||||
]).Result;
|
]).Result;
|
||||||
@@ -565,7 +560,7 @@ public class BotServices
|
|||||||
_logger.Info($"Received channel deletion event of type {channel.Type} with name {channel.Name}");
|
_logger.Info($"Received channel deletion event of type {channel.Type} with name {channel.Name}");
|
||||||
if (channel.Type != DiscordChannelType.GuildText && channel.Type != DiscordChannelType.GuildVoice &&
|
if (channel.Type != DiscordChannelType.GuildText && channel.Type != DiscordChannelType.GuildVoice &&
|
||||||
channel.Type != DiscordChannelType.GuildStageVoice) return;
|
channel.Type != DiscordChannelType.GuildStageVoice) return;
|
||||||
var discordIcon = Helpers.GetValue(BuiltIn.Keys.DiscordIcon).Result;
|
var discordIcon = SettingsProvider.GetValueAsync(BuiltIn.Keys.DiscordIcon).Result;
|
||||||
var channelName = channel.Name ?? "Unknown name";
|
var channelName = channel.Name ?? "Unknown name";
|
||||||
_chatBot.SendChatMessage($"[img]{discordIcon.Value}[/img] Discord {channel.Type.Humanize()} channel '{channelName}' was deleted 🚨🚨", true);
|
_chatBot.SendChatMessage($"[img]{discordIcon.Value}[/img] Discord {channel.Type.Humanize()} channel '{channelName}' was deleted 🚨🚨", true);
|
||||||
}
|
}
|
||||||
@@ -575,7 +570,7 @@ public class BotServices
|
|||||||
_logger.Info($"Received channel creation event of type {channel.Type} with name {channel.Name}");
|
_logger.Info($"Received channel creation event of type {channel.Type} with name {channel.Name}");
|
||||||
if (channel.Type != DiscordChannelType.GuildText && channel.Type != DiscordChannelType.GuildVoice &&
|
if (channel.Type != DiscordChannelType.GuildText && channel.Type != DiscordChannelType.GuildVoice &&
|
||||||
channel.Type != DiscordChannelType.GuildStageVoice) return;
|
channel.Type != DiscordChannelType.GuildStageVoice) return;
|
||||||
var discordIcon = Helpers.GetValue(BuiltIn.Keys.DiscordIcon).Result;
|
var discordIcon = SettingsProvider.GetValueAsync(BuiltIn.Keys.DiscordIcon).Result;
|
||||||
var channelName = channel.Name ?? "Unknown name";
|
var channelName = channel.Name ?? "Unknown name";
|
||||||
_chatBot.SendChatMessage($"[img]{discordIcon.Value}[/img] New Discord {channel.Type.Humanize()} channel created: {channelName} 🚨🚨", true);
|
_chatBot.SendChatMessage($"[img]{discordIcon.Value}[/img] New Discord {channel.Type.Humanize()} channel created: {channelName} 🚨🚨", true);
|
||||||
}
|
}
|
||||||
@@ -587,13 +582,13 @@ public class BotServices
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Not caching this value as it won't harm it to have to look this up in even the worst spergout sesh
|
// Not caching this value as it won't harm it to have to look this up in even the worst spergout sesh
|
||||||
var twitchIcon = Helpers.GetValue(BuiltIn.Keys.TwitchIcon).Result.Value;
|
var twitchIcon = SettingsProvider.GetValueAsync(BuiltIn.Keys.TwitchIcon).Result.Value;
|
||||||
_chatBot.SendChatMessage($"[img]{twitchIcon}[/img] {nick}: {message.TrimEnd('\r')}", true);
|
_chatBot.SendChatMessage($"[img]{twitchIcon}[/img] {nick}: {message.TrimEnd('\r')}", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DiscordOnPresenceUpdated(object sender, DiscordPresenceUpdateModel presence)
|
private void DiscordOnPresenceUpdated(object sender, DiscordPresenceUpdateModel presence)
|
||||||
{
|
{
|
||||||
var settings = Helpers.GetMultipleValues([BuiltIn.Keys.DiscordBmjId, BuiltIn.Keys.DiscordIcon]).Result;
|
var settings = SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.DiscordBmjId, BuiltIn.Keys.DiscordIcon]).Result;
|
||||||
if (presence.User.Id != settings[BuiltIn.Keys.DiscordBmjId].Value)
|
if (presence.User.Id != settings[BuiltIn.Keys.DiscordBmjId].Value)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -610,7 +605,7 @@ public class BotServices
|
|||||||
|
|
||||||
private void DiscordOnMessageReceived(object sender, DiscordMessageModel message)
|
private void DiscordOnMessageReceived(object sender, DiscordMessageModel message)
|
||||||
{
|
{
|
||||||
var settings = Helpers.GetMultipleValues([BuiltIn.Keys.DiscordBmjId, BuiltIn.Keys.DiscordIcon]).Result;
|
var settings = SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.DiscordBmjId, BuiltIn.Keys.DiscordIcon]).Result;
|
||||||
if (message.Author.Id != settings[BuiltIn.Keys.DiscordBmjId].Value)
|
if (message.Author.Id != settings[BuiltIn.Keys.DiscordBmjId].Value)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -646,8 +641,8 @@ public class BotServices
|
|||||||
|
|
||||||
private void ShuffleOnLatestBetUpdated(object sender, ShuffleLatestBetModel bet)
|
private void ShuffleOnLatestBetUpdated(object sender, ShuffleLatestBetModel bet)
|
||||||
{
|
{
|
||||||
var settings = Helpers
|
var settings = SettingsProvider
|
||||||
.GetMultipleValues([
|
.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.ShuffleBmjUsername, BuiltIn.Keys.TwitchBossmanJackUsername,
|
BuiltIn.Keys.ShuffleBmjUsername, BuiltIn.Keys.TwitchBossmanJackUsername,
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
||||||
]).Result;
|
]).Result;
|
||||||
@@ -668,7 +663,7 @@ public class BotServices
|
|||||||
private void OnTwitchStreamStateUpdated(object sender, int channelId, bool isLive)
|
private void OnTwitchStreamStateUpdated(object sender, int channelId, bool isLive)
|
||||||
{
|
{
|
||||||
_logger.Info($"BossmanJack stream event came in. isLive => {isLive}");
|
_logger.Info($"BossmanJack stream event came in. isLive => {isLive}");
|
||||||
var settings = Helpers.GetMultipleValues([BuiltIn.Keys.RestreamUrl, BuiltIn.Keys.TwitchBossmanJackUsername, BuiltIn.Keys.BotToyStoryImage]).Result;
|
var settings = SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.RestreamUrl, BuiltIn.Keys.TwitchBossmanJackUsername, BuiltIn.Keys.BotToyStoryImage]).Result;
|
||||||
|
|
||||||
if (isLive)
|
if (isLive)
|
||||||
{
|
{
|
||||||
@@ -687,8 +682,8 @@ public class BotServices
|
|||||||
|
|
||||||
private void OnTwitchStreamCommercial(object sender, int channelId, int length, bool scheduled)
|
private void OnTwitchStreamCommercial(object sender, int channelId, int length, bool scheduled)
|
||||||
{
|
{
|
||||||
var settings = Helpers
|
var settings = SettingsProvider
|
||||||
.GetMultipleValues([BuiltIn.Keys.TwitchShillRestreamOnCommercial, BuiltIn.Keys.TwitchCommercialRestreamShillMessage, BuiltIn.Keys.TwitchBossmanJackUsername]).Result;
|
.GetMultipleValuesAsync([BuiltIn.Keys.TwitchShillRestreamOnCommercial, BuiltIn.Keys.TwitchCommercialRestreamShillMessage, BuiltIn.Keys.TwitchBossmanJackUsername]).Result;
|
||||||
if (!settings[BuiltIn.Keys.TwitchShillRestreamOnCommercial].ToBoolean())
|
if (!settings[BuiltIn.Keys.TwitchShillRestreamOnCommercial].ToBoolean())
|
||||||
{
|
{
|
||||||
_logger.Debug("Not shilling as it's disabled");
|
_logger.Debug("Not shilling as it's disabled");
|
||||||
@@ -703,19 +698,19 @@ public class BotServices
|
|||||||
|
|
||||||
private void OnTwitchStreamTosStrike(object sender, int channelId)
|
private void OnTwitchStreamTosStrike(object sender, int channelId)
|
||||||
{
|
{
|
||||||
var username = Helpers.GetValue(BuiltIn.Keys.TwitchBossmanJackUsername).Result;
|
var username = SettingsProvider.GetValueAsync(BuiltIn.Keys.TwitchBossmanJackUsername).Result;
|
||||||
_chatBot.SendChatMessage($":!::!: {username.Value} was just banned from Twitch! :!::!:", true);
|
_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 = SettingsProvider
|
||||||
.GetMultipleValues([
|
.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.ChipsggBmjUserIds, BuiltIn.Keys.TwitchBossmanJackUsername,
|
BuiltIn.Keys.ChipsggBmjUserIds, BuiltIn.Keys.TwitchBossmanJackUsername,
|
||||||
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor
|
||||||
]).Result;
|
]).Result;
|
||||||
_logger.Trace("Chips.gg bet has arrived");
|
_logger.Trace("Chips.gg bet has arrived");
|
||||||
if (!settings[BuiltIn.Keys.ChipsggBmjUserIds].ToList().Contains(bet.UserId))
|
if (!settings[BuiltIn.Keys.ChipsggBmjUserIds].JsonDeserialize<List<string>>()!.Contains(bet.UserId))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -742,7 +737,7 @@ public class BotServices
|
|||||||
private void OnPusherWsReconnected(object sender, ReconnectionInfo reconnectionInfo)
|
private void OnPusherWsReconnected(object sender, ReconnectionInfo reconnectionInfo)
|
||||||
{
|
{
|
||||||
_logger.Error($"Pusher reconnected due to {reconnectionInfo.Type}");
|
_logger.Error($"Pusher reconnected due to {reconnectionInfo.Type}");
|
||||||
var kickChannels = Helpers.GetValue(BuiltIn.Keys.KickChannels).Result.JsonDeserialize<List<KickChannelModel>>();
|
var kickChannels = SettingsProvider.GetValueAsync(BuiltIn.Keys.KickChannels).Result.JsonDeserialize<List<KickChannelModel>>();
|
||||||
if (kickChannels == null) return;
|
if (kickChannels == null) return;
|
||||||
foreach (var channel in kickChannels)
|
foreach (var channel in kickChannels)
|
||||||
{
|
{
|
||||||
@@ -761,7 +756,7 @@ public class BotServices
|
|||||||
_logger.Debug($"BB Code Translation: {e.Content.TranslateKickEmotes()}");
|
_logger.Debug($"BB Code Translation: {e.Content.TranslateKickEmotes()}");
|
||||||
|
|
||||||
if (e.Sender.Slug != "bossmanjack") return;
|
if (e.Sender.Slug != "bossmanjack") return;
|
||||||
var kickIcon = Helpers.GetValue(BuiltIn.Keys.KickIcon).Result;
|
var kickIcon = SettingsProvider.GetValueAsync(BuiltIn.Keys.KickIcon).Result;
|
||||||
|
|
||||||
_logger.Debug("Message from BossmanJack");
|
_logger.Debug("Message from BossmanJack");
|
||||||
_chatBot.SendChatMessage($"[img]{kickIcon.Value}[/img] BossmanJack: {e.Content.TranslateKickEmotes()}");
|
_chatBot.SendChatMessage($"[img]{kickIcon.Value}[/img] BossmanJack: {e.Content.TranslateKickEmotes()}");
|
||||||
@@ -770,7 +765,7 @@ public class BotServices
|
|||||||
private void OnStreamerIsLive(object sender, KickModels.StreamerIsLiveEventModel? e)
|
private void OnStreamerIsLive(object sender, KickModels.StreamerIsLiveEventModel? e)
|
||||||
{
|
{
|
||||||
if (e == null) return;
|
if (e == null) return;
|
||||||
var settings = Helpers.GetMultipleValues([BuiltIn.Keys.KickChannels, BuiltIn.Keys.BotChrisDjLiveImage]).Result;
|
var settings = SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.KickChannels, BuiltIn.Keys.BotChrisDjLiveImage]).Result;
|
||||||
var channels = settings[BuiltIn.Keys.KickChannels].JsonDeserialize<List<KickChannelModel>>();
|
var channels = settings[BuiltIn.Keys.KickChannels].JsonDeserialize<List<KickChannelModel>>();
|
||||||
if (channels == null)
|
if (channels == null)
|
||||||
{
|
{
|
||||||
@@ -806,7 +801,7 @@ public class BotServices
|
|||||||
private void OnStopStreamBroadcast(object sender, KickModels.StopStreamBroadcastEventModel? e)
|
private void OnStopStreamBroadcast(object sender, KickModels.StopStreamBroadcastEventModel? e)
|
||||||
{
|
{
|
||||||
if (e == null) return;
|
if (e == null) return;
|
||||||
var channels = Helpers.GetValue(BuiltIn.Keys.KickChannels).Result.JsonDeserialize<List<KickChannelModel>>();
|
var channels = SettingsProvider.GetValueAsync(BuiltIn.Keys.KickChannels).Result.JsonDeserialize<List<KickChannelModel>>();
|
||||||
if (channels == null)
|
if (channels == null)
|
||||||
{
|
{
|
||||||
_logger.Error("Caught null when grabbing Kick channels");
|
_logger.Error("Caught null when grabbing Kick channels");
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class KfTokenService
|
|||||||
_kiwiFlare = new KiwiFlare(kfDomain, proxy, cancellationToken);
|
_kiwiFlare = new KiwiFlare(kfDomain, proxy, cancellationToken);
|
||||||
_proxy = proxy;
|
_proxy = proxy;
|
||||||
_kfDomain = kfDomain;
|
_kfDomain = kfDomain;
|
||||||
var cachedCookies = Helpers.GetValue(BuiltIn.Keys.KiwiFarmsCookies).Result
|
var cachedCookies = SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsCookies).Result
|
||||||
.JsonDeserialize<Dictionary<string, string>>();
|
.JsonDeserialize<Dictionary<string, string>>();
|
||||||
// This shouldn't happen as the setting's default value is {}, but I'm just doing it to shut the IDE up
|
// This shouldn't happen as the setting's default value is {}, but I'm just doing it to shut the IDE up
|
||||||
if (cachedCookies == null) return;
|
if (cachedCookies == null) return;
|
||||||
@@ -161,7 +161,7 @@ public class KfTokenService
|
|||||||
{
|
{
|
||||||
_logger.Debug("Saving cookies");
|
_logger.Debug("Saving cookies");
|
||||||
var cookiesToSave = _cookies.GetAllCookies().ToDictionary(cookie => cookie.Name, cookie => cookie.Value);
|
var cookiesToSave = _cookies.GetAllCookies().ToDictionary(cookie => cookie.Name, cookie => cookie.Value);
|
||||||
await Helpers.SetValueAsJsonObject(BuiltIn.Keys.KiwiFarmsCookies, cookiesToSave);
|
await SettingsProvider.SetValueAsJsonObjectAsync(BuiltIn.Keys.KiwiFarmsCookies, cookiesToSave);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WipeCookies()
|
public void WipeCookies()
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class Rainbet : IDisposable
|
|||||||
using var timer = new PeriodicTimer(_gameHistoryInterval);
|
using var timer = new PeriodicTimer(_gameHistoryInterval);
|
||||||
while (await timer.WaitForNextTickAsync(_gameHistoryCts.Token))
|
while (await timer.WaitForNextTickAsync(_gameHistoryCts.Token))
|
||||||
{
|
{
|
||||||
var enabled = await Helpers.GetValue(BuiltIn.Keys.RainbetEnabled);
|
var enabled = await SettingsProvider.GetValueAsync(BuiltIn.Keys.RainbetEnabled);
|
||||||
if (!enabled.ToBoolean())
|
if (!enabled.ToBoolean())
|
||||||
{
|
{
|
||||||
_logger.Debug("Rainbet is disabled");
|
_logger.Debug("Rainbet is disabled");
|
||||||
@@ -60,7 +60,7 @@ public class Rainbet : IDisposable
|
|||||||
private async Task RefreshCookies()
|
private async Task RefreshCookies()
|
||||||
{
|
{
|
||||||
var settings =
|
var settings =
|
||||||
await Helpers.GetMultipleValues([BuiltIn.Keys.FlareSolverrApiUrl, BuiltIn.Keys.FlareSolverrProxy]);
|
await SettingsProvider.GetMultipleValuesAsync([BuiltIn.Keys.FlareSolverrApiUrl, BuiltIn.Keys.FlareSolverrProxy]);
|
||||||
var flareSolverrUrl = settings[BuiltIn.Keys.FlareSolverrApiUrl];
|
var flareSolverrUrl = settings[BuiltIn.Keys.FlareSolverrApiUrl];
|
||||||
var flareSolverrProxy = settings[BuiltIn.Keys.FlareSolverrProxy];
|
var flareSolverrProxy = settings[BuiltIn.Keys.FlareSolverrProxy];
|
||||||
var handler = new ClearanceHandler(flareSolverrUrl.Value)
|
var handler = new ClearanceHandler(flareSolverrUrl.Value)
|
||||||
@@ -95,7 +95,7 @@ public class Rainbet : IDisposable
|
|||||||
_logger.Info("Retrieving cookies for Rainbet as they have not been retrieved yet");
|
_logger.Info("Retrieving cookies for Rainbet as they have not been retrieved yet");
|
||||||
await RefreshCookies();
|
await RefreshCookies();
|
||||||
}
|
}
|
||||||
var flareSolverrProxy = await Helpers.GetValue(BuiltIn.Keys.FlareSolverrProxy);
|
var flareSolverrProxy = await SettingsProvider.GetValueAsync(BuiltIn.Keys.FlareSolverrProxy);
|
||||||
var gameHistoryUrl = "https://services.rainbet.com/v1/game-history";
|
var gameHistoryUrl = "https://services.rainbet.com/v1/game-history";
|
||||||
var jsonBody = new Dictionary<string, int> { {"take", take} };
|
var jsonBody = new Dictionary<string, int> { {"take", take} };
|
||||||
var postData = JsonContent.Create(jsonBody);
|
var postData = JsonContent.Create(jsonBody);
|
||||||
|
|||||||
@@ -69,33 +69,47 @@ public static class BuiltIn
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Helpers.SetValue(Keys.PusherEndpoint, oldConfig.PusherEndpoint.ToString());
|
await SettingsProvider.SetValueAsync(Keys.PusherEndpoint, oldConfig.PusherEndpoint.ToString());
|
||||||
await Helpers.SetValue(Keys.KiwiFarmsWsEndpoint, oldConfig.KfWsEndpoint.ToString());
|
await SettingsProvider.SetValueAsync(Keys.KiwiFarmsWsEndpoint, oldConfig.KfWsEndpoint.ToString());
|
||||||
await Helpers.SetValueAsList(Keys.PusherChannels, oldConfig.PusherChannels);
|
await SettingsProvider.SetValueAsync(Keys.KiwiFarmsRoomId, oldConfig.KfChatRoomId);
|
||||||
await Helpers.SetValue(Keys.KiwiFarmsRoomId, oldConfig.KfChatRoomId);
|
await SettingsProvider.SetValueAsync(Keys.Proxy, oldConfig.Proxy);
|
||||||
await Helpers.SetValue(Keys.Proxy, oldConfig.Proxy);
|
await SettingsProvider.SetValueAsync(Keys.KiwiFarmsWsReconnectTimeout, oldConfig.KfReconnectTimeout);
|
||||||
await Helpers.SetValue(Keys.KiwiFarmsWsReconnectTimeout, oldConfig.KfReconnectTimeout);
|
await SettingsProvider.SetValueAsync(Keys.PusherReconnectTimeout, oldConfig.PusherReconnectTimeout);
|
||||||
await Helpers.SetValue(Keys.PusherReconnectTimeout, oldConfig.PusherReconnectTimeout);
|
await SettingsProvider.SetValueAsBooleanAsync(Keys.GambaSeshDetectEnabled, oldConfig.EnableGambaSeshDetect);
|
||||||
await Helpers.SetValueAsBoolean(Keys.GambaSeshDetectEnabled, oldConfig.EnableGambaSeshDetect);
|
await SettingsProvider.SetValueAsync(Keys.GambaSeshUserId, oldConfig.GambaSeshUserId);
|
||||||
await Helpers.SetValue(Keys.GambaSeshUserId, oldConfig.GambaSeshUserId);
|
await SettingsProvider.SetValueAsync(Keys.KickIcon, oldConfig.KickIcon);
|
||||||
await Helpers.SetValue(Keys.KickIcon, oldConfig.KickIcon);
|
await SettingsProvider.SetValueAsync(Keys.KiwiFarmsDomain, oldConfig.KfDomain);
|
||||||
await Helpers.SetValue(Keys.KiwiFarmsDomain, oldConfig.KfDomain);
|
await SettingsProvider.SetValueAsync(Keys.KiwiFarmsUsername, oldConfig.KfUsername);
|
||||||
await Helpers.SetValue(Keys.KiwiFarmsUsername, oldConfig.KfUsername);
|
await SettingsProvider.SetValueAsync(Keys.KiwiFarmsPassword, oldConfig.KfPassword);
|
||||||
await Helpers.SetValue(Keys.KiwiFarmsPassword, oldConfig.KfPassword);
|
await SettingsProvider.SetValueAsync(Keys.TwitchBossmanJackId, oldConfig.BossmanJackTwitchId);
|
||||||
await Helpers.SetValue(Keys.TwitchBossmanJackId, oldConfig.BossmanJackTwitchId);
|
await SettingsProvider.SetValueAsync(Keys.TwitchBossmanJackUsername, oldConfig.BossmanJackTwitchUsername);
|
||||||
await Helpers.SetValue(Keys.TwitchBossmanJackUsername, oldConfig.BossmanJackTwitchUsername);
|
await SettingsProvider.SetValueAsBooleanAsync(Keys.KiwiFarmsSuppressChatMessages, oldConfig.SuppressChatMessages);
|
||||||
await Helpers.SetValueAsBoolean(Keys.KiwiFarmsSuppressChatMessages, oldConfig.SuppressChatMessages);
|
await SettingsProvider.SetValueAsync(Keys.DiscordToken, oldConfig.DiscordToken);
|
||||||
await Helpers.SetValue(Keys.DiscordToken, oldConfig.DiscordToken);
|
await SettingsProvider.SetValueAsync(Keys.DiscordBmjId, oldConfig.DiscordBmjId);
|
||||||
await Helpers.SetValue(Keys.DiscordBmjId, oldConfig.DiscordBmjId);
|
|
||||||
logger.Info($"{oldConfigPath} migration done.");
|
logger.Info($"{oldConfigPath} migration done.");
|
||||||
|
|
||||||
logger.Info("Renaming files no longer in use");
|
logger.Info("Renaming files no longer in use");
|
||||||
// Utils.SafelyRenameFile will attempt to rename and swallow any exception (with logging) if it fails
|
// Utils.SafelyRenameFile will attempt to rename and swallow any exception (with logging) if it fails
|
||||||
Utils.SafelyRenameFile(oldConfigPath, $"{oldConfigPath}.migrated");
|
SafelyRenameFile(oldConfigPath, $"{oldConfigPath}.migrated");
|
||||||
|
|
||||||
logger.Info("File renamed");
|
logger.Info("File renamed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void SafelyRenameFile(string oldName, string newName)
|
||||||
|
{
|
||||||
|
var logger = LogManager.GetCurrentClassLogger();
|
||||||
|
logger.Debug($"Renaming {oldName} to {newName}");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Move(oldName, newName);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
logger.Error($"Failed to rename {oldName} to {newName}");
|
||||||
|
logger.Error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static List<BuiltInSettingsModel> BuiltInSettings =
|
public static List<BuiltInSettingsModel> BuiltInSettings =
|
||||||
[
|
[
|
||||||
new BuiltInSettingsModel
|
new BuiltInSettingsModel
|
||||||
@@ -121,17 +135,6 @@ public static class BuiltIn
|
|||||||
ValueType = SettingValueType.Text
|
ValueType = SettingValueType.Text
|
||||||
},
|
},
|
||||||
new BuiltInSettingsModel
|
new BuiltInSettingsModel
|
||||||
{
|
|
||||||
Key = Keys.PusherChannels,
|
|
||||||
Regex = @".+",
|
|
||||||
Description =
|
|
||||||
"List of Pusher channels to subscribe to",
|
|
||||||
Default = null,
|
|
||||||
IsSecret = false,
|
|
||||||
CacheDuration = TimeSpan.FromHours(1),
|
|
||||||
ValueType = SettingValueType.Array
|
|
||||||
},
|
|
||||||
new BuiltInSettingsModel
|
|
||||||
{
|
{
|
||||||
Key = Keys.KiwiFarmsRoomId,
|
Key = Keys.KiwiFarmsRoomId,
|
||||||
Regex = @"\d+",
|
Regex = @"\d+",
|
||||||
@@ -861,7 +864,6 @@ public static class BuiltIn
|
|||||||
{
|
{
|
||||||
public static string PusherEndpoint = "Pusher.Endpoint";
|
public static string PusherEndpoint = "Pusher.Endpoint";
|
||||||
public static string KiwiFarmsWsEndpoint = "KiwiFarms.WsEndpoint";
|
public static string KiwiFarmsWsEndpoint = "KiwiFarms.WsEndpoint";
|
||||||
public static string PusherChannels = "Pusher.Channels";
|
|
||||||
public static string KiwiFarmsRoomId = "KiwiFarms.RoomId";
|
public static string KiwiFarmsRoomId = "KiwiFarms.RoomId";
|
||||||
public static string Proxy = "Proxy";
|
public static string Proxy = "Proxy";
|
||||||
public static string KiwiFarmsWsReconnectTimeout = "KiwiFarms.WsReconnectTimeout";
|
public static string KiwiFarmsWsReconnectTimeout = "KiwiFarms.WsReconnectTimeout";
|
||||||
|
|||||||
31
KfChatDotNetBot/Settings/Setting.cs
Normal file
31
KfChatDotNetBot/Settings/Setting.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using System.Text.Json;
|
||||||
|
using KfChatDotNetBot.Models.DbModels;
|
||||||
|
|
||||||
|
namespace KfChatDotNetBot.Settings;
|
||||||
|
|
||||||
|
public class Setting(string? value, SettingDbModel dbEntry, bool cached)
|
||||||
|
{
|
||||||
|
public string? Value { get; set; } = value;
|
||||||
|
public SettingDbModel DbEntry { get; set; } = dbEntry;
|
||||||
|
public bool Cached { get; set; } = cached;
|
||||||
|
|
||||||
|
public T? JsonDeserialize<T>()
|
||||||
|
{
|
||||||
|
if (Value == null)
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
return JsonSerializer.Deserialize<T>(Value) ?? default(T);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ToBoolean()
|
||||||
|
{
|
||||||
|
return Value is not (null or "null") && Value.Equals("true", StringComparison.CurrentCultureIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
|
public T ToType<T>()
|
||||||
|
{
|
||||||
|
return (T)Convert.ChangeType(Value, typeof(T))!;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
using KfChatDotNetBot.Models.DbModels;
|
|
||||||
|
|
||||||
namespace KfChatDotNetBot.Settings;
|
|
||||||
|
|
||||||
public class SettingValue(string? value, SettingDbModel dbEntry, bool cached)
|
|
||||||
{
|
|
||||||
public string? Value { get; set; } = value;
|
|
||||||
public SettingDbModel DbEntry { get; set; } = dbEntry;
|
|
||||||
public bool Cached { get; set; } = cached;
|
|
||||||
}
|
|
||||||
@@ -6,9 +6,9 @@ using NLog;
|
|||||||
|
|
||||||
namespace KfChatDotNetBot.Settings;
|
namespace KfChatDotNetBot.Settings;
|
||||||
|
|
||||||
public static class Helpers
|
public static class SettingsProvider
|
||||||
{
|
{
|
||||||
public static async Task<SettingValue> GetValue(string key, bool caseInsensitive = false, bool bypassCache = false)
|
public static async Task<Setting> GetValueAsync(string key, bool caseInsensitive = false, bool bypassCache = false)
|
||||||
{
|
{
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
var logger = LogManager.GetCurrentClassLogger();
|
||||||
var cache = MemoryCache.Default;
|
var cache = MemoryCache.Default;
|
||||||
@@ -17,7 +17,7 @@ public static class Helpers
|
|||||||
var cachedSetting = cache.Get(key) as SettingDbModel;
|
var cachedSetting = cache.Get(key) as SettingDbModel;
|
||||||
var value = cachedSetting.Value;
|
var value = cachedSetting.Value;
|
||||||
if (cachedSetting.Value == "null") value = null;
|
if (cachedSetting.Value == "null") value = null;
|
||||||
return new SettingValue(value, cachedSetting, true);
|
return new Setting(value, cachedSetting, true);
|
||||||
}
|
}
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
logger.Trace($"Retrieving value for {key}");
|
logger.Trace($"Retrieving value for {key}");
|
||||||
@@ -45,7 +45,7 @@ public static class Helpers
|
|||||||
if (setting.Value == "null")
|
if (setting.Value == "null")
|
||||||
{
|
{
|
||||||
logger.Debug($"{key}'s value is null so returning SettingValue(null)");
|
logger.Debug($"{key}'s value is null so returning SettingValue(null)");
|
||||||
return new SettingValue(null, setting, false);
|
return new Setting(null, setting, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setting.IsSecret)
|
if (setting.IsSecret)
|
||||||
@@ -58,24 +58,24 @@ public static class Helpers
|
|||||||
logger.Info($"Cache Miss! Returning '{setting.Value}' for {key}");
|
logger.Info($"Cache Miss! Returning '{setting.Value}' for {key}");
|
||||||
|
|
||||||
}
|
}
|
||||||
return new SettingValue(setting.Value, setting, false);
|
return new Setting(setting.Value, setting, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<Dictionary<string, SettingValue>> GetMultipleValues(string[] keys, bool caseInsensitive = false, bool bypassCache = false)
|
public static async Task<Dictionary<string, Setting>> GetMultipleValuesAsync(string[] keys, bool caseInsensitive = false, bool bypassCache = false)
|
||||||
{
|
{
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
var logger = LogManager.GetCurrentClassLogger();
|
||||||
logger.Trace($"Getting values for keys {string.Join(", ", keys)}");
|
logger.Trace($"Getting values for keys {string.Join(", ", keys)}");
|
||||||
|
|
||||||
Dictionary<string, SettingValue> values = new Dictionary<string, SettingValue>();
|
var values = new Dictionary<string, Setting>();
|
||||||
foreach (var key in keys)
|
foreach (var key in keys)
|
||||||
{
|
{
|
||||||
values.Add(key, await GetValue(key, caseInsensitive, bypassCache));
|
values.Add(key, await GetValueAsync(key, caseInsensitive, bypassCache));
|
||||||
}
|
}
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task SetValue(string key, object? value)
|
public static async Task SetValueAsync(string key, object? value)
|
||||||
{
|
{
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
var logger = LogManager.GetCurrentClassLogger();
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
@@ -107,28 +107,7 @@ public static class Helpers
|
|||||||
if (cache.Contains(key)) cache.Remove(key);
|
if (cache.Contains(key)) cache.Remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task SetValueAsList<T>(string key, List<T> values, char separator = ',')
|
public static async Task SetValueAsJsonObjectAsync<T>(string key, T data)
|
||||||
{
|
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
|
||||||
await using var db = new ApplicationDbContext();
|
|
||||||
List<string> stringValues = values.Select(val => (string)Convert.ChangeType(val, TypeCode.String)).ToList();
|
|
||||||
string joinedValue = string.Join(separator, stringValues);
|
|
||||||
logger.Debug($"Setting {key} to {joinedValue}");
|
|
||||||
|
|
||||||
var setting = await db.Settings.FirstOrDefaultAsync(s => s.Key == key);
|
|
||||||
if (setting == null)
|
|
||||||
{
|
|
||||||
logger.Debug($"{key} does not exist, throwing KeyNotFoundException()");
|
|
||||||
throw new KeyNotFoundException();
|
|
||||||
}
|
|
||||||
|
|
||||||
setting.Value = joinedValue;
|
|
||||||
await db.SaveChangesAsync();
|
|
||||||
var cache = MemoryCache.Default;
|
|
||||||
if (cache.Contains(key)) cache.Remove(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async Task SetValueAsJsonObject<T>(string key, T data)
|
|
||||||
{
|
{
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
var logger = LogManager.GetCurrentClassLogger();
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
@@ -150,7 +129,7 @@ public static class Helpers
|
|||||||
if (cache.Contains(key)) cache.Remove(key);
|
if (cache.Contains(key)) cache.Remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task SetValueAsBoolean(string key, bool value)
|
public static async Task SetValueAsBooleanAsync(string key, bool value)
|
||||||
{
|
{
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
var logger = LogManager.GetCurrentClassLogger();
|
||||||
await using var db = new ApplicationDbContext();
|
await using var db = new ApplicationDbContext();
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
using System.Text.Json;
|
|
||||||
using NLog;
|
|
||||||
|
|
||||||
namespace KfChatDotNetBot.Settings;
|
|
||||||
|
|
||||||
public static class Utils
|
|
||||||
{
|
|
||||||
public static List<string> ToList(this SettingValue settingValue, char separator = ',')
|
|
||||||
{
|
|
||||||
if (settingValue.Value == null) return new List<string>();
|
|
||||||
return settingValue.Value.Split(separator).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static T? JsonDeserialize<T>(this SettingValue settingValue)
|
|
||||||
{
|
|
||||||
if (settingValue.Value == null)
|
|
||||||
{
|
|
||||||
return default;
|
|
||||||
}
|
|
||||||
|
|
||||||
return JsonSerializer.Deserialize<T>(settingValue.Value) ?? default(T);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool ToBoolean(this SettingValue settingValue)
|
|
||||||
{
|
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
|
||||||
if (settingValue.Value is null or "null")
|
|
||||||
{
|
|
||||||
return default;
|
|
||||||
}
|
|
||||||
|
|
||||||
return settingValue.Value.Equals("true", StringComparison.CurrentCultureIgnoreCase);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static T ValueToType<T>(string value)
|
|
||||||
{
|
|
||||||
return (T)Convert.ChangeType(value, typeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static T ToType<T>(this SettingValue settingValue)
|
|
||||||
{
|
|
||||||
return (T)Convert.ChangeType(settingValue.Value, typeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void SafelyRenameFile(string oldName, string newName)
|
|
||||||
{
|
|
||||||
var logger = LogManager.GetCurrentClassLogger();
|
|
||||||
logger.Debug($"Renaming {oldName} to {newName}");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.Move(oldName, newName);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
logger.Error($"Failed to rename {oldName} to {newName}");
|
|
||||||
logger.Error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user