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 @@
-
-
+