From 9525394a6e6afd5447fa0246b70e7c6f54d7772c Mon Sep 17 00:00:00 2001 From: Andrei Tudor Date: Wed, 8 May 2024 14:58:15 +0300 Subject: [PATCH] Updated discord.net library to version 3.14.1. Added method in SettingsDictionary to bulk check if keys are in dictionary. --- DiscordBot/DiscordBot.csproj | 4 +- .../DiscordBotUI/Views/HomePage.axaml.cs | 2 +- PluginManager/Others/OneOf.cs | 132 ++++++++++++++++++ PluginManager/Others/SettingsDictionary.cs | 5 + PluginManager/PluginManager.csproj | 3 +- 5 files changed, 140 insertions(+), 6 deletions(-) create mode 100644 PluginManager/Others/OneOf.cs diff --git a/DiscordBot/DiscordBot.csproj b/DiscordBot/DiscordBot.csproj index e730229..633e99b 100644 --- a/DiscordBot/DiscordBot.csproj +++ b/DiscordBot/DiscordBot.csproj @@ -33,9 +33,7 @@ - - - + diff --git a/DiscordBotUI/DiscordBotUI/Views/HomePage.axaml.cs b/DiscordBotUI/DiscordBotUI/Views/HomePage.axaml.cs index 83a4a47..c9e220c 100644 --- a/DiscordBotUI/DiscordBotUI/Views/HomePage.axaml.cs +++ b/DiscordBotUI/DiscordBotUI/Views/HomePage.axaml.cs @@ -28,7 +28,7 @@ public partial class HomePage : Window { await Config.Initialize(); - if(string.IsNullOrWhiteSpace(Config.AppSettings["token"]) || string.IsNullOrWhiteSpace(Config.AppSettings["prefix"])) + if(!Config.AppSettings.ContainsAllKeys("token", "prefix")) { await new SettingsPage().ShowDialog(this); diff --git a/PluginManager/Others/OneOf.cs b/PluginManager/Others/OneOf.cs new file mode 100644 index 0000000..4c578f1 --- /dev/null +++ b/PluginManager/Others/OneOf.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PluginManager.Others +{ + public class OneOf + { + public T0 Item0 { get; } + public T1 Item1 { get; } + + public OneOf(T0 item0) + { + Item0 = item0; + } + + public OneOf(T1 item1) + { + Item1 = item1; + } + + public static implicit operator OneOf(T0 item0) => new OneOf(item0); + public static implicit operator OneOf(T1 item1) => new OneOf(item1); + + public void Match(Action item0, Action item1) + { + if (Item0 != null) + item0(Item0); + else + item1(Item1); + } + + public TResult Match(Func item0, Func item1) + { + return Item0 != null ? item0(Item0) : item1(Item1); + } + } + + public class OneOf + { + public T0 Item0 { get; } + public T1 Item1 { get; } + public T2 Item2 { get; } + + public OneOf(T0 item0) + { + Item0 = item0; + } + + public OneOf(T1 item1) + { + Item1 = item1; + } + + public OneOf(T2 item2) + { + Item2 = item2; + } + + public static implicit operator OneOf(T0 item0) => new OneOf(item0); + public static implicit operator OneOf(T1 item1) => new OneOf(item1); + public static implicit operator OneOf(T2 item2) => new OneOf(item2); + + public void Match(Action item0, Action item1, Action item2) + { + if (Item0 != null) + item0(Item0); + else if (Item1 != null) + item1(Item1); + else + item2(Item2); + } + + public TResult Match(Func item0, Func item1, Func item2) + { + return Item0 != null ? item0(Item0) : Item1 != null ? item1(Item1) : item2(Item2); + } + } + + public class OneOf + { + public T0 Item0 { get; } + public T1 Item1 { get; } + public T2 Item2 { get; } + public T3 Item3 { get; } + + public OneOf(T0 item0) + { + Item0 = item0; + } + + public OneOf(T1 item1) + { + Item1 = item1; + } + + public OneOf(T2 item2) + { + Item2 = item2; + } + + public OneOf(T3 item3) + { + Item3 = item3; + } + + public static implicit operator OneOf(T0 item0) => new OneOf(item0); + public static implicit operator OneOf(T1 item1) => new OneOf(item1); + public static implicit operator OneOf(T2 item2) => new OneOf(item2); + public static implicit operator OneOf(T3 item3) => new OneOf(item3); + + public void Match(Action item0, Action item1, Action item2, Action item3) + { + if (Item0 != null) + item0(Item0); + else if (Item1 != null) + item1(Item1); + else if (Item2 != null) + item2(Item2); + else + item3(Item3); + } + + public TResult Match(Func item0, Func item1, Func item2, Func item3) + { + return Item0 != null ? item0(Item0) : Item1 != null ? item1(Item1) : Item2 != null ? item2(Item2) : item3(Item3); + } + + } +} diff --git a/PluginManager/Others/SettingsDictionary.cs b/PluginManager/Others/SettingsDictionary.cs index 3b505ae..f0ae113 100644 --- a/PluginManager/Others/SettingsDictionary.cs +++ b/PluginManager/Others/SettingsDictionary.cs @@ -56,6 +56,11 @@ public class SettingsDictionary _Dictionary.Add(key, value); } + public bool ContainsAllKeys(params TKey[] keys) + { + return keys.All(key => _Dictionary.ContainsKey(key)); + } + public bool ContainsKey(TKey key) { return _Dictionary.ContainsKey(key); diff --git a/PluginManager/PluginManager.csproj b/PluginManager/PluginManager.csproj index 6acb4eb..1853b0a 100644 --- a/PluginManager/PluginManager.csproj +++ b/PluginManager/PluginManager.csproj @@ -12,8 +12,7 @@ - - +