public static void Run(ChatCallback Callback, string ChatText) { if (ChatText.StartsWith("/")) { ChatText = ChatText.Substring(1); } if (ChatText.Length == 0) { AllCommands(Callback); return; } var Parts = ChatText.Split(' ') .Where(Part => Part.Trim().Length > 0) .ToList(); if (Commands.ContainsKey(Parts[0])) { Commands[Parts[0]].Run(Callback, Parts.Skip(1).ToList()); } else { NotFound(Callback, Parts[0]); AllCommands(Callback); } }
public static void Help(ChatCallback Callback, string CommandName = null) { if (CommandName == null) { Callback.Usage(Commands.Values.Select(Command => Command.Usage())); } else { if (Commands.ContainsKey(CommandName)) { Callback.Usage(Commands[CommandName].Usage()); } else { NotFound(Callback, CommandName); } } }
private static void NotFound(ChatCallback Callback, string CommandName) { Callback.Send(XenoLang.COMMAND_NOT_FOUND.Get() .Replace("%1", CommandName)); }
private static void AllCommands(ChatCallback Callback) { Callback.Send(XenoLang.AVAILABLE_COMMANDS.Get() .Replace("%1", string.Join(", ", Commands.Keys))); }
public static void UsageError(this ICommand Command, ChatCallback Callback, string ErrorText) { Callback.Send(ErrorText); Help(Callback, Command.Name()); }