示例#1
0
        public sealed override void Execute(ICommandSender sender, string cmdLine, string[] args)
        {
            CommandLineHelp.WithHeader(sender.CommandPrefix + Name + " " + Usage + ": " + Description);

            if (!HasPermission(sender))
            {
                sender.Message("<color=red>You don't have permission</color>");
                return;
            }

            var result = _commandLineParser.Parse(args);

            if (result.HasErrors)
            {
                SendUsage(sender);
                if (string.IsNullOrEmpty(result.ErrorText))
                {
                    return;
                }
                sender.Message("<b>" + result.ErrorText + "</b>");
                return;
            }

            if (result.HelpCalled)
            {
                SendUsage(sender);
                return;
            }

            if (!OnExecute(sender, cmdLine, args, _commandLineParser.Object))
            {
                SendUsage(sender);
            }
        }
示例#2
0
        public Task Process(ICommandSender sender, Queue <string> args)
        {
            if (args.Count > 0)
            {
                var first   = args.Peek();
                var command = GetCommand(first);

                if (command != null)
                {
                    args.Dequeue();
                    return(command.Process(sender, args));
                }
            }

            var result = _parser.ParseArguments <T>(args);

            return(Task.Run(() => result
                            .WithParsed(o => Execute(sender, o))
                            .WithNotParsed(errs =>
            {
                var helpText = HelpText.AutoBuild(result, _parser.Settings.MaximumDisplayWidth);

                helpText.Heading = string.Empty;
                helpText.Copyright = string.Empty;

                helpText.AddPostOptionsLines(
                    Commands.Select(c => $"{c.Name}\t\t\t\t{c.Description}")
                    );

                Regex
                .Split(helpText.ToString(), "\r\n|\r|\n")
                .ForEach((s, i) => sender.Message(s));
            }
                                           )));
        }
示例#3
0
        public void Eval(ICommandSender sender, string cmd, string cmdLine)
        {
            LogUtils.Log(sender.Name + " executed command: " + cmdLine);
            var cmdInstance = GetCommand(cmd);

            if (cmdInstance == null)
            {
                sender.Message("<color=#B71C1C>Command \"" + cmd + "\" not found</color>");
                return;
            }

            string[] parsedArgs = {};
            if (cmdLine.Trim().Length > cmd.Length)
            {
                parsedArgs = StringUtils.ToArguments(cmdLine.Substring(cmd.Length + 1));
            }

            if (!cmdInstance.HasPermission(sender))
            {
                sender.Message("<color=#B71C1C>You don't have permission</color>");
                return;
            }
            cmdInstance.Execute(sender, cmdLine, parsedArgs);
        }