private string ListAllCommands(ConsoleCommands Commands, string CategoryName = null) { StringBuilder sb = new StringBuilder(); foreach (var command in Commands.GetCommands()) { sb.Append(Environment.NewLine); if (CategoryName != null) { sb.Append(CategoryName + ' '); } sb.Append(FormatCommandHelp(command)); } var subcates = Commands.GetSubCategories(); if (subcates.Count != 0) { foreach (var subcate in subcates) { if (CategoryName != null) { sb.Append(ListAllCommands(subcate.Value, CategoryName + ' ' + subcate.Key)); } else { sb.Append(ListAllCommands(subcate.Value, subcate.Key)); } } } return(sb.ToString()); }
private void CommandDigger(ConsoleCommands Commands, string CommandAndArgs) { string[] splitted = CommandAndArgs.Split(' '); string command = splitted[0]; string args = string.Empty; if (splitted.Length > 1) { for (int i = 1; i < splitted.Length; i++) { args += splitted[i]; args += ' '; } args = args.Remove(args.Length - 1); } if (Commands.GetSubCategories() != null && Commands.GetSubCategories().ContainsKey(command)) { CommandDigger(Commands.GetSubCategories()[command], args); return; } var targetCommand = Commands.GetCommands().Find(c => c.Alias == command); if (targetCommand != null) { if (targetCommand.NeedAuth && !IsAuthorize) { Log(MessageStatus.Error, LogStrings.Error.General.AuthRequired); return; } else { targetCommand.Logic(args); return; } } Log(MessageStatus.Error, LogStrings.Error.General.UnknownCommand + command); }