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); }
private void DispatchCommand(IrcCommandContext ircCommandContext) { using (var scope = _container.BeginLifetimeScope()) { var ircCommands = scope.Resolve <IIrcCommands>(); if (ircCommands.CommandExists(ircCommandContext.Command)) { ircCommands.ExecuteIrcCommand(ircCommandContext); } } }