From 861b83cda27e54ebd1e8bc316b05a5c4497d51e7 Mon Sep 17 00:00:00 2001 From: Wizzy69 Date: Sun, 12 Jun 2022 10:22:43 +0300 Subject: [PATCH 1/9] Cleaned up code --- PluginManager/Config.cs | 31 +++---- PluginManager/Items/Command.cs | 5 +- PluginManager/Items/ConsoleCommandsHandler.cs | 6 +- PluginManager/Items/Spinner.cs | 62 ------------- PluginManager/Loaders/Loader.cs | 9 +- PluginManager/Loaders/PluginLoader.cs | 4 +- .../Others/Exceptions/APIException.cs | 91 ------------------- PluginManager/Others/Functions.cs | 20 ++-- 8 files changed, 37 insertions(+), 191 deletions(-) delete mode 100644 PluginManager/Items/Spinner.cs delete mode 100644 PluginManager/Others/Exceptions/APIException.cs diff --git a/PluginManager/Config.cs b/PluginManager/Config.cs index 686fee4..48a4a1f 100644 --- a/PluginManager/Config.cs +++ b/PluginManager/Config.cs @@ -1,6 +1,5 @@ using PluginManager.Others; using System.IO; -using System.Linq; using System.Text.Json; using System.Threading.Tasks; using System.Collections.Generic; @@ -9,27 +8,27 @@ namespace PluginManager { internal class AppConfig { - public Dictionary ApplicationVariables { get; set; } - public List ProtectedKeyWords { get; set; } + public Dictionary? ApplicationVariables { get; set; } + public List? ProtectedKeyWords { get; set; } } public static class Config { - private static AppConfig appConfig; + private static AppConfig? appConfig { get; set; } public static bool AddValueToVariables(string key, T value, bool isProtected) { - if (appConfig.ApplicationVariables.ContainsKey(key)) return false; + if (appConfig!.ApplicationVariables!.ContainsKey(key)) return false; if (value == null) return false; appConfig.ApplicationVariables.Add(key, value); - if (isProtected) appConfig.ProtectedKeyWords.Add(key); + if (isProtected) appConfig.ProtectedKeyWords!.Add(key); SaveConfig(); return true; } public static T? GetValue(string key) { - if (!appConfig.ApplicationVariables.ContainsKey(key)) return default; + if (!appConfig!.ApplicationVariables!.ContainsKey(key)) return default; try { JsonElement element = (JsonElement)appConfig.ApplicationVariables[key]; @@ -43,8 +42,8 @@ namespace PluginManager public static bool SetValue(string key, T value) { - if (!appConfig.ApplicationVariables.ContainsKey(key)) return false; - if (appConfig.ProtectedKeyWords.Contains(key)) return false; + if (!appConfig!.ApplicationVariables!.ContainsKey(key)) return false; + if (appConfig.ProtectedKeyWords!.Contains(key)) return false; if (value == null) return false; appConfig.ApplicationVariables[key] = JsonSerializer.SerializeToElement(value); @@ -54,8 +53,8 @@ namespace PluginManager public static bool RemoveKey(string key) { - appConfig.ApplicationVariables.Remove(key); - appConfig.ProtectedKeyWords.Remove(key); + appConfig!.ApplicationVariables!.Remove(key); + appConfig.ProtectedKeyWords!.Remove(key); SaveConfig(); return true; } @@ -63,7 +62,7 @@ namespace PluginManager public static async void SaveConfig() { string path = Functions.dataFolder + "config.json"; - await Functions.SaveToJsonFile(path, appConfig); + await Functions.SaveToJsonFile(path, appConfig!); } public static async Task LoadConfig() @@ -72,15 +71,15 @@ namespace PluginManager if (File.Exists(path)) { appConfig = await Functions.ConvertFromJson(path); - Functions.WriteLogFile($"Loaded {appConfig.ApplicationVariables.Keys.Count} application variables.\nLoaded {appConfig.ProtectedKeyWords.Count} readonly variables."); + Functions.WriteLogFile($"Loaded {appConfig.ApplicationVariables!.Keys.Count} application variables.\nLoaded {appConfig.ProtectedKeyWords!.Count} readonly variables."); } else appConfig = new() { ApplicationVariables = new Dictionary(), ProtectedKeyWords = new List() }; } - public static bool ContainsValue(T value) => appConfig.ApplicationVariables.ContainsValue(value!); - public static bool ContainsKey(string key) => appConfig.ApplicationVariables.ContainsKey(key); + public static bool ContainsValue(T value) => appConfig!.ApplicationVariables!.ContainsValue(value!); + public static bool ContainsKey(string key) => appConfig!.ApplicationVariables!.ContainsKey(key); - public static Dictionary GetAllVariables() => new(appConfig.ApplicationVariables); + public static Dictionary GetAllVariables() => new(appConfig!.ApplicationVariables!); } } diff --git a/PluginManager/Items/Command.cs b/PluginManager/Items/Command.cs index 6850ece..12c67c3 100644 --- a/PluginManager/Items/Command.cs +++ b/PluginManager/Items/Command.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Discord.WebSocket; using PluginManager.Others; @@ -41,4 +42,4 @@ internal class Command /// The prefix that is used for the command /// public char PrefixUsed { get; } -} +} \ No newline at end of file diff --git a/PluginManager/Items/ConsoleCommandsHandler.cs b/PluginManager/Items/ConsoleCommandsHandler.cs index 5ac5947..0636030 100644 --- a/PluginManager/Items/ConsoleCommandsHandler.cs +++ b/PluginManager/Items/ConsoleCommandsHandler.cs @@ -23,7 +23,7 @@ public class ConsoleCommandsHandler { this.client = client; InitializeBasicCommands(); - Console.WriteLine("Initalized console command handeler !"); + Console.WriteLine("Initialized console command handler !"); } private void InitializeBasicCommands() @@ -55,7 +55,7 @@ public class ConsoleCommandsHandler AddCommand("lp", "Load plugins", () => { if (pluginsLoaded) return; - var loader = new PluginLoader(client); + var loader = new PluginLoader(client!); loader.onCMDLoad += (name, typeName, success, exception) => { Console.ForegroundColor = ConsoleColor.Green; @@ -237,7 +237,7 @@ public class ConsoleCommandsHandler data.Add(new[] { "-", "-" }); data.Add(new[] { "Key", "Value" }); data.Add(new[] { "-", "-" }); - foreach (var kvp in d) data.Add(new[] { kvp.Key, kvp.Value.ToString() }); + foreach (var kvp in d) data.Add(new string[] { kvp.Key, kvp.Value.ToString()! }); data.Add(new[] { "-", "-" }); Console_Utilities.FormatAndAlignTable(data); } diff --git a/PluginManager/Items/Spinner.cs b/PluginManager/Items/Spinner.cs deleted file mode 100644 index 910df5b..0000000 --- a/PluginManager/Items/Spinner.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.Threading.Tasks; -using PluginManager.Others.Exceptions; - -namespace PluginManager.Items; - -public class Spinner -{ - /// - /// True if active, false otherwise - /// - public bool isSpinning; - - /// - /// The Spinner constructor - /// - public Spinner() - { - isSpinning = false; - } - - /// - /// The method that is called to start spinning the spinner - /// - public async void Start() - { - isSpinning = true; - var cnt = 0; - - while (isSpinning) - { - cnt++; - switch (cnt % 4) - { - case 0: - Console.Write("/"); - break; - case 1: - Console.Write("-"); - break; - case 2: - Console.Write("\\"); - break; - case 3: - Console.Write("|"); - break; - } - - Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); - await Task.Delay(250); - } - } - - /// - /// The method that is called to stop the spinner from spinning - /// - public void Stop() - { - if (!isSpinning) throw new APIException("Spinner was not spinning", GetType()); - isSpinning = false; - } -} diff --git a/PluginManager/Loaders/Loader.cs b/PluginManager/Loaders/Loader.cs index 1198eda..82aac6f 100644 --- a/PluginManager/Loaders/Loader.cs +++ b/PluginManager/Loaders/Loader.cs @@ -28,6 +28,11 @@ internal class Loader private string path { get; } private string extension { get; } + + internal delegate void FileLoadedEventHandler(LoaderArgs args); + + internal delegate void PluginLoadedEventHandler(LoaderArgs args); + internal event FileLoadedEventHandler? FileLoaded; internal event PluginLoadedEventHandler? PluginLoaded; @@ -100,8 +105,4 @@ internal class Loader return list; } - - internal delegate void FileLoadedEventHandler(LoaderArgs args); - - internal delegate void PluginLoadedEventHandler(LoaderArgs args); } diff --git a/PluginManager/Loaders/PluginLoader.cs b/PluginManager/Loaders/PluginLoader.cs index c848f7f..a4568d2 100644 --- a/PluginManager/Loaders/PluginLoader.cs +++ b/PluginManager/Loaders/PluginLoader.cs @@ -87,11 +87,11 @@ public class PluginLoader { if (e.IsLoaded) ((DBEvent)e.Plugin!).Start(_client); - if (onEVELoad != null) onEVELoad.Invoke(((DBEvent)e.Plugin!).name, e.TypeName!, e.IsLoaded, e.Exception); + onEVELoad?.Invoke(((DBEvent)e.Plugin!).name, e.TypeName!, e.IsLoaded, e.Exception); } private void OnCommandLoaded(LoaderArgs e) { - if (onCMDLoad != null) onCMDLoad.Invoke(((DBCommand)e.Plugin!).Command, e.TypeName!, e.IsLoaded, e.Exception); + onCMDLoad?.Invoke(((DBCommand)e.Plugin!).Command, e.TypeName!, e.IsLoaded, e.Exception); } } diff --git a/PluginManager/Others/Exceptions/APIException.cs b/PluginManager/Others/Exceptions/APIException.cs deleted file mode 100644 index 37264c1..0000000 --- a/PluginManager/Others/Exceptions/APIException.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System; - -namespace PluginManager.Others.Exceptions; - -/// -/// Custom Exception for PluginManager -/// -[Serializable] -public class APIException : Exception -{ - /// - /// The APIException contructor - /// - /// The error message - /// The function where the message was triggered - /// The possible cause of the error - /// The error code - public APIException(string message, string? function, string possible_cause, Error error) : base(message) - { - ErrorCode = error; - Function = function; - PossibleCause = possible_cause; - } - - /// - /// The APIException contructor - /// - /// The error message - /// The function where the message was triggered - /// The error code - public APIException(string message, string? function, Error? errorCode) : base(message) - { - ErrorCode = errorCode; - Function = function; - } - - /// - /// The APIException contructor - /// - /// The error message - /// The function where the message was triggered - public APIException(string message, string? function) : base(message) - { - Function = function; - } - - /// - /// The APIException contructor - /// - /// The error message - public APIException(string message) : base(message) - { - } - - /// - /// The APIException constructor - /// - /// The error message - /// The class where the error was thrown - public APIException(string message, Type errorLocation) : base(message) - { - Function = errorLocation.FullName; - } - - /// - /// The function where the error occurred - /// - public string? Function { get; } = "not specified"; - - /// - /// The error code - /// - public Error? ErrorCode { get; } = Error.UNKNOWN_ERROR; - - /// - /// The possible cause that determined the error - /// - public string? PossibleCause { get; } = "not specified"; - - /// - /// Method to print the error to - /// - public void Print() - { - Console.WriteLine("Message Content: " + Message); - Console.WriteLine("Function: " + Function); - Console.WriteLine("Error Code: " + ErrorCode); - Console.WriteLine("Possible cause: " + PossibleCause); - if (StackTrace != null) Functions.WriteErrFile(StackTrace); - } -} diff --git a/PluginManager/Others/Functions.cs b/PluginManager/Others/Functions.cs index 0857eb1..0f3c5fc 100644 --- a/PluginManager/Others/Functions.cs +++ b/PluginManager/Others/Functions.cs @@ -32,15 +32,10 @@ namespace PluginManager.Others /// public static readonly string errFolder = @"./Output/Errors/"; - /// - /// The location for all languages - /// - public static readonly string langFolder = @"./Data/Languages/"; - /// /// Archives folder /// - public static readonly string pakFolder = @"./Data/Resources/PAKS/"; + public static readonly string pakFolder = @"./Data/Resources/PAK/"; /// @@ -49,13 +44,13 @@ namespace PluginManager.Others /// The file name that is inside the archive or its full path /// The archive location from the PAKs folder /// A string that represents the content of the file or null if the file does not exists or it has no content - public static async Task ReadFromPakAsync(string FileName, string archFile) + public static async Task ReadFromPakAsync(string FileName, string archFile) { archFile = pakFolder + archFile; Directory.CreateDirectory(pakFolder); if (!File.Exists(archFile)) throw new FileNotFoundException("Failed to load file !"); - string? textValue = null; + Stream? textValue = null; var fs = new FileStream(archFile, FileMode.Open); var zip = new ZipArchive(fs, ZipArchiveMode.Read); foreach (var entry in zip.Entries) @@ -64,7 +59,8 @@ namespace PluginManager.Others { Stream s = entry.Open(); StreamReader reader = new StreamReader(s); - textValue = await reader.ReadToEndAsync(); + textValue = reader.BaseStream; + textValue.Position = 0; reader.Close(); s.Close(); fs.Close(); @@ -239,7 +235,9 @@ namespace PluginManager.Others /// public static async Task SaveToJsonFile(string file, T Data) { - using (var s = File.OpenWrite(file)) await JsonSerializer.SerializeAsync(s, Data, typeof(T), new JsonSerializerOptions { WriteIndented = true }); + var s = File.OpenWrite(file); + await JsonSerializer.SerializeAsync(s, Data, typeof(T), new JsonSerializerOptions { WriteIndented = true }); + s.Close(); } /// @@ -259,7 +257,7 @@ namespace PluginManager.Others text.Position = 0; var obj = await JsonSerializer.DeserializeAsync(text); text.Close(); - return obj; + return (obj ?? default)!; } public static bool TryReadValueFromJson(string input, string codeName, out JsonElement element) From 059228ca52fd1dea111d024fabc65686f5e9602a Mon Sep 17 00:00:00 2001 From: Wizzy69 Date: Tue, 28 Jun 2022 10:45:40 +0300 Subject: [PATCH 2/9] --- BUILDS/net6.0/MusicCommands.dll | Bin 17920 -> 17920 bytes BUILDS/net6.0/PluginManager.dll | Bin 65024 -> 61440 bytes DiscordBot/Discord/Core/CommandHandler.cs | 1 - DiscordBot/Program.cs | 453 ++++++++++------------ MusicCommands/Data.cs | 3 +- MusicCommands/Leave.cs | 2 +- MusicCommands/MusicCommands.csproj | 1 + MusicCommands/MusicPlayer.cs | 1 - MusicCommands/Pause.cs | 2 +- MusicCommands/Play.cs | 5 +- MusicCommands/Unpause.cs | 3 +- MusicCommands/lplay.cs | 3 +- 12 files changed, 218 insertions(+), 256 deletions(-) diff --git a/BUILDS/net6.0/MusicCommands.dll b/BUILDS/net6.0/MusicCommands.dll index dac55ebd46e8cbd30c19db1342debe3c2522b214..086a3043f22909479fbc9dbcc8c3397e2bfe5834 100644 GIT binary patch literal 17920 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 Y-@&y?n?9$xZ~4za%*%fygcC$!@#V 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�g*i+V9>07O5^0yrAB($<^w7AlfN1KJ7DbO+A1(Wd56y)NBN7TC>)}?6z z*eH#a?aaaM^^oL%hvo4|GoZ2USs59(r$JdsM(;}DPKoz#l=>uKo;qoh^k&`^{2j-4 zY+bmk^FNlA7Av-Z&j=;OCj9UOwfn(+6rM`LQl9H^p|UNoxVaw|90iqUb^>xn@J;pr z(d<(rGJ&i{yRd-T7z~etF$>7yaP^64N2?=7UYqZ7>Fkue=w@@c&QNPaK1X1&>$3tXPXX!!vAR5K5$g1akQtvpTd`zt=GE^E{K4QO%O8B@f4;Fl zPiEXOg1$HzepI4SMr*km+bnQI$R#si#9HxkB6?q-!!V46%kdQ`Q$WTKk10C)DB~Ue zIK^h)%hYzp+qt%pYa6-N#kDR!YO^1)$XAOGtHU>JOo`2YG!cjdRb%unBlfOXt6LE? z)flynpl*q#V^grVHW*jSYJJh!ryxVYWN3bRbv)b{oBc27U#nuX&%|aw7n}X_*zA{L zv(GP!&Ay1|ndt0a2V97rSfYW^5)p`>G(pAcRHJR#;&mt>WV;c1|}tr@P7XKrq(M3{$~q zTE(V3b-`u+V9*lHLCC(#2!^zgU=PK8@VzjI>~@ndl}&*fh=_HBgGxpdgj5Lh$CYv2 zB8%sF_AR`rLeHQ!sRLdJaHqc+wLv$+EQErZ8N)h??I!bD6R>b13=*C52JrVuQc)>8|_=cl#8uI4~MN5brx zShwh#J*|SVsYo2Ec_JjTTCkk#g_6}u@u)ogi4LFf<7yHAF4a>^y3-C6I50$ikW~LXl|JT zYudE1czo6}zp}0a&y*!RkP=JaS%fFf(m%rBjIzR*eqJE6XS~YkaNIOvJ7WE@K^4NZ z!YcgNQ_BUWwpNOd$aG%kOHeHyBpbt{F{+s)pTbrHNDHpmJi!}!@NIl zfKUGh2!EikD7kCLFyE_jm~VG)M7JK@lmZJ_gYE0U0!Bj!k|@`a`NHlGR9$pc3;DeE4@c;`#-(cBFxku%8;ZY@-cLg~1?|VT2>Vd$$6wm-0^Sd}Q~%XH zeaU=tPQTgroTp3tAXz>pV3k;*^#K}?$|s!lO@D3^(G?03T2{-ryVfeuU4&`uuhrBhu$VmR~t2 zXr3vt1FtgC)+c>EU43!@85bL-VN1ovYsu(9Dly6<-wzo%$gcG5!~v+I{IJd#_}N2z z;K`xnvtGsGtLsYQ*p$IP{v9xXzr`o>gVLKvHjN_`d+#6)Jq7T@@eGKr-7cLy%euVr zGR8-@Yx$_6Q~P-jWI3>72B+3SmDSgh!N0rY?}g^~z0^|`KjF_5#HT&*Bi~u3Fw+@~ iE{-Uh@7+ot_VK@i&mR3-)UV$9?_ezde+a*|2mUvcu^OfT diff --git a/BUILDS/net6.0/PluginManager.dll b/BUILDS/net6.0/PluginManager.dll index 6be9c729bc3d518f26449ae0a210b19c72c1c3f9..7680527a240bff24b1aabb289f55256048633298 100644 GIT binary patch literal 61440 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 literal 65024 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�e(;0iGYzC!8ZEx*P&H=fXBl&YE)=bfV7& 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�)>mo-H>~u3oY%ew(L9DbR$@BHFu%5)4Jg< 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 G!2bp{+i7J0 diff --git a/DiscordBot/Discord/Core/CommandHandler.cs b/DiscordBot/Discord/Core/CommandHandler.cs index b876858..3a87dbc 100644 --- a/DiscordBot/Discord/Core/CommandHandler.cs +++ b/DiscordBot/Discord/Core/CommandHandler.cs @@ -121,7 +121,6 @@ internal class CommandHandler plugin.Execute(context, message, client, false); Functions.WriteLogFile($"[{message.Author.Id}] Executed command : " + plugin.Command); - return; } } } diff --git a/DiscordBot/Program.cs b/DiscordBot/Program.cs index 7a9f374..a2907b4 100644 --- a/DiscordBot/Program.cs +++ b/DiscordBot/Program.cs @@ -1,264 +1,231 @@ -using DiscordBot.Discord.Core; -using PluginManager; -using PluginManager.Items; -using PluginManager.Others; -using System; +using System; using System.IO; using System.Linq; using System.Threading.Tasks; +using DiscordBot.Discord.Core; +using PluginManager; +using PluginManager.Items; using PluginManager.Online; +using PluginManager.Others; -namespace DiscordBot +namespace DiscordBot; + +public class Program { - public class Program + private static bool loadPluginsOnStartup; + private static bool listPluginsAtStartup; + + /// + /// The main entry point for the application. + /// + [STAThread] + [Obsolete] + public static void Main(string[] args) { - private static bool loadPluginsOnStartup = false; - private static bool listPluginsAtStartup = false; + Directory.CreateDirectory("./Data/Resources"); + Directory.CreateDirectory("./Data/Plugins/Commands"); + Directory.CreateDirectory("./Data/Plugins/Events"); + PreLoadComponents().Wait(); - /// - /// The main entry point for the application. - /// - [STAThread] - [Obsolete] - public static void Main(string[] args) + if (!Config.ContainsKey("token") || Config.GetValue("token") == null || Config.GetValue("token")?.Length != 70) { - Directory.CreateDirectory("./Data/Resources"); - Directory.CreateDirectory("./Data/Plugins/Commands"); - Directory.CreateDirectory("./Data/Plugins/Events"); - PreLoadComponents().Wait(); + Console.WriteLine("Please insert your token"); + Console.Write("Token = "); + var token = Console.ReadLine(); + if (token?.Length == 59 || token?.Length == 70) + Config.AddValueToVariables("token", token, true); + else + Console.WriteLine("Invalid token"); - if (!Config.ContainsKey("token") || Config.GetValue("token") == null || Config.GetValue("token")?.Length != 70) - { - while (true) - { - Console.WriteLine("Please insert your token"); - Console.Write("Token = "); - string token = Console.ReadLine(); - if (token?.Length == 59 || token?.Length == 70) - Config.AddValueToVariables("token", token, true); - else - { - Console.WriteLine("Invalid token"); - continue; - } + Console.WriteLine("Please insert your prefix (max. 1 character long):"); + Console.WriteLine("For a prefix longer then one character, the first character will be saved and the others will be ignored.\n No spaces or numbers allowed"); + Console.Write("Prefix = "); + var prefix = Console.ReadLine()![0]; - Console.WriteLine("Please insert your prefix (max. 1 character long):"); - Console.WriteLine("For a prefix longer then one character, the first character will be saved and the others will be ignored.\n No spaces or numbers allowed"); - Console.Write("Prefix = "); - char prefix = Console.ReadLine()![0]; - - if (prefix == ' ' || char.IsDigit(prefix)) continue; - Config.AddValueToVariables("prefix", prefix.ToString(), false); - break; - } - } - - if (!Config.ContainsKey("prefix")) - { - Console.WriteLine("Please insert your prefix (max. 1 character long):"); - Console.WriteLine("For a prefix longer then one character, the first character will be saved and the others will be ignored.\n No spaces or numbers allowed"); - Console.Write("Prefix = "); - char prefix = Console.ReadLine()![0]; - - if (prefix == ' ' || char.IsDigit(prefix)) return; - Config.AddValueToVariables("prefix", prefix.ToString(), false); - } - - HandleInput(args).Wait(); + if (prefix == ' ' || char.IsDigit(prefix)) return; + Config.AddValueToVariables("prefix", prefix.ToString(), false); } - /// - /// The main loop for the discord bot - /// - /// The discord booter used to start the application - private static Task NoGUI(Boot discordbooter) + if (!Config.ContainsKey("prefix") || Config.GetValue("prefix") == default) { - ConsoleCommandsHandler consoleCommandsHandler = new ConsoleCommandsHandler(discordbooter.client); - if (loadPluginsOnStartup) consoleCommandsHandler.HandleCommand("lp"); - if (listPluginsAtStartup) consoleCommandsHandler.HandleCommand("listplugs"); - Config.SaveConfig(); - while (true) - { - Console.ForegroundColor = ConsoleColor.White; - string cmd = Console.ReadLine(); - consoleCommandsHandler.HandleCommand(cmd); - } + Console.WriteLine("Please insert your prefix (max. 1 character long):"); + Console.WriteLine("For a prefix longer then one character, the first character will be saved and the others will be ignored.\n No spaces or numbers allowed"); + Console.Write("Prefix = "); + var prefix = Console.ReadLine()![0]; + if (prefix == ' ') return; + Config.AddValueToVariables("prefix", prefix.ToString(), false); } - /// - /// Start the bot without user interface - /// - /// Returns the boot loader for the Discord Bot - private static async Task StartNoGUI() - { - Console.Clear(); - Console.ForegroundColor = ConsoleColor.DarkYellow; - Console.WriteLine("Discord BOT for Cross Platform"); - Console.WriteLine("Created by: Wizzy\nDiscord: Wizzy#9181"); + HandleInput(args).Wait(); + } + + /// + /// The main loop for the discord bot + /// + /// The discord booter used to start the application + private static Task NoGUI(Boot discordbooter) + { + var consoleCommandsHandler = new ConsoleCommandsHandler(discordbooter.client); + if (loadPluginsOnStartup) consoleCommandsHandler.HandleCommand("lp"); + if (listPluginsAtStartup) consoleCommandsHandler.HandleCommand("listplugs"); + Config.SaveConfig(); + while (true) + { Console.ForegroundColor = ConsoleColor.White; - Console.WriteLine("============================ Discord BOT - Cross Platform ============================"); - - try - { - string token = Config.GetValue("token"); - string prefix = Config.GetValue("prefix"); - - var discordbooter = new Boot(token, prefix); - await discordbooter.Awake(); - return discordbooter; - } - catch (Exception ex) - { - Console.WriteLine(ex); - return null; - } - } - - /// - /// Clear folder - /// - /// Directory path - private static Task ClearFolder(string d) - { - string[] files = Directory.GetFiles(d); - int fileNumb = files.Length; - for (var i = 0; i < fileNumb; i++) - { - File.Delete(files[i]); - Console.WriteLine("Deleting : " + files[i]); - } - - return Task.CompletedTask; - } - - /// - /// Handle user input arguments from the startup of the application - /// - /// The arguments - private static async Task HandleInput(string[] args) - { - int len = args.Length; - if (len == 1 && args[0] == "--help") - { - Console.WriteLine("Available commands:\n--exec -> start the bot with tools enabled"); - return; - } - - if (len == 1 && args[0] == "--logout") - { - File.Delete(Functions.dataFolder + "config.json"); - await Task.Run(async () => - { - await Task.Delay(1000); - Environment.Exit(0x08); - } - ); - return; - } - - if (len >= 2 && args[0] == "--encrypt") - { - string s2e = args.MergeStrings(1); - Console.WriteLine("MD5: " + await Cryptography.CreateMD5(s2e)); - Console.WriteLine("SHA356: " + await Cryptography.CreateSHA256(s2e)); - return; - } - - if (len == 3 && args[0] == "/download") - { - string url = args[1]; - string location = args[2]; - - await ServerCom.DownloadFileAsync(url, location); - - return; - } - - if (len > 0 && (args.Contains("--cmd") || args.Contains("--args") || args.Contains("--nomessage"))) - { - if (args.Contains("lp") || args.Contains("loadplugins")) loadPluginsOnStartup = true; - if (args.Contains("listplugs")) listPluginsAtStartup = true; - len = 0; - } - - - if (len == 0 || args[0] != "--exec" && args[0] != "--execute") - { - Boot b = await StartNoGUI(); - await NoGUI(b); - return; - } - - - Console.ForegroundColor = ConsoleColor.DarkYellow; - Console.WriteLine("Execute command interface noGUI\n\n"); - Console.WriteLine( - "\tCommand name\t\t\t\tDescription\n" + - "-- help | -help\t\t ------ \tDisplay the help message\n" + - "--reset-full\t\t ------ \tReset all files (clear files)\n" + - "--reset-logs\t\t ------ \tClear up the output folder\n" + - "--start\t\t ------ \tStart the bot\n" + - "exit\t\t\t ------ \tClose the application" - ); - while (true) - { - Console.ForegroundColor = ConsoleColor.White; - Console.Write("> "); - string[] message = Console.ReadLine().Split(' '); - - switch (message[0]) - { - case "--help": - case "-help": - Console.ForegroundColor = ConsoleColor.DarkYellow; - Console.WriteLine( - "\tCommand name\t\t\t\tDescription\n" + - "-- help | -help\t\t ------ \tDisplay the help message\n" + - "--reset-full\t\t ------ \tReset all files (clear files)\n" + - "--reset-settings\t ------ \tReset only bot settings\n" + - "--reset-logs\t\t ------ \tClear up the output folder\n" + - "--start\t\t ------ \tStart the bot\n" + - "exit\t\t\t ------ \tClose the application" - ); - break; - case "--reset-full": - await ClearFolder("./Data/Resources/"); - await ClearFolder("./Output/Logs/"); - await ClearFolder("./Output/Errors"); - await ClearFolder("./Data/Languages/"); - await ClearFolder("./Data/Plugins/Commands"); - await ClearFolder("./Data/Plugins/Events"); - Console.WriteLine("Successfully cleared all folders"); - break; - case "--reset-logs": - await ClearFolder("./Output/Logs"); - await ClearFolder("./Output/Errors"); - Console.WriteLine("Successfully cleard logs folder"); - break; - case "--exit": - case "exit": - Environment.Exit(0); - break; - case "--start": - Boot booter = await StartNoGUI(); - await NoGUI(booter); - return; - - default: - Console.WriteLine("Failed to execute command " + message[0]); - break; - } - } - } - - private static async Task PreLoadComponents() - { - await Config.LoadConfig(); - if (Config.ContainsKey("DeleteLogsAtStartup")) - if (Config.GetValue("DeleteLogsAtStartup")) - foreach (string file in Directory.GetFiles("./Output/Logs/")) - File.Delete(file); + var cmd = Console.ReadLine(); + consoleCommandsHandler.HandleCommand(cmd); } } + + /// + /// Start the bot without user interface + /// + /// Returns the boot loader for the Discord Bot + private static async Task StartNoGUI() + { + Console.Clear(); + Console.ForegroundColor = ConsoleColor.DarkYellow; + Console.WriteLine("Discord BOT for Cross Platform"); + Console.WriteLine("Created by: Wizzy\nDiscord: Wizzy#9181"); + + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine("============================ Discord BOT - Cross Platform ============================"); + + try + { + var token = Config.GetValue("token"); + var prefix = Config.GetValue("prefix"); + + var discordbooter = new Boot(token, prefix); + await discordbooter.Awake(); + return discordbooter; + } + catch (Exception ex) + { + Console.WriteLine(ex); + return null; + } + } + + /// + /// Clear folder + /// + /// Directory path + private static Task ClearFolder(string d) + { + var files = Directory.GetFiles(d); + var fileNumb = files.Length; + for (var i = 0; i < fileNumb; i++) + { + File.Delete(files[i]); + Console.WriteLine("Deleting : " + files[i]); + } + + return Task.CompletedTask; + } + + /// + /// Handle user input arguments from the startup of the application + /// + /// The arguments + private static async Task HandleInput(string[] args) + { + var len = args.Length; + + if (len == 3 && args[0] == "/download") + { + var url = args[1]; + var location = args[2]; + + await ServerCom.DownloadFileAsync(url, location); + + return; + } + + if (len > 0 && (args.Contains("--cmd") || args.Contains("--args") || args.Contains("--nomessage"))) + { + if (args.Contains("lp") || args.Contains("loadplugins")) loadPluginsOnStartup = true; + if (args.Contains("listplugs")) listPluginsAtStartup = true; + len = 0; + } + + + if (len == 0 || (args[0] != "--exec" && args[0] != "--execute")) + { + var b = await StartNoGUI(); + await NoGUI(b); + return; + } + + + Console.ForegroundColor = ConsoleColor.DarkYellow; + Console.WriteLine("Execute command interface noGUI\n\n"); + Console.WriteLine( + "\tCommand name\t\t\t\tDescription\n" + + "-- help | -help\t\t ------ \tDisplay the help message\n" + + "--reset-full\t\t ------ \tReset all files (clear files)\n" + + "--reset-logs\t\t ------ \tClear up the output folder\n" + + "--start\t\t ------ \tStart the bot\n" + + "exit\t\t\t ------ \tClose the application" + ); + while (true) + { + Console.ForegroundColor = ConsoleColor.White; + Console.Write("> "); + var message = Console.ReadLine().Split(' '); + + switch (message[0]) + { + case "--help": + case "-help": + Console.ForegroundColor = ConsoleColor.DarkYellow; + Console.WriteLine( + "\tCommand name\t\t\t\tDescription\n" + + "-- help | -help\t\t ------ \tDisplay the help message\n" + + "--reset-full\t\t ------ \tReset all files (clear files)\n" + + "--reset-settings\t ------ \tReset only bot settings\n" + + "--reset-logs\t\t ------ \tClear up the output folder\n" + + "--start\t\t ------ \tStart the bot\n" + + "exit\t\t\t ------ \tClose the application" + ); + break; + case "--reset-full": + await ClearFolder("./Data/Resources/"); + await ClearFolder("./Output/Logs/"); + await ClearFolder("./Output/Errors"); + await ClearFolder("./Data/Languages/"); + await ClearFolder("./Data/Plugins/Commands"); + await ClearFolder("./Data/Plugins/Events"); + Console.WriteLine("Successfully cleared all folders"); + break; + case "--reset-logs": + await ClearFolder("./Output/Logs"); + await ClearFolder("./Output/Errors"); + Console.WriteLine("Successfully cleard logs folder"); + break; + case "--exit": + case "exit": + Environment.Exit(0); + break; + case "--start": + var booter = await StartNoGUI(); + await NoGUI(booter); + return; + + default: + Console.WriteLine("Failed to execute command " + message[0]); + break; + } + } + } + + private static async Task PreLoadComponents() + { + await Config.LoadConfig(); + if (Config.ContainsKey("DeleteLogsAtStartup")) + if (Config.GetValue("DeleteLogsAtStartup")) + foreach (var file in Directory.GetFiles("./Output/Logs/")) + File.Delete(file); + } } diff --git a/MusicCommands/Data.cs b/MusicCommands/Data.cs index 30a79b4..066af23 100644 --- a/MusicCommands/Data.cs +++ b/MusicCommands/Data.cs @@ -1,8 +1,7 @@ using Discord; using Discord.Audio; -using MusicCommands; -namespace CMD_Utils.Music; +namespace MusicCommands; internal static class Data { diff --git a/MusicCommands/Leave.cs b/MusicCommands/Leave.cs index 11fb2dd..3171489 100644 --- a/MusicCommands/Leave.cs +++ b/MusicCommands/Leave.cs @@ -2,7 +2,7 @@ using Discord.WebSocket; using PluginManager.Interfaces; -namespace CMD_Utils.Music; +namespace MusicCommands; internal class Leave : DBCommand { diff --git a/MusicCommands/MusicCommands.csproj b/MusicCommands/MusicCommands.csproj index f64e6f5..9bd106b 100644 --- a/MusicCommands/MusicCommands.csproj +++ b/MusicCommands/MusicCommands.csproj @@ -3,6 +3,7 @@ net6.0 warnings + ..\DiscordBot\bin\Debug\net6.0\Data\Plugins\Commands\MusicCommands diff --git a/MusicCommands/MusicPlayer.cs b/MusicCommands/MusicPlayer.cs index e50ab8f..6d8e8f6 100644 --- a/MusicCommands/MusicPlayer.cs +++ b/MusicCommands/MusicPlayer.cs @@ -3,7 +3,6 @@ using System.IO; using System.Net.Http; using System.Threading; using System.Threading.Tasks; -using CMD_Utils.Music; using PluginManager.Others; namespace MusicCommands; diff --git a/MusicCommands/Pause.cs b/MusicCommands/Pause.cs index 035e8f7..8a86430 100644 --- a/MusicCommands/Pause.cs +++ b/MusicCommands/Pause.cs @@ -2,7 +2,7 @@ using Discord.WebSocket; using PluginManager.Interfaces; -namespace CMD_Utils.Music; +namespace MusicCommands; internal class Pause : DBCommand { diff --git a/MusicCommands/Play.cs b/MusicCommands/Play.cs index 26d9a0f..0e9b181 100644 --- a/MusicCommands/Play.cs +++ b/MusicCommands/Play.cs @@ -5,11 +5,10 @@ using Discord; using Discord.Audio; using Discord.Commands; using Discord.WebSocket; -using MusicCommands; using PluginManager.Interfaces; using PluginManager.Others; -namespace CMD_Utils.Music; +namespace MusicCommands; internal class Play : DBCommand { @@ -29,7 +28,7 @@ internal class Play : DBCommand { var path = "./Music"; var FileName = Functions.GetArguments(message).ToArray().MergeStrings(0); - path += "/" + FileName + ".mp3"; + path += "/" + FileName + ".ogg"; if (!File.Exists(path)) { Console.WriteLine("Unknown path " + path); diff --git a/MusicCommands/Unpause.cs b/MusicCommands/Unpause.cs index cc004c7..cfe2040 100644 --- a/MusicCommands/Unpause.cs +++ b/MusicCommands/Unpause.cs @@ -1,5 +1,4 @@ -using CMD_Utils.Music; -using Discord.Commands; +using Discord.Commands; using Discord.WebSocket; using PluginManager.Interfaces; diff --git a/MusicCommands/lplay.cs b/MusicCommands/lplay.cs index 14e51b3..6adb117 100644 --- a/MusicCommands/lplay.cs +++ b/MusicCommands/lplay.cs @@ -1,5 +1,4 @@ -using CMD_Utils.Music; -using Discord; +using Discord; using Discord.Audio; using Discord.Commands; using Discord.WebSocket; From edc5cb97bab047ad8b87f08e11e92749cb98186b Mon Sep 17 00:00:00 2001 From: Wizzy69 Date: Tue, 28 Jun 2022 10:49:16 +0300 Subject: [PATCH 3/9] Delete .vscode directory --- .vscode/launch.json | 26 ----------- .vscode/solution-explorer/class.cs-template | 5 -- .vscode/solution-explorer/class.ts-template | 3 -- .vscode/solution-explorer/class.vb-template | 9 ---- .vscode/solution-explorer/default.ts-template | 3 -- .vscode/solution-explorer/enum.cs-template | 5 -- .../solution-explorer/interface.cs-template | 5 -- .../solution-explorer/interface.ts-template | 3 -- .vscode/solution-explorer/template-list.json | 46 ------------------- .../solution-explorer/template-parameters.js | 17 ------- .vscode/tasks.json | 42 ----------------- 11 files changed, 164 deletions(-) delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/solution-explorer/class.cs-template delete mode 100644 .vscode/solution-explorer/class.ts-template delete mode 100644 .vscode/solution-explorer/class.vb-template delete mode 100644 .vscode/solution-explorer/default.ts-template delete mode 100644 .vscode/solution-explorer/enum.cs-template delete mode 100644 .vscode/solution-explorer/interface.cs-template delete mode 100644 .vscode/solution-explorer/interface.ts-template delete mode 100644 .vscode/solution-explorer/template-list.json delete mode 100644 .vscode/solution-explorer/template-parameters.js delete mode 100644 .vscode/tasks.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 2fc441b..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/DiscordBot/bin/Debug/net5.0/DiscordBot.dll", - "args": [], - "cwd": "${workspaceFolder}/DiscordBot", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach" - } - ] -} \ No newline at end of file diff --git a/.vscode/solution-explorer/class.cs-template b/.vscode/solution-explorer/class.cs-template deleted file mode 100644 index 20c7109..0000000 --- a/.vscode/solution-explorer/class.cs-template +++ /dev/null @@ -1,5 +0,0 @@ -namespace {{namespace}}; - -public class {{name}} -{ -} diff --git a/.vscode/solution-explorer/class.ts-template b/.vscode/solution-explorer/class.ts-template deleted file mode 100644 index ff2edef..0000000 --- a/.vscode/solution-explorer/class.ts-template +++ /dev/null @@ -1,3 +0,0 @@ -export class {{name}} { - -} \ No newline at end of file diff --git a/.vscode/solution-explorer/class.vb-template b/.vscode/solution-explorer/class.vb-template deleted file mode 100644 index 38ef67f..0000000 --- a/.vscode/solution-explorer/class.vb-template +++ /dev/null @@ -1,9 +0,0 @@ -Imports System - -Namespace {{namespace}} - - Public Class {{name}} - - End Class - -End Namespace diff --git a/.vscode/solution-explorer/default.ts-template b/.vscode/solution-explorer/default.ts-template deleted file mode 100644 index 04af870..0000000 --- a/.vscode/solution-explorer/default.ts-template +++ /dev/null @@ -1,3 +0,0 @@ -export default {{name}} { - -} \ No newline at end of file diff --git a/.vscode/solution-explorer/enum.cs-template b/.vscode/solution-explorer/enum.cs-template deleted file mode 100644 index 1ded8c0..0000000 --- a/.vscode/solution-explorer/enum.cs-template +++ /dev/null @@ -1,5 +0,0 @@ -namespace {{namespace}}; - -public enum {{name}} -{ -} diff --git a/.vscode/solution-explorer/interface.cs-template b/.vscode/solution-explorer/interface.cs-template deleted file mode 100644 index bf25cbb..0000000 --- a/.vscode/solution-explorer/interface.cs-template +++ /dev/null @@ -1,5 +0,0 @@ -namespace {{namespace}}; - -public interface {{name}} -{ -} diff --git a/.vscode/solution-explorer/interface.ts-template b/.vscode/solution-explorer/interface.ts-template deleted file mode 100644 index 3ea404b..0000000 --- a/.vscode/solution-explorer/interface.ts-template +++ /dev/null @@ -1,3 +0,0 @@ -export interface {{name}} { - -} \ No newline at end of file diff --git a/.vscode/solution-explorer/template-list.json b/.vscode/solution-explorer/template-list.json deleted file mode 100644 index 2849622..0000000 --- a/.vscode/solution-explorer/template-list.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "templates": [ - { - "name": "Class", - "extension": "cs", - "file": "./class.cs-template", - "parameters": "./template-parameters.js" - }, - { - "name": "Interface", - "extension": "cs", - "file": "./interface.cs-template", - "parameters": "./template-parameters.js" - }, - { - "name": "Enum", - "extension": "cs", - "file": "./enum.cs-template", - "parameters": "./template-parameters.js" - }, - { - "name": "Class", - "extension": "ts", - "file": "./class.ts-template", - "parameters": "./template-parameters.js" - }, - { - "name": "Interface", - "extension": "ts", - "file": "./interface.ts-template", - "parameters": "./template-parameters.js" - }, - { - "name": "Default", - "extension": "ts", - "file": "./default.ts-template", - "parameters": "./template-parameters.js" - }, - { - "name": "Class", - "extension": "vb", - "file": "./class.vb-template", - "parameters": "./template-parameters.js" - } - ] -} \ No newline at end of file diff --git a/.vscode/solution-explorer/template-parameters.js b/.vscode/solution-explorer/template-parameters.js deleted file mode 100644 index daba8b2..0000000 --- a/.vscode/solution-explorer/template-parameters.js +++ /dev/null @@ -1,17 +0,0 @@ -var path = require("path"); - -module.exports = function(filename, projectPath, folderPath) { - var namespace = "Unknown"; - if (projectPath) { - namespace = path.basename(projectPath, path.extname(projectPath)); - if (folderPath) { - namespace += "." + folderPath.replace(path.dirname(projectPath), "").substring(1).replace(/[\\\/]/g, "."); - } - namespace = namespace.replace(/[\\\-]/g, "_"); - } - - return { - namespace: namespace, - name: path.basename(filename, path.extname(filename)) - } -}; \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index adf4d42..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/DiscordBot/DiscordBot.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/DiscordBot/DiscordBot.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "${workspaceFolder}/DiscordBot/DiscordBot.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file From c80fe33e6dfb45678c735b060b1fa29bff923101 Mon Sep 17 00:00:00 2001 From: Wizzy69 Date: Tue, 5 Jul 2022 16:43:23 +0300 Subject: [PATCH 4/9] --- .vscode/settings.json | 4 + BUILDS/net6.0/CMD_Utils.deps.json | 126 +++++++++--------- BUILDS/net6.0/CMD_Utils.dll | Bin 11776 -> 11776 bytes BUILDS/net6.0/MusicCommands.deps.json | 126 +++++++++--------- BUILDS/net6.0/MusicCommands.dll | Bin 17920 -> 17920 bytes BUILDS/net6.0/PluginManager.dll | Bin 61440 -> 61952 bytes CMD_Utils/Random.cs | 6 +- DiscordBot/DiscordBot.csproj | 2 +- PluginManager/Items/Command.cs | 8 ++ PluginManager/Items/ConsoleCommandsHandler.cs | 65 ++++++--- PluginManager/Others/Functions.cs | 29 ++++ PluginManager/PluginManager.csproj | 2 +- 12 files changed, 215 insertions(+), 153 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6705416 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "rpc.enabled": true, + "discord.enabled": true +} \ No newline at end of file diff --git a/BUILDS/net6.0/CMD_Utils.deps.json b/BUILDS/net6.0/CMD_Utils.deps.json index f5694d6..4ac17c3 100644 --- a/BUILDS/net6.0/CMD_Utils.deps.json +++ b/BUILDS/net6.0/CMD_Utils.deps.json @@ -14,28 +14,28 @@ "CMD_Utils.dll": {} } }, - "Discord.Net/3.6.1": { + "Discord.Net/3.7.2": { "dependencies": { - "Discord.Net.Commands": "3.6.1", - "Discord.Net.Core": "3.6.1", - "Discord.Net.Interactions": "3.6.1", - "Discord.Net.Rest": "3.6.1", - "Discord.Net.WebSocket": "3.6.1", - "Discord.Net.Webhook": "3.6.1" + "Discord.Net.Commands": "3.7.2", + "Discord.Net.Core": "3.7.2", + "Discord.Net.Interactions": "3.7.2", + "Discord.Net.Rest": "3.7.2", + "Discord.Net.WebSocket": "3.7.2", + "Discord.Net.Webhook": "3.7.2" } }, - "Discord.Net.Commands/3.6.1": { + "Discord.Net.Commands/3.7.2": { "dependencies": { - "Discord.Net.Core": "3.6.1" + "Discord.Net.Core": "3.7.2" }, "runtime": { "lib/net6.0/Discord.Net.Commands.dll": { - "assemblyVersion": "3.6.1.0", - "fileVersion": "3.6.1.0" + "assemblyVersion": "3.7.2.0", + "fileVersion": "3.7.2.0" } } }, - "Discord.Net.Core/3.6.1": { + "Discord.Net.Core/3.7.2": { "dependencies": { "Newtonsoft.Json": "13.0.1", "System.Collections.Immutable": "5.0.0", @@ -44,59 +44,59 @@ }, "runtime": { "lib/net6.0/Discord.Net.Core.dll": { - "assemblyVersion": "3.6.1.0", - "fileVersion": "3.6.1.0" + "assemblyVersion": "3.7.2.0", + "fileVersion": "3.7.2.0" } } }, - "Discord.Net.Interactions/3.6.1": { + "Discord.Net.Interactions/3.7.2": { "dependencies": { - "Discord.Net.Core": "3.6.1", - "Discord.Net.Rest": "3.6.1", - "Discord.Net.WebSocket": "3.6.1", + "Discord.Net.Core": "3.7.2", + "Discord.Net.Rest": "3.7.2", + "Discord.Net.WebSocket": "3.7.2", "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", "System.Collections.Immutable": "5.0.0", "System.Reactive": "5.0.0" }, "runtime": { "lib/net6.0/Discord.Net.Interactions.dll": { - "assemblyVersion": "3.6.1.0", - "fileVersion": "3.6.1.0" + "assemblyVersion": "3.7.2.0", + "fileVersion": "3.7.2.0" } } }, - "Discord.Net.Rest/3.6.1": { + "Discord.Net.Rest/3.7.2": { "dependencies": { - "Discord.Net.Core": "3.6.1" + "Discord.Net.Core": "3.7.2" }, "runtime": { "lib/net6.0/Discord.Net.Rest.dll": { - "assemblyVersion": "3.6.1.0", - "fileVersion": "3.6.1.0" + "assemblyVersion": "3.7.2.0", + "fileVersion": "3.7.2.0" } } }, - "Discord.Net.Webhook/3.6.1": { + "Discord.Net.Webhook/3.7.2": { "dependencies": { - "Discord.Net.Core": "3.6.1", - "Discord.Net.Rest": "3.6.1" + "Discord.Net.Core": "3.7.2", + "Discord.Net.Rest": "3.7.2" }, "runtime": { "lib/net6.0/Discord.Net.Webhook.dll": { - "assemblyVersion": "3.6.1.0", - "fileVersion": "3.6.1.0" + "assemblyVersion": "3.7.2.0", + "fileVersion": "3.7.2.0" } } }, - "Discord.Net.WebSocket/3.6.1": { + "Discord.Net.WebSocket/3.7.2": { "dependencies": { - "Discord.Net.Core": "3.6.1", - "Discord.Net.Rest": "3.6.1" + "Discord.Net.Core": "3.7.2", + "Discord.Net.Rest": "3.7.2" }, "runtime": { "lib/net6.0/Discord.Net.WebSocket.dll": { - "assemblyVersion": "3.6.1.0", - "fileVersion": "3.6.1.0" + "assemblyVersion": "3.7.2.0", + "fileVersion": "3.7.2.0" } } }, @@ -147,7 +147,7 @@ "System.ValueTuple/4.5.0": {}, "PluginManager/1.0.0": { "dependencies": { - "Discord.Net": "3.6.1" + "Discord.Net": "3.7.2" }, "runtime": { "PluginManager.dll": {} @@ -161,54 +161,54 @@ "serviceable": false, "sha512": "" }, - "Discord.Net/3.6.1": { + "Discord.Net/3.7.2": { "type": "package", "serviceable": true, - "sha512": "sha512-TfcL/HG57fVt//WVJ2XyF2PlytY9IYkkwwkPLIhvu5FW4wf9rm7+N8RPh4qtELLfsa5ES0FK2RbgYjABRR9AjA==", - "path": "discord.net/3.6.1", - "hashPath": "discord.net.3.6.1.nupkg.sha512" + "sha512": "sha512-FAiCLGu5rp6+Z10FjKbbJ6LLpKjbMBGpozixkJlz5LZvuncPx8f4AWFAw7pBecKUuAh983qiZ8CZYZcNXsI4qg==", + "path": "discord.net/3.7.2", + "hashPath": "discord.net.3.7.2.nupkg.sha512" }, - "Discord.Net.Commands/3.6.1": { + "Discord.Net.Commands/3.7.2": { "type": "package", "serviceable": true, - "sha512": "sha512-kK7m571yzSzPd93o+n8Z+TfvX62BT1HtOEZIWXKwXWO8itP/sgqBNExjWK/6DOpkbD6+khc2f3rp+TA0rJD88g==", - "path": "discord.net.commands/3.6.1", - "hashPath": "discord.net.commands.3.6.1.nupkg.sha512" + "sha512": "sha512-aOEGP04X64htsTr7ozKj9qHpmvOfitSw5gfR8Tw9TX0+FdswD2LNL2KfOAIaxRKZmRTm34aXQEJrVq0K8AptmQ==", + "path": "discord.net.commands/3.7.2", + "hashPath": "discord.net.commands.3.7.2.nupkg.sha512" }, - "Discord.Net.Core/3.6.1": { + "Discord.Net.Core/3.7.2": { "type": "package", "serviceable": true, - "sha512": "sha512-ibVjQiWzgqh0GyP/GXE2kv3TA/9ysmmNFG/WmRE7GepQQAXXGxVUO9IMJ8h14EvIXMQ0m0DktMe5DkUnilo3Ag==", - "path": "discord.net.core/3.6.1", - "hashPath": "discord.net.core.3.6.1.nupkg.sha512" + "sha512": "sha512-apwswc6LjN4dj3u27SO3Hr56Jzl91wzReahieoD7IQhV+BJQaRxhTRiEEWFTrBzHfeFHEOQ7r6vZnra3zeFhKA==", + "path": "discord.net.core/3.7.2", + "hashPath": "discord.net.core.3.7.2.nupkg.sha512" }, - "Discord.Net.Interactions/3.6.1": { + "Discord.Net.Interactions/3.7.2": { "type": "package", "serviceable": true, - "sha512": "sha512-WGOxz6SMUu4WS5b/JdrhlwQletcplBIYqvjFBBDfnqE+uNJqcNGtAdyjLqIILfXGx8aSSSSYZSCeAUa7FZ8Yew==", - "path": "discord.net.interactions/3.6.1", - "hashPath": "discord.net.interactions.3.6.1.nupkg.sha512" + "sha512": "sha512-dwGhEdDB0yyo/lGtjwIDVZmsuD52di7lIZWu/sBtvvA05dMgYZq5S6ILdsBXjOyaHeXd+EV4YMlj2VS/rm619w==", + "path": "discord.net.interactions/3.7.2", + "hashPath": "discord.net.interactions.3.7.2.nupkg.sha512" }, - "Discord.Net.Rest/3.6.1": { + "Discord.Net.Rest/3.7.2": { "type": "package", "serviceable": true, - "sha512": "sha512-T7RRThIS23roFEJwTL1l7aawjVyn7ZB5yH3tMge0d6TiCzzp4V4FAZ+ArTt19LHRFhPly90v8V3sWqmTMN+5Zg==", - "path": "discord.net.rest/3.6.1", - "hashPath": "discord.net.rest.3.6.1.nupkg.sha512" + "sha512": "sha512-dyp8YaMBNJ837EH1KNz2PNGZqc2y71WFd1+pdldF+pLQJ3Gf/+V7685paAR7bQw7yFNyqEBR/QRBCNp+QIQ7Wg==", + "path": "discord.net.rest/3.7.2", + "hashPath": "discord.net.rest.3.7.2.nupkg.sha512" }, - "Discord.Net.Webhook/3.6.1": { + "Discord.Net.Webhook/3.7.2": { "type": "package", "serviceable": true, - "sha512": "sha512-xikKHIGAIMz0BzHkaTKb48DNpFjKW8mvJjLJSezJ1xQOu+laHNk/hav4qxVtyZz7HSI/vGTkmlq9hKVhWzpaUA==", - "path": "discord.net.webhook/3.6.1", - "hashPath": "discord.net.webhook.3.6.1.nupkg.sha512" + "sha512": "sha512-da3i/mTq2y7mfj3xlHH14S4PivHbflJCVr8OUikJtQrxBOxvPkqP7ZYk3Y9S28q0K8qik+TUjCcjL5gELKrh/A==", + "path": "discord.net.webhook/3.7.2", + "hashPath": "discord.net.webhook.3.7.2.nupkg.sha512" }, - "Discord.Net.WebSocket/3.6.1": { + "Discord.Net.WebSocket/3.7.2": { "type": "package", "serviceable": true, - "sha512": "sha512-hF22Xy7URlVEDQZ69INOgzPvFUsIDfd+r6U+1yF9HWdBn3d4THnvAAhkv1TraSx/T/MKS7g+jvk/HZ3mh5S3aw==", - "path": "discord.net.websocket/3.6.1", - "hashPath": "discord.net.websocket.3.6.1.nupkg.sha512" + "sha512": "sha512-pYCd6ET44ADaNiyEw82TaJnR7TKYHfrKCytWFWMPL5faJhoh260avZn3Hwunlf331lEQ0f4K1CujPkQbNuq7kQ==", + "path": "discord.net.websocket/3.7.2", + "hashPath": "discord.net.websocket.3.7.2.nupkg.sha512" }, "Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": { "type": "package", diff --git a/BUILDS/net6.0/CMD_Utils.dll b/BUILDS/net6.0/CMD_Utils.dll index ca84625a1efb3048bf20116ae99de67a0958a49b..d30bcd71d4779c6e994310616fcdd889ae9a65ab 100644 GIT binary patch delta 2153 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 diff --git a/BUILDS/net6.0/PluginManager.dll b/BUILDS/net6.0/PluginManager.dll index 7680527a240bff24b1aabb289f55256048633298..809d3de8e262e74c50112fbea1b01a0bb99acac0 100644 GIT binary patch literal 61952 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 Q`1yYhWBHdc{HPrGM=!iJn*aa+ literal 61440 zcmcey{{DEQ_c_mYp7We@ zo^$TG=iEC?oqrV>L}bJD!w*D{AmzU?0)HB`L!43k+YH*}dcO1#ZOZedvzN9+OIAg~ zOCk*`N*Wtht_-)8EN(7|tX^5tva)3S^jRey6jwz5C(v6D1&G|#Z?T2wIhVsNts-dL7-#qUjY?%jQr2YX0p)B^@OCdL6Ck(!+hl9{|o7J{pTGeD@6KoU&x-^ed z7{{k5Dp@#(joZ>))m|lYh>=|8h7d|7<)l@SqaPIv&}p%>+cC-uc4;Wmx(VgW+CBRh|5(`*A26J=C+Ui=bPXT4J#?-t?5G|e%Sm>83@2-u2e(l-xXnbUFBk3~pynRTBPctJ zR&Yzv1?cxt=p7gHi)-A)RcXa*J$f))1&u3OE?>$)g$&go{kE#fK3k}UQ9A|wW>r70 z-D_?Q_Xo%2HLvN?{SL3AIs*1bwx{;&F}O&YxWZCpv&Dgzdn%ZvvmdG zRzY|G81z=6Fjws+M6%DN%5#&~9o!lWqu< zdQz0rz3J6`;c!M(x~Vk18Sp8?3r{`Qv<5_xfx8l43O} zoeT9qPYVHNc>~?9XM3}2-jU3z)H5(#{XuWAIxVH#Bby}0n{#ygk=Fy;9 z-rN!Qb^Y)|Xb9Ju`-1yy#8R-(ZLS{OhKQnJiR+hW#r_}? ze2%{pz=L_jWpPO`JQRdGGz>5;ijnB9h@_$Qirrxh0XJ1dFk7uEb|omxud9kZ2?~?T zs^atnRmN0Cg2FIZi4N+HF;M3^PoEs18`o zTWCXfR}i&Jgud5QJvJ6%6<*}Ep+{_9o9l{}(Wm_I!w&{`Pqnkyt>W0BT<9nBxlYeg z=yTPyxOZZD!Mzhz^bfGp1f(d5$3BnN+|%Vw>c&i+YdUmC?tE3#;;hg(h;MY{%uREc z90VR`&4JK(@XRo5xYMi1rEFrI1)EqScquv&61QmS;Yq;L$l(d5R~0&4oBcM^XNzFi zt_opY;0_~`yV8|2H{IpDqGiwlGkg*letQ*KQQ6gr=Q_-V-snYYt~(hTapdE<4%$4| z!4&2?=3%bGe2Te_iO^K2Vy;s*GT6q(6dN-+mmZ(RNp}1cPS!FHHZVeAgNdXK%z50H zsNXc0b(_)YNYWg7cm`5(gkiu;*?@SeaA)n=?m8g|c**FEUaR~-+3xuHT(Ta= zRBkhk_*zb~<7+rs%Obdg`4H|f5yD84dxt?|U<=XjrFFR9+aeeot3n(qZlOb`0!8qq zIjYkX<1{cTO+A7hQHr6t;1Jp;)mA>+Lc1kwG2O$KFn-*YjpoBIANwU??$)npNpl!o zI()(Ez$wi1su2cmAGugTVZ5m*pU19u2e>1LCqlc|Uh}4@gV?I7W?BKq_b&`E@^d*M zl;{qf&iU0!EEHOh;P8S3YpP)Aj0A^QB)Mr-wmh}c;_;xd9m3)g;~{#c^h|gm5~acM zgH|UDAaC?a)o;CFExs5{gMMq|#E3U>Vv9F(VvnE2Nro-HgwyPJ11D=a1A5aXy~%`H zLvTG%21X6xKJShGJf(~O&z@U$CWo`R#0ZvMI5IL{4P#1nyD!po~=rz4InRAx!c3e{oJbk+^7`1a!X6OQ7KGOh#$;$d z!5E6OMGi4m01T5G*99>}AbB2cSP!2AkrBdVSY<5~xsS&} zUdZingT##yzZCXikd@6Y^G0xaDeMkm0;~#U0@P&b;TSmKwE%jTR;5{w9pV$ztn!MM zg$A-sSz60D@pjAFFb!*b*HPlJ)(r*=**Kg@)UOu$z1X*H;+yLCEs&$HwsMjkzn+t| z%tK!xrqEYRs1D~g;yDvbe{b|AWdkkjj&I^zdi)AbjQHi8WXCV#WG#ze3a-Kw6QK)` zqhG3ra7ms9B~8RsF_&>$ik}a#IX(U$C)x4)Ia$j*7)PJLI1@enEMXhBruYeaY~v12 zjQH)GWXE@MvX(_Kg{cRom{5L7A8@;svMm(B&oJ#==Rb2cJ^nf;+40vnS<5^a!Q2HS zOoV>MmE}5N66dv-H+pwUo&LbN^!Oh+G2(kUvBjU^#2$Z^lkE7@oUCO<7)F4?FcXPs zMf~GFDP!BePO<$WXVl{_abm>xbCMl@fs?f?g0-MnV?tT$zCE(PXTT<&sl3rgQf$7< z+4cB)oEY)LoY>;;b7GJGl@rXdA4qDCf5>Te9AgY6az>PxBPB9%l>Zf6*6&nV2xfQu zOU|gr|HX+B|B93B_!pe4Wf839iZv$GvH<%Bh)lJAAP5);BgGH|jFJRH5HQfON<$DZ z&`XM8A))nfhx(nFGNv|wqub&aa_1rklbi~TcH?=VFVafXNsnCwsoTU|H*_(uHjSV2 z^|j1(IzpI{s@$ey@H?1-el*|4|1n=5DGw7)YI(XUkGUuh^WM?r9hpzc`-yz~Trddo z5Xz${#<|O%?mUTo<2onb{OZ~PW z7MshwHm`jv*5Y0>bR}n2O&I7hWa&SiqKFT(A`qU81b0q9tcAx59t=;E)N6*v3KHNI ztVw>SvVli~t6&jL?X_d+js=a^hK24G6x|HA-$h>6ONgq1(9c1}uLcNR0}#FzVBK{9 z6*W1P>wW>G%e)>iin-BU(aw?(ZX8u!SC@%--yOv??+#(+tqNgMtMX%gels{I77rc# zAdKNi-ZVT1`_svr9{MGOJGo$ghUv`+Z)06Ob}16BH6DMf>lN9v>N$z(riZsf*Q#@B zgLpGGv02p$;ak`)9XQ3Gm15oN^;VBeweHQbTDH42f6RQsVDiy44NpSlcoL!me!q{r zK6!xPv2LPVJlLrR6n+-vzdDSCDAHX>PeF=73ykOwxMl&%L&#u47Jljtql!mp{<{90 z6zT1f=C3=>A|;iv^he~yI7E!%CLqCSQgjESbJ?Rv4##1Pt%Y}T``yMO1dcm|*%b1H zkcVyuO_2+LM(ziQ-T~Sjd9<6p6LgxXcbTUnPxM!y!gp~NW?>RFdBS&x?_rh$toh8k zms!6~uof`uK4#s|EHjMTjODE({2=4vF7Htpgt4mD0|r0x;cir25cvSk7~wjQkpdkq z&*MB&g&)te5QYK`Os{`l%-p()&?4(RD%|*s4*(5LMbY|Dl?7n zIDzb{!B3xN7&j!7`uzpjs*lWuP}RfBMfIp``y?CBkv55$e(2Zaj2zyDD#r)Fpb>ru zX!l+P9+PvrbUbzy>Sj);0!9*|=x;d7KxC;(ljjUY=w@(hPWWM#4T6kGwXqc+43cMg z&cZ2+ITik;Nnhf_IA5rd9ge)pZ7U%JhuQaA5Z8z}Z}b4xLq0 z_z@INkx~N@R|T-H3rv}Kz6a7}zKV>|N1;>E&XQ1*6f~OECjelP`3`IR78;>uku79d zlucHUy|x9vD9;HP%j2p zXX~l{W>TFcmiptYzL(YQJ=Nbzsvw;kV%i+2q?oXhwrS2Yw2SQJwkAMqldwBV~ONJ ziCBxHkoUO|ZbId+8lRQW#~AWP|0?==95+atDjiuq;4F`^2af|(N*w9@Om96GgqA`9 z=Nx#X?|wE=>kmwf-sp#x&5Tr=AF<6R*o`8DW8(Ry0Q1Wt*u@O$B_lCV+{%*>R!~*p zr;rB+2tF;e8<@u#-h%{VB=j^=Jh-Jh!JCBFtwhjAtDaH@RIo4HBwPE_xtMsa6q_4x| zVT-IV(H}g6$A^Q|V+`e)GR-mkbJPs8j<8C&F3&>G+Z`ZV-IIk(<{MS6@SY5H1Dy0YPwCf&u^VCYS$UU53tPb>xEQn1)@ zh29de)cz=G2r~+5ug>ZmbkXHhjIpF0S>O9mU)(8B-!UlCs_z(t5u(%<2p@ov@H+q; zhzF5c)na7?;&@IFh;>LM5OD`XwHovoOHf}>GU<)^!I(t@6<6Yv1>Gtj(26b${9 z^H+KFP&-(Pa#UbP%rfZcHb~B#xgO_o(^x(qyO`LouX)&k=Zq1SH9r1I+H({g!xZ+3 z5?lV(b3<{l?4j}#NzKE>WvWceCmUjw|2}=9ziG$Bj13(=SgRgKhN=$^G5Dw=FH;MB zfJ#Kt*j2=Xb*@mAlMod56j0T4OX71Er{#utF7df-p-K)4pIhzRswu^74`JfR+~ST5 zW+N6iBy&TusN~@6e)xyuJWkI?pJ5(G+)hT9T5+30y6hOoPX8D;u^oSNLzR5dJ#=hyTY&YsSl{<}wlfGdMxys>1{w z6J;N+>e~n5q#k1_h5#pB*#i!4xm{vbU!E~UIhu%?QN9Z$_ z^1KRbI;uJb*L}ECpET&Zda$UH8nUm-|_L4h~(`4sKg%T=U9aiBqsiG>$CcFDr z916sx$)qAZ`}ZjE|3Cf9`%J^6f4@L4O8?qxZ|3OGV_$+Jt0LZ~LGv-4ANm*f_E!K^ z1-jaG7lE7^%GSFG^%$!p&eaqZ;4S$f7|^(>^hF2qUVP{qsHJ1+^es|rRI?|#EB0D_86!LSIsfUp`FgcKt5jjsR2QSesW@eKc~N=%3T{kw%R=as7ND(xRvnv zVWb`tdK6Do?(_9nlj5Tz(;}y(@SDL8$}I{v%d|+CMR=;>ENm)_MxJdBDMJ7m>ak;fob*72|k9X-b8<&c_>dTe@d8K3poYIng`ILl7yF_r}N*fJrO z0ES&`HS7lTJA95%8Y3pUACE`wnu#*;b0g?pGv3N6w(Zm@o#}Iisw756pgHsyOF4iz z?aCgLSk!T5n8VW(`d*K*ORD^3bHzVBb{1H&Q-Oia;xL|y+==$>c9}iDqD7C1)0xl+ zhO+?uX}+`&o&oR<0bUdE0fEywSob5nr}rk>J9d5;GYW@oK$^g6l49^iyu~qMEn>K#xNoGv25@k^g&fkV2^H=S zR*`<`R$&TH3?@%_QXQ!Sw&P!u2n+P&cZU|$Vc_%MtGKXGqwjFpad~-wB3+A%*Cp6T z?Ov}ie>ARZ!Fwfz50jl=7mbV8+)e4ky8AZ{}P8lmnJi31=0s?I3F(hNBQM zuA;OGHY^mIrtN7IRcTj-dad>=OU4gKiIeld zy8zd5ppT9dlfD6egv3cdn6>7z7`Jd0=ukC4yaoWf*#i3m%BmrGAQU|gyo#JK-cZ4V zm9CaN&d@-R$J&|Ta`W+UR5xMf zmq&Op8&JNAQM9TWm$FZBl-L@ciG7M)zoXJ4+Gm&{$3ODYXX^F^o&)XF2Ltp3X}8PJ zxmLTOoz)ZHBt+E};KvF9LeMkAL*PF@&0(M?cGWm1R{Ou;1TC=%scdE-l(6jE3u}6e zg;?x!(v>|badVWMFm^nQ#W!<)J;q7=O2z{T7E|F`*0~B8cPgjxpR-bs&+%-v&!Ydq z7gmfpTjSRNqGV32_Y3*8C|MHOYvCm8v#_{Yz4#cv7K9#S7~HDIF6Vs1QD}9QV&-j) z4CWgU)+p{8JVdf0c*7GsjOr>4C!APQ_0GK<%MZLPue5Tv-cpg1$Z$*A+uKk$4@xO8 zAdbQp_8K=JP86Z4gCn;x3|6Rf#W$&|a-HD!k6c@&wj7jD@ zaD58i*SL;7r@yDANj z=2kjF<3UT~MNW^YaSR(AoLq4Hmt15pz70w3gJ@jvg%xAY*7$Zn6v#Llrtfb<83fL-_6ZNPQx__x#Xkew*;zY~5QEB@~QKU9l4|LB~{IWgzn z#|h@#+mOnfJ4oXHb&Nhe#zKq@PEz7uawg{7yE(re<0O73Lopd?LJ}r4Vy6&zUuO-E$`A zvgS-i^AK=YNikZm71QVYT&k730J(XCx8G0aUN;5<6ItOYMc%_ejMjm1K8G!v)x~+g z1G@%@S+0oU=rOJ?c9pTeJHp2=J|KhDPF!iko=f+-;=cw?k$M+TzlQTfuzX$q8ca0i-e?50-cwjMDTN3o##ak`j-SGch0k zmh555z4NQz{-GV!oP>f5Ry6kDKv_8P#JfM3g?lRK68Zk)7xmnWH7mjr>v4 zyvRG8#vf(f7@O+O&|^Zb$h9W`o&i!n!i){~pq z;IY^0(6DN!D~;}f_Iv1CRgFK!c#NCETImeuvpO_AE9GyEe1Qtf`h`c_aIAq@#+k5C zVHHg6ipFY%Y0U46#_(ergHj8(-gkU8u8%wSSpl;_dCp7@g}F>$+P{OBo9xILyk%yk}qG?X5eIl}8n-E>Iu6Sv#$^`;kL)El!1 z&m>3AbxXku!;2tCqZX4<~^z!jvm?#fgWRV8Tk17^oc-t z1Ftm{x422Z{?x02C0`=!LSuP(2iYFvNOROYmONi87+}(AP#Gh0>eG;0_jM1xau|nf z@#ny^9;=Rn2_~&V17kwtp%I?I)-hK0LX?{ujN+`_9p9JC)@WtZV}ArwkFiLPJtOd0 zz~nP4YH0R+W>xP$uwR&^pXUUthCgs7er6pav-DOpfF5HZW@%1R9$PtQ;<1$y8wczF zZya!%JVOzW6DnLyR^c?M!W4o*9(ctkai#l7SJqxhej*qW=VdeD=Vn~*;ljdD{xCoC zyZ!WcT-fRE=Cja&3p+i8&52{h2%dv&bQffG(swVwH|aZjE#?UH9%e8z{wHwJIGp6f zx%(9!l-N>u^g<|B6gP!0KuXw1SkGyEH!CZRF7sDlMJJ(Oqm#LFUrv?X#WLLO+|hcL zy&{D$>@rW{949lF0uaKa&QBRHiN=0`Y$?F+E*-PqxlZW!S2@Am`9-91cOEMJj+-^C zu@L>vNlL$S&P2bfN)$Jx)LBMQag!CuDWiuQDku$gphkAI#f5;hBW5$HctF)r+;Lg+ zKwq98{)=vRJQTul{Bi&CeQq|c8sJCF0n)!X9N}*_u-E+>JhR5;6jb|lu3+N8Iy8nG za2lGIw>YLFwT`wp6PDX=al-q$Sox|0&0*4la+8a(6s^liS2hY$M_ZB=)=q)7_?v7% zk8u)zgYiIu#Z)m)BG4u7_+MBQV;DLf1*9Daspk~26-eY1EpY`;Ei*YL4wP~8{g{>` zG>etG-~G7%5#sm5Qr~ImeocViMMYz%KRtF3uEgF3FqZ3U-(kPd*zTVD)t1%)NaYO1 zVW{JmWDMJj^;&so@}^1~@T#zG7N zPP(!uB)U*?Vie4Uu{dTJ?m|xDe`7o#EI!radgRW_8OEo3yqQ`11c1(OqMGrKSv960 zS18U+iV_uv4Ta~i#?L{0ZYyR;A7V_k>aH`KAsZqT=CCXJy9TFAwH!uj>yS)Ep{jmzIBd-Ts+9{WH7$`;)Yb_=ls*WBF$$4u06PWaITFY9F0E@?lpJcTa9M zzI$?-yn8amD?>Ju(Bv>-O$nC)+zfme#1uA`9Xu;=6M-dzNrK<&NZnXIN}QNwlkchA zhITy%S0RQ<9%{>fh%VW)KM%;n6h6y%UTy$yDXvoBN6a;t3k-S}{P8jud;$NCTr+(Q zp0#G0fL>x!kNpcU+{97TW1?2?3$hhV)ZcP~fd3My?2DYhF?0aO<19gNags7gOSZ%$ z{S9Z1F-$u!SiLaBC3Ev~YITHKy+}qW2CElL8;PycBtQ8+h*rq$RY2>uB%04bcRi4J z|E_(2{wxF=kG6uJE zRiTKrs=MZequ&3eszypNnqJi(a~2!r89`nuHgeQU#j^L4g-?;gVqEMVsD!pyeg>9} z9&Z*$CMCV@hnttQX(bI?px!gqDMly!M&bNE{u!wIXs$cXbVst!Ms=EDJ*L_)L!l)M zTb5?WF}FXm9HtHRrk?mw)hqH4vm*Zj%&;DDlGQKvBz^%vJzI2_b?h<{9;mWhX-Abc zi&_6uS-PxqCZb+Z3~~Nuu>^IC<1GgMrVj5g@W*s`vjHE|F%KWpq3-JLIXNgGInCiq53OPee!qkz=}!L521rhH z_%cIhvxI-K1d>cA|0V+@We%S=gqxR}e|m%^US|lS5fYaPf6$3lm66-I>#as|q>M2B z(8^CEE9lODtYa7X+LFJ~;I`4Jl}@-_%>&(wTGXBAgsn(V z<~Gn{4um#>*Iv63JU!+F85@QvG&);`MumLDwC)FRQa-D}`r3>>2T;+@67}6Da_RAE zkYVCxrgx{)B+0z|Sb|E8XL?5}7f^ z`*4yS$BP0Opv=Pn#h9*2&i%ag(HeI_1angFnMg4u5KAeZG)si3)>(MBnus;$MCk7EqosOkCN<@44L!wSUQCAYQ!;Q8Ar?b z{$7g#fE!weRBu_j{QJ`NIKBTv!Oq)MG5c zQlFEQg(PQ7JntUJl_yuRBnA>+49NaOl5Kq|V2w!!Ess#{(Q6%(<~oR`Nj-R8b(<4R zRE!r;;L8ubd66crs(^Zga6+N>X$F}X+vqo*n)yD?FAL&lKYC#>s=M*qe}X-%ds#t! z3m4A;D$S(F80DYQF~e)nH~e^eK94cAFU0;})r6N{WYr`SK7SX3nHi5px3b+B3(=6A zbY-JE)YGlxgs~Wm#q&A89^)jQ%XmPsVoc<0#S4z|KyVVQu{-jvxkQ7^=RS(eLS?K^ zt=_hw)JPNzOL-?(6r;qQP?dHnoqF)StaRK+p;b+atfs4$fY*!3)z4k z<0M|dcp%O=2RD=9b=)ObCE(d0Z{7qM7H~T;imEbecYv(@2bK}F{9IDYD!RUwbA<2` zkvm>wS>v?(Af*^YZeB!A*kXdkW+**I6_k$ydAYb zNh~fyyU3s17Zfii&eOQUkJ!S*4}W#QGR5Uyp;Wrecfm^8!^F<2mAlJ)k43*ld9sCh z?0w6lo6zF0A%4Hy8Xg{>C()Yu-L2{A*_xj2*8BmTZM7yQsbjUKC-L;n4Iy{GW9?hA zFeoij@*z4X}FMgoI~EHE(#m*4KHmA^cyIts8LSH}FnI$93S^hdT(bi4%W3L3{%qK2Q6R_XrJn z_i(!0qj_nCwT60MpZC62)c%Dn=`mh=C6|iowSD{B7)3|P!WW^XWOc$fT!|ia!)4>R z;o?L>W=dJW@eLQtJzgS zl!-T&`=%C(y>I??6)cGs>oJz_?lz}g*^BU4AsF!ATXbU7$P=<@~7{ zDPIVDk@0d4F7j{c$!`P^EkUgFpGn&TFBY2=%x2gj@Ss1t*iZjN0r-M4uqkNL((IM_ zCVd@XxJ%%Efy0DfD)>Eqws39sGr1;RSH^I!pP^pP@O0QT@dbHyv74T=x4Ydm+ScyQ zpz?|h1txX*Sf^GznFSq_ZqHd+YSMi^wwYsNSk{Z-i~`ndEo6M7Xi^d5bHMRom-y>U zAFa*&I@6?Qjg_T7dN+qTH}qoohT!9~So*E;V)1G8cPx;Dbbrw^xwEJ}pXg!Xn6#jr zZLTjYsx;}QT%X&dUkJ=8V!R@+DVR?!j?T(_`U=pb%)Do?)?S~LRc_*Jm_5AL{tRZn zC8%8n?d;8U^hqtAhF2#2E$hYNAL#vF+`_+vCk~DA-t_nE=ks76Ez_IKK8(ku+yR9? z{7%>%UarM^c?^g4{yMXWZtIm*UPMm|{EauOypsM<{yECJ$ap5VlICSGK1BQ(Rmxt~ zOOI@j9yue2Ik&@4lMYmJ&u%u_-9@y&oNKY)Wd45GF=CpI*+=3ybLTO!j#uYBz{H z=}m~(8}d1qOYBcW@0j!zdbxc&iw@GiH+}>22#heq-Yon;l!~PVC z4`-CIWy8<>UsW^(E9s8>&kHJPQw77XdjAO)ek)}KM88J-*9BfIt@j@KB}g|`K9f6^ z)|c@}IUVgbk#?2;se;GzwJwG-cVPqK2LEZL!@H?3F+!QbOaa++jCH(yfYln$Posie zg%hxEW2X+t@B^}-?3hoO@>LX$wGF>FpR^0g~;J1i23bg`jgbDZs%}qj$g9j6+0l$>X<$aGfoq%8E{<%>7 zuymL}Yv@{`=19H`biGjLNWM$y2BGee5-y{gg!-A3em!jy>P4}#lWrBNPN@6oHldW2 zr|3?hvZaKl>29G;6Du#!uZ6l#JbR5E5UN2+f14f>ssI5tf!?9t2z9+^9>Tu`z%{B7 zn_tlH$PWJLnDwS=|E9-CExe-vgF$(`5f8-p|G6=n=b8;P+yD8qa79sJ4TSDYkw6At5{GO+J{12m&R14 z_BWv(70R#uL#Vfes?a{gm(sbV4`fzSS@1X5mdVI`6!7mEota*;XY9>1&1G)CaccWa z_rA^koI-I1nJE#hW83A6wW(>9}hgC`Go5g=%l+D?h$;T;I9E6MvoVI zjA8VQz_$gy3|LCnA)b#>>-`y@0Zz~S7M%G-T2?6y$?SyX z2c*R7(#@=aRM5+n6{Jrq(jiR~3lYEHz`dx@iE`sQm%hcm7cDsrL4n^ovZQ^nm8PWA zj6IlB6a4ii zKR~asor|Fp)~^K2v~#ZGEeqFxv)geqV9!>)71qA?a^5;XjTVak$Jy`1Bl#sJ+gad9 z<{jwd+TG#2=LjEe6$=qJ*Y{eT^Quy`{0CAr9|m6L?+iZ!nL(RSkI%g|roU~3u782 z+gi&v7c8Xu7PZ=tZSEA`CW@Wwf7GiZEfk7ZKF2;-xJN7u7YqBGZ1b<;;W;j@X*DtQ z>kKcjvGiSg(%Z|*I9l=x--NfTgQ?NZt?^G6x2-2X5eZlal`MmuoAh@8589Ibk{BaB zb7}Ovei)jyc8;Rc%#Q$jM$11?F3&R>&5$vb=sV_2GronCBT$uV(!?D61|!X|IRR5k zOsjYYI%{&-Pc;fsb7klAD0p6XdNIe^(gAmy4EdZ(qw5?Tfpa7dA9Ch^GtDRl+-B!b ztDiMfXAB<8suX2YwZj&B!rNg~OD9O1+hn{G_RXl1+7Ro)eJv=)=jbO z=ZbQkT(TO}R*PyXS?AU1R*PC*e2LefyDX}s_$sfBb}35Av(sZjZFWu$Zt>b_k42pt zycyI!p{}EN$quyX$Wp@Jb@X!fJzf|6-lE>h-sN>uZEq#Jy>f%@p*D*e96U!$r#mbv z6#Tt6o!+;or?WdjeP>bkBVPt(lqoAGl}b|qMpe5+?!29DwWOJ%I^?IoA@E#YU^COUa0Hng`n=srH?J@Lr{4%KBV$B zIvl=yy2PSB1yw-%gxX9G1--sPvSG6`VY3%y33VNnrRDm1(E^Ja;yqg{p*t+8l|p zZ(5*_PWQI>j-%NY^{ax2Zy;T7QP&o%^9`aeh1#5J7N4UHrIH$z?~A;PeM4!yMcwP& z>^q*Cx@9-`hSM&K+MKu3cLKfCP2KGqN&gUvBRPw|jOx!eFQTsEC-9BRc#CSwdC)hC zu2ht0j-hRea&E{Otk=;Umgd`~Pf#6wY*DBA9`w~w?QzP_le~}n#?o4g+Uefs8%M8q zQ}6gDQP}_~U8206s)f3mcDn!StEcNN>Yr}SKb_taYQ1x~Z?Jv}{oSG_`!f8e(3ciP zkj` z%cAb`Ovmq<1_mjwe-G+(nxZHg?pbCopeJz@t0KA9e+KOr>N@A};?e#y>2-^mSUlOk zkPceZQ)M&#i|7N3dcN#*e*=9g)J3!(j{u8l&rr76K{t5D+ZWR}7IiVGMyejBWZ!^l zqAM-xR8Y;dS14|YX8&0<2}kVk%z1m+CEg`8-J%Y72kT4dG>ghjZ}l&sg^EJHT2LE= z>Y!PeTbI%x*?qi@ex13>zm%4CQ*r-ty56GpW}dCBq2>htJ4yhucJNZak}1L}OC zRMf4Z4VH{G*U(Z7uLS|*gzJfGSu8Ec+TV@4%4&!@3MUF2-4T&Tt9B#UaTyv-k@ zSr*k$bgzFcoo-Rfi*|u(vZ%+=5^-v^sAr3U{y3edC_2IaxPKkxjN$T>FCA3UgQ^xv z)wTnVyR4~d+d;ZeD&Nn@W68J*-@l#+vKtk_k!8^>nFFN^=8U zW64-^1C`@lg+%Eas8T4Uc_9t3WUP51?L8@}c_BS3l+wJ2Ua@4Xc@cd&C8>E4eJ+&J zyqLbTWUP5HWlc+JUQ9lrl;$N=Ak=!=pgrxsg!-n)HqsC)A6wZ-H_k{}*+@4FrL0^^ zcUUskyp(R7mDIeHZWc;uUPgCVGS<9|N={8`UPirzQkt8n+LE#6Ci0w~)Z9cFLMhG5 zDMzUFG)&v)znsb~>J?q1E9l%5%`2!~C>0Y|(10_NHm{&TLMfY9(nw3jrC&)|3zM2x zl20h5c@-5}GS<9`MlMQfUPYsXQkt7-QV(i|Q0#THzL{=Jk^P+R5K8$8s)_KYV)y6t zE1{Ilt7(@dnITw_sx&>qPeZ@;dadN6Ch{}#?JBmHifaCq=e{KD1;X>#y2( z^eBC2cL|SV9roYeO+A?P5C2`=6qkN~k9-ew%Q)YzZi@3g(oJ!`$4SFE6TU){RnQZZ zE|l{63Ca~}JzYcJ`JbS`64qQ#BV335Pg1)@rO{#k9{Sj#et|uny~Mxt%bMTWzw_^< zr55$M`JMk6+GSDaIKJ~gi+>PCX`0UO{LfLjMKwD$+DC=US*Cp1M8Ph zi}YJd7KQ9ZdOk(=61^^zirts!nicGsirts!I-yjJ_R}^?#<9DfYF8&U_tOZWl;)pk zyd`7JKhd6ZlA3>FRQ@!2Kf5QcI2t{M^}jAs{3?4o@9Z-tm7n0Sg#Aa6AAmLVHb!k*8ys@LhPI;kacwWO$GCn z{T;c?nVrw$*b~gkvf-&eD+|9nkjFZo6tMJzLY7{hV*hU?EWK4qiHL{TPz8sfPM_e} z(4bjTN~h>(u#a5})JrGkB=96(aWw2mBwM&l>dPF>Y9)pL)5Uf?;xl_|!`=w%B>5V4 zDOqO?YGE(}j(lZxF;Q!T{ zs&!90T>5;(h8ht`Zb zimNxSGF;`jDslC}6~fgQR~4>mTs61`;2MZ)6t2;@#^Az`#nTanezBcDXaSDS#9Iaf z0kim5+W_kX)(bpE;5>m10$TtzJmXPuHf;ecpiaP2?D#SN4dR*m4dQ1FO=Hg4!rv&c zknXQM8Fd=vnGG*Tc@_h|D>p)=Mow@IID1P^20ox-Blx>=X9L=UCxg$>tBv*F1o&9R zt@JI8^*;ot@GUt{K=bMBJ%CjFEY2p!`u`5d(jl}Z=igMX{X564jYL^v0Y5C7tc|C( ziuqc-(Klxy@a)P)?G&RQURkO)_V!+)%`>j`w+cKP@G9Rq&^)#LCg7`!ZquenU8YDa z>hYz^L*Q_|rbu1p85@g!2hQhZPieDJ*6Z2=tE?X~KLO5V)f@jQ`%-H$ZqL^BvyJ{) zPQU}f4823OnDI(Ush(%N8tenkN14_7MtU_kSZ|VgHA%giq+Xjve+%H5`WpD0MQe;~ zyiB%HyCT0?Zx#Jk(Qg&~4&xm><8~NdRc_Qb8~rM;(%F+=>RXJzmffpwH}t$+z}qVC z1zh01SFe_uR!h6J0iVsk7l=MxD<@8Cap&Pe@!r3959m)rt z>vFf8-Q7)mc6Ya&-E|sw`0lYiV{FNK)YfU(gZJ3(meV|}E|os^WbP*3i|H^nmkhQ) zs(+Y!qTNHhZvMUKJW2)LIly`U`;aj=uK_T#WQl#B?2GS{J@S3BLVm@n#osIMfj+N` z-?BIxDnGLCqJDUZ_9MfQ^)+xFFOO0+_5uP@)?q2@V}YL;FZIed8}v3vIbzS&z68II z`JF&42+>ww67Lw{tCn1c(2{$NA;6yipZy#u{BrG#+>gxhg5PhfF7M^I-}tU#nWJ3eF*rrzF*rn< zXycI>>~p1Ki1vngt)m)GE{kajb}t&Wa^%(UmAI$q5yt}Ur1VDZTN<3c7x?D#`PxUQ z-2ul(baze`70QTf(zaDB1iv-?V@EY9ytr_%UMQ{fEuB#Cwc}g50cQ7;r^xAaiA}G@ zHeIlZxlv;suf{qq+mN)7vsFrO6U`w~dYhC!M63;gwZ$~gs4ZXYoM+sGv0sOgJ6LBQ zvhaIrWBqYwp3RrG-nmxnY!Ew5VrPTcX)$gK-s5Z%YfWP9e&l-Exk=+OwMpXqfD*N#hgIO&X859a5JY#quVN&r3IHe0I7~E64n{Lu$7J zwOdSmZ9Ll#6u43QKCMw3Zs8mJjanV>KITSkk9(tQKTRsX*7Yq)ywRoU+zXn{ZFRTy zT*YF{HaEB*aP872l|SS9J#^l5?Gdl`h!6EPm&f7G(|eU_5{utnryD_?Wx;8XRMN zjrr;Kx=W20-4BA#XLN_ro=)Rq>9sGVMmI{YeJS;-rVW)@Y4yg1rIXyaYXE*mQ?c83 zqm+B2lsi(QZlsLddSgHzkMS8eS+vpiVZmbO+3*?bf7?AJx2K)08 z+4?1E3q9qcUoHC8qS>LhS8Vb;YWrL7pL;rOLvpSMz9?2P0#uV`oo~M1|*(Wu9RNqmOp8hC(miwyxQ97lp5u^Kc`}}mi%Pa)Eu=J+% zI%AN3XZn8IAphOzZvZ}=ehBcX^p60aN&gJ+mGnI5ypvvtyQd>#w%%4zkg-7DR5@Q; zz;#KVt#dpa(jUR;Ta)}s5>Fmbk@03;M;)ZcwhII`4#vVik5l% z3f>R!iTwU}->h$DfBcJXrw96Dz1aji38x(J>g)=^2a9wJq~8R_ zNUjOOpC$Z7!e1o(X5mMLf1%(T@mRhq|7ziE6U|$tlv_o5tHyn|Q}8=Q^Fh(vEjqh} zzgu*k7W_TozbE+n0`clQb>Sa{Tn{^j&i)%Z*T^og1k%3QB_b^oX_@dV1dbEVI16V_ zCJ5dL{x^X}!J7rH7tQs8Unp>!&ic0s|5oAb6!@g@cME^FaGn-;5T4A=J}92NC(`$X zZy4-ziNG>}V+4*fxOW-_t{1r7g53K%jC`6^@T3u=E!j^RT=!0qb{Z_*E%-r5U&=lx z(nG>IB+~Z;*KBNGv$4J*c&P=MQzrNrTMR#_F~-LB>x5G$`r`y|upsL<3f^Hs=ByWd zn~hs(yN$=`cHwLn3%3g1Df~_g=Ulr5e@`IUV>BU1b}pUlY{$R}T;EKaony5G(u;#7 zA}tgCIDw16?+h*yexq>O!TCPeE}Ra@yI%O)1;17B9rk>BHop^a7a*6?X%~M4KPaUi z66qn~91`h!g5zHhhrVXASBA-XON3J@c&W*D$^;)H{5rwwgg?&gjaXeI{08AS2)|MI z>xHw;jM0dkZ6>$Ft-^T{oLJ72!s(Q9cZ>de0?ENX7y?TiG5TFjiG%Z&I(S@^34aXu zKje%Nex2~g34amzV{;b?zrn$6(kT3P@Z-7d!e1|(ZQwkbyG=N^3a3-->_M(G3l2j1 zuiS$oJ?P-}A!m$6=aG{=DRHugrB3!|jNo;GFA}^#@OHsF1m7n3b_;TQJ}G#o1(~x4 zn%@Kt3g?gonNKb*t3+U_OG*^HPVfeS9RfE1eiPUx((S_8A)F_L(_{$wWm(<%5t z!4C;eS>k7ww5s5xS!`#F;B|s861+k1_AH*OI|V-^ki1;F=H*SL(Pep5u%4r(fb~njc{i^_IHkg=E8vbtXU_pL123?Zo>}2w+rkPcu@F<1lNk#lTv|WibTJN?Q9o# zNT7!Ap=3wJ zV5h*+-r`AbF1J(gLjtuj@fk-isITA+0y_k57uYG%LxOAN;*Y?(a`vY~;346hi1%Tx z!M6|h(VyvUvT0e``P#p=fPTC_S)Zvd(=X7k({Iy%r$4Rl*WcE^(o2k~#s=eI!^G!^ zm9{~)QMNg@2HOhT8rvq@OSb>mzPCrsE6r!j7tJrtagMEy?;SzsEa!6PgU;8SOI+W$ zmb_R?t%T1=x;0d@RK(gnch0_wC7ZK=~DoG|FrfYSh+ z>`)nCD^&pU>4J`LYWf0(@l=R^I~ivSI^KoC52E5pY#`t|JSXDKYCxUZ@h{l%=>Yy| zA-rM3Um>jrL_ES~K79h41^70z4Dd_fh4?o>$^icjya?ZqlmTXG74RhhyqJQ(ODG?B z2^9h_r4rz!)Ejtjss!E}zYtmh8`Z$e@XJIMcrG6Vyqtyruf#rN8Q>`3eP}H3J~SS9 zh$aIM(MiDj(lp?GX$J5rnh(5+767lNMZl|RG4L8X3wRAJ1wMcxzz0wp@PTw5@PYW3 z87pwg@*40_^g8g-^cL{ZIG3-$smr^-$IxNmHE5Ud==%lqE}fvw)b7?^&<<-O^;P;O zII8Vu3^E=!a&6;n7uu@rC)sD(SK4o~ziIcFezU}^F^8Cw%=zYG^IG!`^FH%c)9Hvg z?sIfH4m*Z9M?0@}-r)R?v&wa%YntmW*Hf-nT<^Q8+@su0?(Oc6-Cw(3PkSe=$W!4N z;aTZ9*K@b$A zH{fK9Pw&hWi}+0>{Pnc=2k+6mZKcfXnYTC2_Ilj}a8=`~!POso635{hfNLPGL6|WI;~Ii% zD6V0c1&+s6i+Nx;t`WFSz%>%riMU2VG8)$yKL5jC9?i$eEPorV(q2|tVWlA}9b=`F zt@Jc2ooA&@R(h6|F16BSNQcq}l(qpg+Fh8vev2{jFPtWh)3?x6{Z3k=Pon2={TWx# z_%n?&{z>;6U(kofzi>?=kL`OZu}z|Cq_s9fn-2VRTuX38ZCmh_hgbUpuFq^kwdd_$ z&|&)t+F^T#HpsCa*Ic^Gu|<2?u~YlPaVqeKv<&BNZIW}Rw#50Sb_=fOod47+vEO~F zYm0UZu8&(S+$(e~ZHv|~ZG}D)=>}Z8as80CU9a-2*M@nvXcypm4A-AL zZ)$q_I9h>gO?o~J^W@SOj$C>$J(nKGwZxfAFCl#s*I#iB^NgbtG9J>V;<^UcZMc4o z>+iS_0Q@&{)bNE1hb$a8fJWA@Y-ww0Xl*&ad2B+{6ADc&(N(Pt zYeo%SDEgynRXQ%bYR&BM^tPqV5qyQ;+_0i9x@KkLs3uFRapA)8D&x4;hG=xaLKHRX z2<9MRiYNcgkz?c@lE^)9C}UH?4NdH{qK+);*xX^q^6L0wF^4mAeE8gztte(L zEy@GGuBpjtHg*7vnawN0=QQ`^O=@oI$ynMDozWaw(GrcegjZS_k1hf2DFz#wW;dVL zHZc-j!KHIEgAGokp|Nd7B)lZj9F0mB4gAS29SHFRm8&k&xU}UQF~!_bQM4VWM|9GF zg~wnbbZF$th84|HB#lJrtHLXz39=22o!Zd4IzcyBMR5qx$W;w(ORap1SD$rObHpN) z|1`3(wWWDwo5gHxi6+qS>b6y@69gAwsYpcrNbjJy?!frzhB=l24(23Z{n$h@%&j&< zvRd?JHJsBtJA6_!yfV>60|zfc{&C@z=QKy8?^q~9WC#S)R=2h`EN*QET0dds>J`lq zi$aF8T9&MiG&jv|h%T=?x1puYlFR_FrLm!n^GE};0`R)VHUtqHn%UgYG<{|3nsMRQ z*5(A4o1i(udOSus&(!9&rQxQrt6N%?pxc;~Cb|iq+QOW(J`rTVr=U-eENO0ASl`yX zVjzv1RX&n?p*7st&>BURe_~P@ILK5b%gS#2tORpa z%1DFGILv!(%~Qt@8OTpIGUQDSZPKdKEG^Cn9BRLxe-kQfqA% zSD=+>c%bLEtg^(?!r-VToi({`(9mJrCSY;vSu^jHmX*sbF1Hkf+){&SwzSUR?gki4 z2(4j5614{MleLCCERFz?S%q^Vo{?}+@vJ+eVR`q+2V1)DoQ4(|z%yD`FKJmRUC0^X z*bwRtjf4+F|BDZhH(9mhCIQ)ErB=&<(;bt*(GL;1DFa6fDId6f#;%#h6EoTl5_V>& z<&0|7gg?Xni$9QaaqI(7=^mtQEp65i0nr#<*#Q7Irl zk$1>K$a|Cp8f&K(2`S)Kd$Hf3cv4Q51IE;F(`rmxgdZ)MGJfH->9ZG3oIYpTc$zhP z=7hSbDU4~;r%j;K>Sj)>pN7>cX5qS7!#F?UpQ`Z-Lz>F zrqG<3Q$($?Vdb1?^Z2RM5(Stu?c{0GPn!nqiPLG;nkZ)S{`J$lGtZedVP-;S;e?qp zr_byb&6qHAYW=KP_0y-#qN#P`7EYf_^l82XZozUG^KvpoVj!kuL2e> zr16+kh-VfwWn-eWAB76eBvhF@}Z{_;W#(~2`^;378GYoMh!AhOE<76nY@q$+om9<;R2emG7V|D7y9XCGh5y? zhpMw}L!SU{#o)tH#9acHS4j&GA=cIAE#^ssX@aTg6Gf4>xadN=SHBt?*?40W`<|se zKCjMAGnd;92BL;r@VIfR)7`B1mH$ja=rgZgx$<0n{Z+Vqsu{PaNxR-#7g%eieNV&H zovnEP8qcQv>*`xu!T#()Xg+;UsYlk6li5q4uiRTsoF2DriL(da(kMpRQ-x{hboU~A zv2&M-z@FaTCL<9NIlbKJva;RN86s*aswP^xSjUtQlkW%B-5^GnyW4}nv}&L7Gxb}0 zfR{g~pxYG3r&gqUeV<-@E)2xaQok1G>$j8jrF)*Wc`I32VrMezOqsN#^?K6Ml+SHi zwC`AuufqYFv7ld%gGpO%_xklVS}@Vq*CTEA|S$XDNkq*;cFb+wFdHGuHg^oD~z5Q^*%eR+ylG z+N@?Q;*!&X))KO!*@d|qUj(|a)?V!x^vKK3YoJ=PqjK}G+iI-`SY(;2>SpL`<%6lTUG1JI``hEt)d)SJ8V7)|7qa8oK6QW(O-y=EnSsaUbDOaI!_Hp<;y` zZne8}uHGea!In5->bNu8tv;5c*I$fV@dgyQ#dvLdgI=HOc5a#q8kIynC$3yE8iA0j z@KUO`P3Y!_eQIfQEpFiF7W%x}a*dEgOxQwjU5k+DB2zU2x}cdj$^{}c0n)N$w;?Ur zLuy*J(CfvUYptDCh5OlJwhyvwPpcASEB$zj*rBt%aV@P}t#{GRQ(g4nW~cjVT9LGR zzR8%|X*tuzJB_p`AxTPnG45*S?5$j8O)p1FWxaJ*sKh83T#Cdq+6vFdt@w+bJF;%5Xcgz| zB<1sx>{;8F#WkLeZ$N_&O4!?S<7T))$#%EpEw9}%Fdj(8h=>~q?hN5fcPC^Jk;+7{ zHW^L3ECC@bThIiA=9P!2h-F)Aqr;N$+9s}{%YG|!%k)>;;g)+$MPdb+#87Z{3X7|e0d&5IRaROgp1^-^ArqBYKAR0HoXIx5zn~x@ zlY@WZ#)H$It%f)@x&&#kQ}eb+>THR#s7P-s^d^PMy zYZEioV9%INkK0fJjul&-wXI91a8foBhe=&1)aXYm2Wy<>EW+vZPj$B2jkI(jMD8f+ z*{kOjSnjQp4Npr6G}%yS1U+Nvo2*ozub*ZT#A!)90u-4T)b(!Dk41TSG|DIT5kb!D zwtzwmMU!T{rK47e#X*-x_YNGB1GP85(QT>~0E+(LsDweh(#04si!8U&isLQECTk)C zMK@wjZbE_*)&UK-}=W_p5?#!gxeMlSVHomInI$1zQv*#TiaD z#ww&1XK&)!+_Iu$=a+|;%q$Eu`IWeJHIucZkOaG9`E6lBGj`uaqSVw&E+*XQk$Xsz zUd$GUdNGHj(EGhZZ(5mjvan7XN{Qcl>zY+t*yg^HPufb|=BG~y3oEyHgWwRw(gNRV z_bb!BNER+=d5S1(1Q>!O&C&^!ncG$xTUZw|CF~~Ijk;3vnj(DKrPuGufh1F6v02|} zcd%vaz0sl|5wbV%LE>R(Ui@q$?Ry*DTI|_^u%>%Uy^;h?^fp)Pl@V!ovBnAINwutl z77P-WtaVrpU^f&b^z8Os_STcBfDibaR7*}v++0vP@cqh#zCu)$z*5?dwn@Cu_t`(O zA>tYLY^-QE!z*DY#R67M9N)QCxYm&tYCR`gc&6DVAnv*34oTdwJAN*``6t4B88pje z`plZ{U?mJ%A*?1u*qJ}s-P!76^y*vJcIMA@o12X725?Crui&>wIKryMPkNZ9-N!Bl zzvpcJTB@$>XP$ZL%9Z}LCJmbF-A=D_RV&CwyucDC?ScrXOgoZ*#MB+#1a* z!Wp&LpWacRW8$$TfKlhQCx~~~ttl-7#Nbg3vAbV8$I+WlLj*61Y<^cnF`6A&m@ri4 zX>j#Dc7?V2)~!tW@ZK(?;e9$IHovx_n zU@Akr=lr6S4@*IFlZswv>!*o|a6a z+tvpJ_2Ekw$#sKc4SPCl7UE?!c|(f$Dx}yRQx*JOXPi#!gs_2m(hi9D=+Gxag(p5# zH~enrSeY$0Y`--CUGaxaTv*F^+pAq()6=C^Z0V7cTkRx8QoZw?PCv=Bsbio^?HkQ* zr#(WEXs}5v_-LQ@tH%)InpV2S=S+~Hp1n!uZ^N+V((SW>)$praWrCGswYAkD8yGMT z@6wEfX9ertW$C6h!JS z)+2|YzF^kFRSaVP+tgE6pZ{dzOP6izd-7Z&^qnQk(-q001A)pN_$xvv9PU%X_Y^lB&(l7jq{c+&wt@Vj#ql|xn`eT`{adHlmN=-x(>z`KJPy6+ykdM1--$E z%RX;X>{DCg#I~DV;yiSh8X}XVCjT6@FK}+#70%e_=j?M;pFcg%dCf&mTle{Yl2hO@ zC#gGpPePZzlz!5=Il-KzjCo|APx1t@`nK9f_tvH~7{syr_i>K1m4#tKbaj^kR%eg1+-Ezs@2y_@1e&!X<$zSCEMec83hO)H2=B}E| z^j@8-(AlD0&AsB>Nx@yC?;h7RN;R$;xoxE5<*)6+ zr|%c7&+*aRwcmxGwBJ+~q1P9dp|okTt3zGW{ZgQ49e%bMK_`q-`INtYwBodQAh|Mv zscWQLNZ;{>+iSqzqCN+{Gr}2G;Ali3~4?ucF7P3`m7Cfhr`)@ z2-TpTMBy~R9_h;nM?>5MhkL=NI;5q(8t^!^sgmE1Qa9yW!~A25CO)yh4#g6fCf{EC zz!r$@oqJkJB4edVlL#y2k_+|7H9kbWTc~m5eVslf3O}XBd7dg# z2fkAfD4T?F{xj86h&W0GVZ5Nf=3#{Vgn9q zj91BbnU3z#e%N9ng&1jSa%hT!A2rF;Ovfl~OZ@vhIORj6Gong7Szv4%K&T)2_ZnKK)COr@aQe!A zy}bW1C%wy1o(HeIu5{N%JvAENgI?nDv`wUt%nSFRWROr_!^iJXD}I~?ZVhN}4yBXs zftM+hmy;(UpFiQ;0l~GwaEq_}Td;ADd!=z{$(p$Q6n>({lQ%V&`{|Ql%X-p8Yo!z0 z)|*?-#sVvp?jJ=Y67h3+yx*GV$Fo^X`|&-&v0KYRduFxb8CjNXI3NuYb>k7z`=u~8 zm*X|Uqy=^3nC?yCp7v8U9NsgcX)1Ahu6_Y|avsg*j&FpSQnGiobjXNF>5EFb-3*qqwWgf>P1L7WBvIU$B#JZUiuOMz}5hs2DBj}!x zIZ7u~s$ie9`WlbSy@EPCiTH4&ANHKch6Fws@X+(%k{fWhb7!jWef!ASfA{U?|9Shr zKlrb;0?kd-a=B80kIE4x%a;7CeJ<;hw+QNUvv{OB_`Te$)AenxlSRIAJBlWcR9}k9 z4+9hN(C<-Q-B`jNyEye$y#of>gkyr1(i$H;nyanb4M*-xpdT# z&lhviL@`%w6?lev@Rj26TrM|rlyBChNafciD1S}aYZEnBZCb~P3}mkrj5(Lnn>eL0ocK>P81n2 zEQ!jDraHVMYUrs{oP_cG@fbd&iq@#|coc~b!yf<|ahWPc)z5nsleE8N7{6rQeA&`p zo+(aPeMwCHi|9~Uve9*_h^h>J4YiXh>zbdeycSKC^OI=sWNB(TsrQhB0O_w9^-)*y z!$-9ZSXDE8Vb9=Bb?{eFR2lqDhOm&fBFzJB_dO&hoep-8$L>t>fql;$a{Dx0*1y>?%@wS1ZaRvFPE5S zku`hzzzi==3^k_je`23c7}LIPO#8Z}e?y%5j2F&4o0k6Gw845w z2>g3i{9Ob2uBG3w^c$9b%hGRI`umptJ_h6*Gv~o#9%;zHj9=iiFBS)fKk|PEXL5Ns zE|&28vWY+~Jq{Ts+GH+`KZj0MhJRt=y=>yGo|Y!58B?x^*e_Rxf0duaa%y7z&14O9!^?vCePCulWrDkG z!k`xoQ8iexPz3k`yPzJKNff~Y9hHtqyw>Dst~d>UE}ONE!0B6Gjx;SVqeZ#71kx2; z?&0d?a*=_b%T>Q%pA8#d^$Y&eFwOW|G6Il#VE{awM)7+TPBX17nRtXzk=Prc8oIun zt2Ro~Xz{O5#HvZ#tHTo>1*(lv#>A9NEB>r1K&Wpr`MGSOhhVX*@|ohPTArr(lgL{B zrG5T2a=mTNAOlHHFoa^jHF^HmIHJR3FKKFInnZ`qM^UJ$X8_Ek8R=RU>_ZsRGE?BU zc9oAqMKcIM;~L3ecAqwwKWsDBVK$m6PRedw&s7gsuT{3II}+nzar0|j#ZBt)!5(D# zcofM=&K%86Pmh{OY^9Rg;1wR8lq1E|O?ziw-I*@(J${2cQ*Pt?JGp>7{xmdwU8_`ZQ(&0tc@j2z?5;Ts&|PA1POf9o&|~E79kn3Il>q*YPKn z!8_GkbjsWq{P2Mqd5`>7Q%C(a67TAT zSVmG;a|KDkcPN+M5-?vWQ?Jv;Db2w$AyKF+d(E{{c{&WWEW{*|8MXepT8{&M{R61jSQp0))BTiHY-!=JEZZ98FJf&-G!q`{2eWr5zrG(Gl zJrJhz;0^Ot*vo^kez=r77|iUZbO99A;dQ&*zL2zijJ=7UxNVQ%WuOPCAuX#(1{g+DN9m>I(SX(psu!|s$pe_E(RnJu0Z=&>~pBX;Si|O8_!<(x0N4Gf4cPc zznT5JA3X6VFO~k|Fa5&Bho1UVUU<#VL{1-(K3KiE2^CJzu{(b6J&5t$3++dI?A{I1 z?F|7>`kf1GF&7LP3D3Axml}Y+GK(t;54TXPhe!fG9`xFVp_Pqp^w+){453# z#G3-QMIlu`^lj$~g8L(NDE}p}ccMvMhdDvWBZbO?qK2=~9=R2=M@F6AQSF@CJ!T$P z>l4WS3>+yl&7s0rAzadMs`_g2DRuuJ$Tbgm;tUGD(V%PuU}gmKp9H<2)PEKZ4Cizh z+;AZorDz!ZDLEgGs>O9s|3Wl*NT{TZg7~pA(q(1-OeEvxB|mwvf`!5o9##mNm10BJ z$SPS00!6>7htYn;dPF2qnb30*pUi8@idqno7f4fOtN>6Ck4VwX;H%Zaua|jMn>V)v zWrJ^&m=}ZJtPZ|C1y0W(TWd$eXXP@521|@DxI5*8L{C1(yQ8v5J0bK}d3;)s&{rM& z=x}hv!89XVBzw^1t4)RN$eMTQ5tP`9dzwK+R2+2*EDSXxAz~ohWeE(`1YwUNS)Y1> zOh{1%P1HW&FIqELdlq5I5RD?KBrt#;B-az=I#rJ`a0fchDXM zOyx2f#M|>I%FMd5Tzqx-6}ZgojY6;N(GkqPiPnfpQj;uyN{6&D1Am^DZXG;O%U6dl zRZmxk7Xpzll@u6{Nt|7e>CwpJR$LL zsbsZ`I3yaB=J_ub9v7K>Uz|5uNA*?HtI@xBnNyQ5W=_QGVXvFL9B@UO8&Bul2j*W~ zTGc~zoF4kvMgOeUXK#FB{x}HAhewZrab`&`ma+#6t9%LC*kL@r<%;7n_I#LgeA`Iz z#Qbsn`f|%~GcCsp0^LV*?y<499KY1j=VNh((cl9*54 zuPu_zK1N}U^$I5Ub2<03yBgbh)%jfy4IJ}teA)BD9`|g{efs?&;OtoT0k9yjlR5Xy zzU_Ts@?1jbf7h{I;dsjNN=o~`JhAO_Ar=d>pfovTn zR_{oCAKC3`nhadc7Dn%h`$x3>IQJZRhv~kf4u^8XbH5qg+m{MP@B(i@{fA-l$Ck4r zx|nk>jpMQ--7-l!)|fm=5S|M;#@kSiy^r^PxPN-IdRK^xbM6a28MWiD_2V6U_avhehVq;h@veoYl_Dd=%|Vmy@;7PA1H4>y$34aLL4)z;2sdl8y>6pEZqCFth_r>l;S{?#Yn#$)5s zZRjpgI%SYje0O?BH_dtPYXlCRy4kSS8vPdI7WXzd^T0tmQ_IuV*V#}m&Z@73R^{xh z&^>sR_UZY24qP2>-s{XtKSTAs`Fxy-mZO(!+ufW>`Q&)>ta!QrA9W^W6G{7%YjV=P;K4KZc)_1Ah-jG~Let diff --git a/CMD_Utils/Random.cs b/CMD_Utils/Random.cs index 2cbc564..7a93e0d 100644 --- a/CMD_Utils/Random.cs +++ b/CMD_Utils/Random.cs @@ -24,9 +24,9 @@ public class Random : DBCommand if (a > b) { - var x = a; - a = b; - b = x; + var temp = a; + a = b; + b = temp; } await message.Channel.SendMessageAsync("Your random generated number is " + new System.Random().Next(a, b)); diff --git a/DiscordBot/DiscordBot.csproj b/DiscordBot/DiscordBot.csproj index f83d305..a46dc9d 100644 --- a/DiscordBot/DiscordBot.csproj +++ b/DiscordBot/DiscordBot.csproj @@ -37,7 +37,7 @@ - + diff --git a/PluginManager/Items/Command.cs b/PluginManager/Items/Command.cs index 12c67c3..ea8078b 100644 --- a/PluginManager/Items/Command.cs +++ b/PluginManager/Items/Command.cs @@ -42,4 +42,12 @@ internal class Command /// The prefix that is used for the command /// public char PrefixUsed { get; } +} + +public class ConsoleCommand +{ + public string CommandName { get; set; } + public string Description { get; set; } + public string Usage { get; set; } + public Action Action { get; set; } } \ No newline at end of file diff --git a/PluginManager/Items/ConsoleCommandsHandler.cs b/PluginManager/Items/ConsoleCommandsHandler.cs index 0636030..072161a 100644 --- a/PluginManager/Items/ConsoleCommandsHandler.cs +++ b/PluginManager/Items/ConsoleCommandsHandler.cs @@ -14,10 +14,9 @@ namespace PluginManager.Items; public class ConsoleCommandsHandler { - private static readonly PluginsManager manager = new("https://sethdiscordbot.000webhostapp.com/Storage/Discord%20Bot/Plugins"); - - public static List>> commandList = new(); - private readonly DiscordSocketClient? client; + private static readonly PluginsManager manager = new PluginsManager("https://sethdiscordbot.000webhostapp.com/Storage/Discord%20Bot/Plugins"); + public static List commandList = new List(); + private readonly DiscordSocketClient? client; public ConsoleCommandsHandler(DiscordSocketClient client) { @@ -31,19 +30,33 @@ public class ConsoleCommandsHandler var pluginsLoaded = false; commandList.Clear(); - AddCommand("help", "Show help", args => + AddCommand("help", "Show help", "help ", args => { if (args.Length <= 1) { Console.WriteLine("Available commands:"); - foreach (var command in commandList) Console.WriteLine("\t" + command.Item1 + " - " + command.Item2); + List items = new List(); + items.Add(new [] {"-", "-", "-"}); + items.Add(new [] {"Command", "Description", "Usage"}); + items.Add(new[] {" ", " ", "Argument type: [required]"}); + items.Add(new [] {"-", "-", "-"}); + + foreach (var command in commandList) + { + var pa = from p in command.Action.Method.GetParameters() + where p.Name != null select p.ParameterType.FullName; + items.Add(new[] { command.CommandName, command.Description, command.Usage }); + } + items.Add(new [] {"-", "-", "-"}); + Console_Utilities.FormatAndAlignTable(items); } else { foreach (var command in commandList) - if (command.Item1 == args[1]) + if (command.CommandName == args[1]) { - Console.WriteLine(command.Item2); + Console.WriteLine(command.Description); + Console.WriteLine(command.Usage); return; } @@ -83,7 +96,7 @@ public class ConsoleCommandsHandler AddCommand("listplugs", "list available plugins", async () => { await manager.ListAvailablePlugins(); }); - AddCommand("dwplug", "download plugin", async args => + AddCommand("dwplug", "download plugin", "dwplug [name]", async args => { if (args.Length == 1) { @@ -178,7 +191,7 @@ public class ConsoleCommandsHandler ); - AddCommand("value", "read value from VariableStack", args => + AddCommand("value", "read value from VariableStack", "value [key]",args => { if (args.Length != 2) return; if (!Config.ContainsKey(args[1])) return; @@ -188,7 +201,7 @@ public class ConsoleCommandsHandler } ); - AddCommand("add", "add variable to the system variables\nadd [key] [value] [isReadOnly=true/false]", args => + AddCommand("add", "add variable to the system variables","add [key] [value] [isReadOnly=true/false]", args => { if (args.Length < 4) return; var key = args[1]; @@ -223,7 +236,7 @@ public class ConsoleCommandsHandler } ); - AddCommand("remv", "remove variable from system variables", args => + AddCommand("remv", "remove variable from system variables", "remv [key]", args => { if (args.Length < 2) return; Config.RemoveKey(args[1]); @@ -237,7 +250,7 @@ public class ConsoleCommandsHandler data.Add(new[] { "-", "-" }); data.Add(new[] { "Key", "Value" }); data.Add(new[] { "-", "-" }); - foreach (var kvp in d) data.Add(new string[] { kvp.Key, kvp.Value.ToString()! }); + foreach (var kvp in d) data.Add(new[] { kvp.Key, kvp.Value.ToString()! }); data.Add(new[] { "-", "-" }); Console_Utilities.FormatAndAlignTable(data); } @@ -252,23 +265,31 @@ public class ConsoleCommandsHandler Environment.Exit(0); } ); + //Sort the commands by name + commandList.Sort((x, y) => x.CommandName.CompareTo(y.CommandName)); } - public static void AddCommand(string command, string description, Action action) + public static void AddCommand(string command, string description, string usage, Action action) { - commandList.Add(new Tuple>(command, description, action)); + commandList.Add(new ConsoleCommand + { + CommandName = command, + Description = description, + Action = action, + Usage = usage + }); Console.ForegroundColor = ConsoleColor.White; Console_Utilities.WriteColorText($"Command &r{command} &cadded to the list of commands"); } public static void AddCommand(string command, string description, Action action) { - AddCommand(command, description, args => action()); + AddCommand(command, description, command, args => action()); } public static void RemoveCommand(string command) { - commandList.RemoveAll(x => x.Item1 == command); + commandList.RemoveAll(x => x.CommandName == command); } public static bool CommandExists(string command) @@ -276,17 +297,17 @@ public class ConsoleCommandsHandler return !(GetCommand(command) is null); } - public static Tuple>? GetCommand(string command) + public static ConsoleCommand? GetCommand(string command) { - return commandList.FirstOrDefault(t => t.Item1 == command); + return commandList.FirstOrDefault(t => t.CommandName == command); } public void HandleCommand(string command) { var args = command.Split(' '); foreach (var item in commandList.ToList()) - if (item.Item1 == args[0]) - item.Item3(args); - //Console.WriteLine($"Executing: {args[0]} with the following parameters: {args.MergeStrings(1)}"); + if (item.CommandName == args[0]) + item.Action(args); + //Console.WriteLine($"Executing: {args[0]} with the following parameters: {args.MergeStrings(1)}"); } } diff --git a/PluginManager/Others/Functions.cs b/PluginManager/Others/Functions.cs index 0f3c5fc..c1df251 100644 --- a/PluginManager/Others/Functions.cs +++ b/PluginManager/Others/Functions.cs @@ -260,6 +260,35 @@ namespace PluginManager.Others return (obj ?? default)!; } + /// + /// Check if all words from are in
+ /// This function returns true if
+ /// 1. The is part of
+ /// 2. The words (split by a space) of are located (separately) in
+ /// + /// The following example will return
+ /// STRContains("Hello World !", "I type word Hello and then i typed word World !")
+ /// The following example will return
+ /// STRContains("Hello World !", "I typed Hello World !"
+ /// The following example will return
+ /// STRContains("Hello World", "I type World then Hello")
+ /// The following example will return
+ /// STRContains("Hello World !", "I typed Hello World")
+ ///
+ ///
+ /// The string you are checking + /// The main string that should contain + /// + public static bool STRContains(this string str, string baseString) + { + if (baseString.Contains(str)) return true; + string[] array = str.Split(' '); + foreach (var s in array) + if (!baseString.Contains(s)) + return false; + return true; + } + public static bool TryReadValueFromJson(string input, string codeName, out JsonElement element) { Stream text; diff --git a/PluginManager/PluginManager.csproj b/PluginManager/PluginManager.csproj index 7eafd1b..94853b4 100644 --- a/PluginManager/PluginManager.csproj +++ b/PluginManager/PluginManager.csproj @@ -16,7 +16,7 @@ - + From 19115a837ce74e16be9bda9d581ba678572b1658 Mon Sep 17 00:00:00 2001 From: Wizzy69 Date: Tue, 5 Jul 2022 17:17:44 +0300 Subject: [PATCH 5/9] Due to buggy code the GUI was removed from the bot --- BUILDS/net6.0/PluginManager.dll | Bin 61952 -> 63488 bytes DiscordBotGUI/.gitignore | 454 ------------------ DiscordBotGUI/App.axaml | 7 - DiscordBotGUI/App.axaml.cs | 21 - DiscordBotGUI/AppUpdater.axaml | 17 - DiscordBotGUI/AppUpdater.axaml.cs | 170 ------- DiscordBotGUI/DiscordBotGUI.csproj | 40 -- DiscordBotGUI/MainWindow.axaml | 39 -- DiscordBotGUI/MainWindow.axaml.cs | 86 ---- DiscordBotGUI/Program.cs | 25 - .../Settings/ApplicationVariables.axaml | 23 - .../Settings/ApplicationVariables.axaml.cs | 41 -- DiscordBotGUI/Settings/Commands.axaml | 24 - DiscordBotGUI/Settings/Commands.axaml.cs | 136 ------ DiscordBotGUI/Settings/Events.axaml | 23 - DiscordBotGUI/Settings/Events.axaml.cs | 135 ------ DiscordBotWithAPI.sln | 10 +- 17 files changed, 2 insertions(+), 1249 deletions(-) delete mode 100644 DiscordBotGUI/.gitignore delete mode 100644 DiscordBotGUI/App.axaml delete mode 100644 DiscordBotGUI/App.axaml.cs delete mode 100644 DiscordBotGUI/AppUpdater.axaml delete mode 100644 DiscordBotGUI/AppUpdater.axaml.cs delete mode 100644 DiscordBotGUI/DiscordBotGUI.csproj delete mode 100644 DiscordBotGUI/MainWindow.axaml delete mode 100644 DiscordBotGUI/MainWindow.axaml.cs delete mode 100644 DiscordBotGUI/Program.cs delete mode 100644 DiscordBotGUI/Settings/ApplicationVariables.axaml delete mode 100644 DiscordBotGUI/Settings/ApplicationVariables.axaml.cs delete mode 100644 DiscordBotGUI/Settings/Commands.axaml delete mode 100644 DiscordBotGUI/Settings/Commands.axaml.cs delete mode 100644 DiscordBotGUI/Settings/Events.axaml delete mode 100644 DiscordBotGUI/Settings/Events.axaml.cs diff --git a/BUILDS/net6.0/PluginManager.dll b/BUILDS/net6.0/PluginManager.dll index 809d3de8e262e74c50112fbea1b01a0bb99acac0..8c7315b10e15cbba6ad78144ae03c653bb0d0f1e 100644 GIT binary patch literal 63488 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 W|AimE1(0EUz;Wll{rUfo1OE&0!!euy literal 61952 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 Q`1yYhWBHdc{HPrGM=!iJn*aa+ diff --git a/DiscordBotGUI/.gitignore b/DiscordBotGUI/.gitignore deleted file mode 100644 index 8afdcb6..0000000 --- a/DiscordBotGUI/.gitignore +++ /dev/null @@ -1,454 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# Tye -.tye/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -## -## Visual studio for Mac -## - - -# globs -Makefile.in -*.userprefs -*.usertasks -config.make -config.status -aclocal.m4 -install-sh -autom4te.cache/ -*.tar.gz -tarballs/ -test-results/ - -# Mac bundle stuff -*.dmg -*.app - -# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# JetBrains Rider -.idea/ -*.sln.iml - -## -## Visual Studio Code -## -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json diff --git a/DiscordBotGUI/App.axaml b/DiscordBotGUI/App.axaml deleted file mode 100644 index 49aa2e5..0000000 --- a/DiscordBotGUI/App.axaml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/DiscordBotGUI/App.axaml.cs b/DiscordBotGUI/App.axaml.cs deleted file mode 100644 index 983b886..0000000 --- a/DiscordBotGUI/App.axaml.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Avalonia; -using Avalonia.Controls; -using Avalonia.Controls.ApplicationLifetimes; -using Avalonia.Markup.Xaml; - -namespace DiscordBotGUI; - -public class App : Application -{ - public override void Initialize() - { - AvaloniaXamlLoader.Load(this); - } - - public override void OnFrameworkInitializationCompleted() - { - if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) desktop.MainWindow = new AppUpdater { Width = 300, Height = 50, WindowStartupLocation = WindowStartupLocation.CenterScreen }; - - base.OnFrameworkInitializationCompleted(); - } -} diff --git a/DiscordBotGUI/AppUpdater.axaml b/DiscordBotGUI/AppUpdater.axaml deleted file mode 100644 index 939c0d6..0000000 --- a/DiscordBotGUI/AppUpdater.axaml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/DiscordBotGUI/AppUpdater.axaml.cs b/DiscordBotGUI/AppUpdater.axaml.cs deleted file mode 100644 index fcf519f..0000000 --- a/DiscordBotGUI/AppUpdater.axaml.cs +++ /dev/null @@ -1,170 +0,0 @@ -using Avalonia.Controls; -using PluginManager.Online; -using PluginManager.Others; -using System.Threading.Tasks; -using System; -using System.IO; -using System.Threading; -using PluginManager; - -namespace DiscordBotGUI -{ - public partial class AppUpdater : Window - { - private string _version = ""; - - public AppUpdater() - { - InitializeComponent(); - Config.LoadConfig().Wait(); - if (!File.Exists("./Version.txt")) - { - File.WriteAllText("./Version.txt", "DiscordBotVersion=0"); - DownloadDiscordBotClientNoGUIAsDLL(); - } - - if (!File.Exists("./DiscordBot.exe")) DownloadDiscordBotClientNoGUIAsDLL(); - Updates(); - } - - private async void DownloadDiscordBotClientNoGUIAsDLL() - { - //await Task.Delay(5000); - string url_bot_dll = "https://sethdiscordbot.000webhostapp.com/Storage/Discord%20Bot/Updates/DiscordBot.zip"; - int actiontype = 0; //0 - downolad, 1- extract - IProgress progress = new Progress((percent) => - { - if (actiontype == 0) - textBox1.Text = "Downloading DiscordBot ... " + MathF.Round(percent, 2) + "%"; - else - textBox1.Text = "Extracting package ..." + MathF.Round(percent, 2) + "%"; - this.progressBar1.Value = percent; - }); - - this.progressBar1.IsIndeterminate = false; - try - { - await ServerCom.DownloadFileAsync(url_bot_dll, "./DiscordBot.zip", progress); - - actiontype++; - - await Functions.ExtractArchive("./DiscordBot.zip", "./", progress); - } - catch - { - textBox1.Text = "Error downloading DiscordBot.dll. Server is not responding."; - - await Task.Delay(1000); - - new MainWindow() { Height = 425, Width = 500 }.Show(); - Close(); - } - } - - private async void Updates() - { - this.progressBar1.IsIndeterminate = true; - await Task.Delay(1000); - if (!await CheckForUpdates()) - { - //await Task.Delay(5000); - textBox1.Text = $"You are running on the latest version ({_version}) !"; - await Task.Delay(2000); - new MainWindow() { Height = 425, Width = 650 }.Show(); - this.Close(); - return; - } - - string file = await DownloadNewUpdate(); - if (file == null) - { - textBox1.Text = "There was an error while downloading the update !"; - await Task.Delay(2000); - new MainWindow() { Height = 425, Width = 650 }.Show(); - this.Close(); - return; - } - - IProgress progress = new Progress((percent) => { this.progressBar1.Value = percent; }); - - textBox1.Text = "Extracting update files ..."; - await Functions.ExtractArchive(file, "./", progress); - progressBar1.IsIndeterminate = true; - textBox1.Text = "Setting up the new version ..."; - File.Delete(file); - File.WriteAllText("./Version.txt", "DiscordBotVersion=" + _version); - await Task.Delay(5000); - new MainWindow() { Height = 425, Width = 650 }.Show(); - this.Close(); - } - - private async Task DownloadNewUpdate() - { - string urlNewUpdateZip = (await ServerCom.ReadTextFromFile("https://sethdiscordbot.000webhostapp.com/Storage/Discord%20Bot/Updates/Version"))[1]; - int secondsPast = 0; - - bool isDownloading = true; - this.progressBar1.IsIndeterminate = true; - textBox1.Text = "Downloading update ..."; - - - IProgress downloaded = new Progress((bytes) => - { - (double, string) download = Functions.ConvertBytes(bytes); - textBox1.Text = $"Downloading update ... {Math.Round(download.Item1 / secondsPast, 2)} {download.Item2}/s"; - }); - IProgress progress = new Progress((percent) => - { - progressBar1.IsIndeterminate = false; - this.progressBar1.Value = percent; - }); - - - string FileName = $"{urlNewUpdateZip.Split('/')[urlNewUpdateZip.Split('/').Length - 1]}"; - try - { - new Thread(new Task(() => - { - while (isDownloading) - { - Thread.Sleep(1000); - secondsPast++; - } - }).Start).Start(); - await ServerCom.DownloadFileAsync(urlNewUpdateZip, FileName, progress, downloaded); - } - catch - { - textBox1.Text = "Error downloading the update. Server is not responding."; - isDownloading = false; - await Task.Delay(1000); - return null; - } - - isDownloading = false; - return FileName; - } - - private async Task CheckForUpdates() - { - try - { - string current_version = Config.GetValue("Version"); - if (current_version == null) - if (!Config.SetValue("Version", "0")) - Config.AddValueToVariables("Version", "0", false); - string latest_version = (await ServerCom.ReadTextFromFile("https://sethdiscordbot.000webhostapp.com/Storage/Discord%20Bot/Updates/Version"))[0]; - _version = latest_version; - if (current_version != latest_version) { return true; } - - return false; - } - catch (Exception ex) - { - textBox1.Text = "Error while checking for updates. Server is not responding."; - Functions.WriteErrFile(ex.Message); - return false; - } - } - } -} diff --git a/DiscordBotGUI/DiscordBotGUI.csproj b/DiscordBotGUI/DiscordBotGUI.csproj deleted file mode 100644 index 568b686..0000000 --- a/DiscordBotGUI/DiscordBotGUI.csproj +++ /dev/null @@ -1,40 +0,0 @@ - - - WinExe - net6.0 - enable - - copyused - true - ..\BUILDS\DiscordBotUI\ - - - False - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DiscordBotGUI/MainWindow.axaml b/DiscordBotGUI/MainWindow.axaml deleted file mode 100644 index c011ce7..0000000 --- a/DiscordBotGUI/MainWindow.axaml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - -