示例#1
0
        public static void ParseCommand(ICommandSender sender, string message)
        {
            {
                var system = DefaultSystem;
                var prefix = system.GetPrefixes().FirstOrDefault(message.StartsWith);
                if (!string.IsNullOrWhiteSpace(prefix))
                {
                    var preE = new CommandPreExecutionEvent(sender, message, prefix, system);
                    EventManager.CallEvent(preE);
                    if (preE.Cancelled)
                    {
                        return;
                    }
                    preE.System.ParseCommand(preE.Sender, preE.Message.Substring(prefix.Length), preE.Prefix);
                    var postE = new CommandPostExecutionEvent(preE.Sender, preE.Message, preE.Prefix, preE.System);
                    EventManager.CallEvent(postE);
                    return;
                }
            }
            foreach (var system in CommandSystems)
            {
                var prefix = system.GetPrefixes().FirstOrDefault(message.StartsWith);
                if (string.IsNullOrWhiteSpace(prefix))
                {
                    continue;
                }

                var preE = new CommandPreExecutionEvent(sender, message, prefix, system);
                EventManager.CallEvent(preE);
                if (preE.Cancelled)
                {
                    return;
                }
                preE.System.ParseCommand(preE.Sender, preE.Message.Substring(prefix.Length), preE.Prefix);
                var postE = new CommandPostExecutionEvent(preE.Sender, preE.Message, preE.Prefix, preE.System);
                EventManager.CallEvent(postE);
                return;
            }
        }
示例#2
0
 public void PreProcess(CommandPreExecutionEvent e)
 {
     ConsoleFunctions.WriteInfoLine(
         $"PreProcess. System: {e.System.GetType().Name} EType: {e.Type} Prefix: {e.Prefix} Sender: {e.Sender.GetName()} " +
         $"Message: {{{e.Message}}}");
 }