Exemplo n.º 1
0
        private IrcCommandContext GetContextFromIrcEventArgs(IrcEventArgs ircEventArgs, MessageOrigin messageOrigin)
        {
            string        command;
            CommandName?  commandName;
            var           msgarray   = ircEventArgs.Data.Message.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
            List <string> msgStrings = null;

            switch (messageOrigin)
            {
            case MessageOrigin.Channel:
                command     = ircEventArgs.Data.MessageArray[1];
                commandName = GetCommandName(command);
                if (commandName != null)
                {
                    msgStrings = FilterMsgArray(msgarray, commandName.Value).ToList();
                }
                break;

            case MessageOrigin.Query:
                command     = ircEventArgs.Data.MessageArray[1];
                commandName = GetCommandName(command);
                if (commandName != null)
                {
                    msgStrings = FilterMsgArray(msgarray, commandName.Value).ToList();
                }
                break;

            case MessageOrigin.Notice:
                string connectpart = msgarray[1];
                command     = GetNoticeType(connectpart).ToString();
                commandName = GetCommandName(command);
                if (commandName != null)
                {
                    msgStrings = FilterMsgArray(msgarray, commandName.Value).ToList();
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(messageOrigin));
            }

            var ircCommandContext = new IrcCommandContext
            {
                Channel       = ircEventArgs.Data.Channel,
                Host          = ircEventArgs.Data.Host,
                Ident         = ircEventArgs.Data.Ident,
                MessageOrigin = messageOrigin,
                Command       = commandName,
                MsgArray      = msgStrings,
                User          = ircEventArgs.Data.Nick
            };

            return(ircCommandContext);
        }
Exemplo n.º 2
0
 private void DispatchCommand(IrcCommandContext ircCommandContext)
 {
     using (var scope = _container.BeginLifetimeScope())
     {
         var ircCommands = scope.Resolve <IIrcCommands>();
         if (ircCommands.CommandExists(ircCommandContext.Command))
         {
             ircCommands.ExecuteIrcCommand(ircCommandContext);
         }
     }
 }