From b57e1329125d72dbbc2f5638f7d0f5c9443f705a Mon Sep 17 00:00:00 2001 From: Wizzy69 Date: Fri, 8 Apr 2022 18:47:39 +0300 Subject: [PATCH] --- BUILDS/net5.0/CMD_Utils.dll | Bin 11776 -> 11776 bytes BUILDS/net5.0/PluginManager.dll | Bin 37376 -> 38400 bytes CMD_LevelingSystem/CMD_LevelingSystem.csproj | 4 +- CMD_Utils/CMD_Utils.csproj | 2 +- DiscordBot/Discord/Commands/Help.cs | 86 ++++++++++++------- DiscordBot/Discord/Core/Boot.cs | 4 +- DiscordBot/DiscordBot.csproj | 2 +- DiscordBot/Program.cs | 36 +++++--- EVE_LevelingSystem/EVE_LevelingSystem.csproj | 2 +- PluginManager/Items/Command.cs | 43 ++++++++++ PluginManager/Others/Functions.cs | 18 +++- StartupEvents/StartupEvents.csproj | 2 +- 12 files changed, 145 insertions(+), 54 deletions(-) create mode 100644 PluginManager/Items/Command.cs diff --git a/BUILDS/net5.0/CMD_Utils.dll b/BUILDS/net5.0/CMD_Utils.dll index 0980936eff8c316b6711690cc34ede930f2c3f9e..6811276d54816fc28bd8805064f995d553b176d3 100644 GIT binary patch delta 248 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 diff --git a/CMD_LevelingSystem/CMD_LevelingSystem.csproj b/CMD_LevelingSystem/CMD_LevelingSystem.csproj index 8495526..ac6b96b 100644 --- a/CMD_LevelingSystem/CMD_LevelingSystem.csproj +++ b/CMD_LevelingSystem/CMD_LevelingSystem.csproj @@ -5,11 +5,13 @@ - E:\DiscordBot\BUILDS\ + ..\BUILDS\ DEBUG;TRACE prompt none false + false + diff --git a/CMD_Utils/CMD_Utils.csproj b/CMD_Utils/CMD_Utils.csproj index 6d89c4e..449a275 100644 --- a/CMD_Utils/CMD_Utils.csproj +++ b/CMD_Utils/CMD_Utils.csproj @@ -5,7 +5,7 @@ - E:\DiscordBot\BUILDS\ + ..\BUILDS\ diff --git a/DiscordBot/Discord/Commands/Help.cs b/DiscordBot/Discord/Commands/Help.cs index 92f4b25..429342d 100644 --- a/DiscordBot/Discord/Commands/Help.cs +++ b/DiscordBot/Discord/Commands/Help.cs @@ -1,9 +1,13 @@ -using Discord.Commands; +using Discord; +using Discord.Commands; using Discord.WebSocket; using PluginManager.Loaders; using PluginManager.Interfaces; using PluginManager.Others.Permissions; +using PluginManager.Others; + +using System.Collections.Generic; namespace PluginManager.Commands { @@ -22,43 +26,59 @@ namespace PluginManager.Commands public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM) { + List args = Functions.GetArguments(message); + if (args.Count != 0) + { + + foreach (var item in args) + { + bool commandExists = false; + var e = GenerateHelpCommand(item); + if (e != null) + { + commandExists = true; + context.Channel.SendMessageAsync(embed: e.Build()); + } + if (!commandExists) + context.Channel.SendMessageAsync("Unknown Command " + item); + } + return; + } + bool isAdmin = ((SocketGuildUser)message.Author).isAdmin(); - if (isAdmin) + Discord.EmbedBuilder embedBuilder = new Discord.EmbedBuilder(); + + string adminCommands = ""; + string normalCommands = ""; + string DMCommands = ""; + + foreach (var cmd in PluginLoader.Plugins!) { - if (isDM) - { - foreach (DBCommand p in PluginLoader.Plugins!) - if (p.canUseDM) - if (p.requireAdmin) - context.Channel.SendMessageAsync("[ADMIN] " + p.Usage + "\t" + p.Description); - else context.Channel.SendMessageAsync(p.Usage + "\t" + p.Description); - } - else - { - foreach (DBCommand p in PluginLoader.Plugins!) - if (p.canUseServer) - if (p.requireAdmin) - context.Channel.SendMessageAsync("[ADMIN] " + p.Usage + "\t" + p.Description); - else context.Channel.SendMessageAsync(p.Usage + "\t" + p.Description); - } - } - else - { - if (isDM) - { - foreach (DBCommand p in PluginLoader.Plugins!) - if (p.canUseDM && !p.requireAdmin) - context.Channel.SendMessageAsync(p.Usage + "\t" + p.Description); - } - else - { - foreach (DBCommand p in PluginLoader.Plugins!) - if (p.canUseServer && !p.requireAdmin) - context.Channel.SendMessageAsync(p.Usage + "\t" + p.Description); - } + if (cmd.canUseDM) + DMCommands += cmd.Command + " "; + if (cmd.requireAdmin) + adminCommands += cmd.Command + " "; + else normalCommands += cmd.Command + " "; } + embedBuilder.AddField("Admin Commands", adminCommands); + embedBuilder.AddField("Normal Commands", normalCommands); + embedBuilder.AddField("DM Commands", DMCommands); + context.Channel.SendMessageAsync(embed: embedBuilder.Build()); } + + private EmbedBuilder GenerateHelpCommand(string command) + { + EmbedBuilder embedBuilder = new EmbedBuilder(); + DBCommand cmd = PluginLoader.Plugins.Find(p => p.Command == command); + if (cmd == null) + return null; + + embedBuilder.AddField("Usage", cmd.Usage); + embedBuilder.AddField("Description", cmd.Description); + + return embedBuilder; + } } } \ No newline at end of file diff --git a/DiscordBot/Discord/Core/Boot.cs b/DiscordBot/Discord/Core/Boot.cs index 0e47f34..08128d3 100644 --- a/DiscordBot/Discord/Core/Boot.cs +++ b/DiscordBot/Discord/Core/Boot.cs @@ -11,8 +11,8 @@ namespace PluginManager.Core { internal class Boot { - private readonly string botPrefix; - private readonly string botToken; + public readonly string botPrefix; + public readonly string botToken; private bool isReady = false; diff --git a/DiscordBot/DiscordBot.csproj b/DiscordBot/DiscordBot.csproj index 46319c7..89fc3d9 100644 --- a/DiscordBot/DiscordBot.csproj +++ b/DiscordBot/DiscordBot.csproj @@ -3,7 +3,7 @@ Exe net5.0 - enable + disable diff --git a/DiscordBot/Program.cs b/DiscordBot/Program.cs index 04f4853..d824150 100644 --- a/DiscordBot/Program.cs +++ b/DiscordBot/Program.cs @@ -1,4 +1,5 @@ using Discord; + using System; using System.IO; using System.Threading.Tasks; @@ -8,6 +9,7 @@ using PluginManager.Others; using PluginManager.Loaders; using PluginManager.LanguageSystem; using PluginManager.Online; +using System.Diagnostics; namespace DiscordBot { @@ -37,12 +39,12 @@ namespace DiscordBot { Console.WriteLine("Please insert your token: "); Console.Write("TOKEN: "); - string? botToken = Console.ReadLine(); + string botToken = Console.ReadLine(); if (botToken.Length == 59) { - string? prefix = Functions.readCodeFromFile("./Data/Resources/DiscordBotCore.data", "BOT_PREFIX", + string prefix = Functions.readCodeFromFile("./Data/Resources/DiscordBotCore.data", "BOT_PREFIX", '\t'); - if (prefix == String.Empty || prefix == null) + if (prefix == string.Empty || prefix == null) prefix = "!"; File.WriteAllText("./Data/Resources/DiscordBotCore.data", $"BOT_TOKEN\t{botToken}\nBOT_PREFIX\t{prefix}\n"); break; @@ -71,12 +73,14 @@ namespace DiscordBot private static async Task NoGUI(Boot discordbooter) { LoadLanguage(); - if (loadPluginsOnStartup) LoadPlugins(discordbooter); + if (loadPluginsOnStartup) + LoadPlugins(discordbooter); while (true) { Console.ForegroundColor = ConsoleColor.White; - Console.Write('$'); + Functions.WriteColorText("&mConsole > &c", false); string[] data = Console.ReadLine().Split(' '); + if (data[0].Length < 2) continue; switch (data[0]) { @@ -85,7 +89,17 @@ namespace DiscordBot if (discordbooter.client.ConnectionState == ConnectionState.Connected) await discordbooter.ShutDown().ContinueWith(t => { Environment.Exit(0); }); break; - + case "reload": + case "rl": + if (Environment.OSVersion.Platform != PlatformID.Win32NT) + { + Console.WriteLine("This command is for windows users ONLY"); + break; + } + if (discordbooter.client.ConnectionState == ConnectionState.Connected) + await discordbooter.ShutDown(); + Process.Start("./DiscordBot", "--execute:lp"); + break; case "listplugs": await manager.ListAvailablePlugins(); break; @@ -121,7 +135,7 @@ namespace DiscordBot break; case "dwlang": string Lname = data.MergeStrings(1); - string?[] link = await languageManager.GetDownloadLink(Lname); + string[] link = await languageManager.GetDownloadLink(Lname); try { if (link[0] is null || link is null) @@ -180,6 +194,7 @@ namespace DiscordBot default: goto case "help"; } + } } @@ -356,10 +371,11 @@ namespace DiscordBot return; } - if (len == 2 && args[0] == "--encrypt") + if (len >= 2 && args[0] == "--encrypt") { - Console.WriteLine("MD5: " + await Cryptography.CreateMD5(args[1])); - System.Console.WriteLine("SHA356: " + await Cryptography.CreateSHA256(args[1])); + string s2e = args.MergeStrings(1); + Console.WriteLine("MD5: " + await Cryptography.CreateMD5(s2e)); + Console.WriteLine("SHA356: " + await Cryptography.CreateSHA256(s2e)); return; } diff --git a/EVE_LevelingSystem/EVE_LevelingSystem.csproj b/EVE_LevelingSystem/EVE_LevelingSystem.csproj index 1eefd33..bfbd2b9 100644 --- a/EVE_LevelingSystem/EVE_LevelingSystem.csproj +++ b/EVE_LevelingSystem/EVE_LevelingSystem.csproj @@ -5,7 +5,7 @@ - E:\DiscordBot\BUILDS\ + ..\BUILDS\ none false diff --git a/PluginManager/Items/Command.cs b/PluginManager/Items/Command.cs new file mode 100644 index 0000000..a95fe16 --- /dev/null +++ b/PluginManager/Items/Command.cs @@ -0,0 +1,43 @@ +using Discord.WebSocket; + +using PluginManager.Loaders; +using PluginManager.Others; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PluginManager.Items +{ + internal class Command + { + public SocketUser Author; + public List Arguments { get; private set; } + public string CommandName { get; private set; } + public char PrefixUsed { get; private set; } + public Command(SocketMessage message) + { + this.Author = message.Author; + string[] data = message.Content.Split(' '); + if (data.Length > 1) + this.Arguments = new List(data.MergeStrings(1).Split(' ')); + else this.Arguments = new List(); + this.CommandName = data[0].Substring(1); + this.PrefixUsed = data[0][0]; + } + + public Command(string message, bool hasPrefix) + { + string[] data = message.Split(' '); + + this.Author = null; + this.Arguments = new List(data.MergeStrings(1).Split(' ')); + this.CommandName = data[0].Substring(1); + if (hasPrefix) + this.PrefixUsed = data[0][0]; + else this.PrefixUsed = '\0'; //null + } + } +} diff --git a/PluginManager/Others/Functions.cs b/PluginManager/Others/Functions.cs index d8ba88b..6cd2e85 100644 --- a/PluginManager/Others/Functions.cs +++ b/PluginManager/Others/Functions.cs @@ -4,7 +4,8 @@ using System; using System.Threading.Tasks; using System.Linq; using System.Collections.Generic; - +using Discord.WebSocket; +using PluginManager.Items; namespace PluginManager.Others { @@ -167,6 +168,12 @@ namespace PluginManager.Others return OperatingSystem.UNKNOWN; } + public static List GetArguments(SocketMessage message) + { + Command command = new Command(message); + return command.Arguments; + } + /// /// A way to create a table based on input data /// EpicWings (Pasca Robert) este cel mai bun @@ -223,9 +230,10 @@ namespace PluginManager.Others /// /// Write the text using color options( &g-green; &b-blue; &r-red; &c-clear; ) + /// /// /// The text - public static void WriteColorText(string text) + public static void WriteColorText(string text, bool appendNewLine = true) { string[] words = text.Split(' '); Dictionary colors = new Dictionary() @@ -233,6 +241,7 @@ namespace PluginManager.Others {"&g", ConsoleColor.Green }, {"&b", ConsoleColor.Blue }, {"&r", ConsoleColor.Red }, + {"&m", ConsoleColor.Magenta }, {"&c", Console.ForegroundColor } }; foreach (string word in words) @@ -244,10 +253,11 @@ namespace PluginManager.Others Console.ForegroundColor = colors[prefix]; } - string m = word.Replace("&g", "").Replace("&b", "").Replace("&r", "").Replace("&c", ""); + string m = word.Replace("&g", "").Replace("&b", "").Replace("&r", "").Replace("&c", "").Replace("&m", ""); Console.Write(m + " "); } - Console.Write('\n'); + if (appendNewLine) + Console.Write('\n'); } /// diff --git a/StartupEvents/StartupEvents.csproj b/StartupEvents/StartupEvents.csproj index 7cb7c93..8d1c46d 100644 --- a/StartupEvents/StartupEvents.csproj +++ b/StartupEvents/StartupEvents.csproj @@ -5,7 +5,7 @@ - E:\DiscordBot\BUILDS\ + ..\BUILDS\ none false