/// <summary> /// Handles the command. /// </summary> /// <param name="source">The source.</param> /// <param name="destination">The destination.</param> /// <param name="command">The command.</param> /// <param name="args">The args.</param> public void handleCommand(User source, string destination, string command, string[] args) { Logger.instance().addToLog("Handling recieved message...", Logger.LogTypes.General); // if on ignore list, ignore! if (source.accessLevel == User.UserRights.Ignored) return; // flip destination over if required if (destination == Helpmebot6.irc.ircNickname) destination = source.nickname; /* * check category codes */ if (WatcherController.instance().isValidKeyword(command)) { int argsLength = GlobalFunctions.realArrayLength(args); string[] newArgs = new string[argsLength + 1]; int newArrayPos = 1; for (int i = 0; i < args.Length; i++) { if (!String.IsNullOrEmpty(args[i])) newArgs[newArrayPos] = args[i]; newArrayPos++; } newArgs[0] = command; string directedTo = findRedirection(destination, ref newArgs); CommandResponseHandler crh = new CategoryWatcher().run(source, destination, newArgs); this.handleCommandResponseHandler(source, destination, directedTo, crh); return; } /* * Check for a valid command * search for a class that can handle this command. */ // Create a new object which holds the type of the command handler, if it exists. // if the command handler doesn't exist, then this won't be set to a value Type commandHandler = Type.GetType("helpmebot6.Commands." + command.Substring(0, 1).ToUpper() + command.Substring(1).ToLower()); // check the type exists if (commandHandler != null) { string directedTo = findRedirection(destination, ref args); // create a new instance of the commandhandler. // cast to genericcommand (which holds all the required methods to run the command) // run the command. CommandResponseHandler response = ((GenericCommand) Activator.CreateInstance(commandHandler)).run( source, destination, args); this.handleCommandResponseHandler(source, destination, directedTo, response); return; } /* * Check for a learned word */ { WordLearner.RemeberedWord rW = WordLearner.remember(command); CommandResponseHandler crh = new CommandResponseHandler(); string wordResponse = rW.phrase; string directedTo = ""; if (wordResponse != String.Empty) { if (source.accessLevel < User.UserRights.Normal) { crh.respond(new Message().get("accessDenied"), CommandResponseDestination.PrivateMessage); string[] aDArgs = {source.ToString(), MethodBase.GetCurrentMethod().Name}; crh.respond(new Message().get("accessDeniedDebug", aDArgs), CommandResponseDestination.ChannelDebug); } else { wordResponse = String.Format(wordResponse, args); if (rW.action) { crh.respond(IAL.wrapCTCP("ACTION", wordResponse)); } else { directedTo = findRedirection(destination, ref args); crh.respond(wordResponse); } this.handleCommandResponseHandler(source, destination, directedTo, crh); } return; } } }
/// <summary> /// Handles the command. /// </summary> /// <param name="source"> /// The source. /// </param> /// <param name="destination"> /// The destination. /// </param> /// <param name="command"> /// The command. /// </param> /// <param name="args"> /// The args. /// </param> public void HandleCommand(LegacyUser source, string destination, string command, string[] args) { this.Log.Debug("Handling recieved message..."); // user is null (!) if (source == null) { this.Log.Debug("Ignoring message from null user."); return; } // if on ignore list, ignore! if (source.AccessLevel == LegacyUser.UserRights.Ignored) { this.Log.Debug("Ignoring message from ignored user."); return; } // flip destination over if required if (destination == this.commandServiceHelper.Client.Nickname) { destination = source.Nickname; } /* * check category codes */ if (WatcherController.Instance().IsValidKeyword(command)) { int argsLength = args.SmartLength(); var newArgs = new string[argsLength + 1]; int newArrayPos = 1; foreach (string t in args) { if (!string.IsNullOrEmpty(t)) { newArgs[newArrayPos] = t; } newArrayPos++; } newArgs[0] = command; string directedTo = FindRedirection(ref newArgs); CommandResponseHandler crh = new CategoryWatcher(source, destination, newArgs, this.commandServiceHelper).RunCommand(); this.HandleCommandResponseHandler(source, destination, directedTo, crh); return; } /* * Check for a valid command * search for a class that can handle this command. */ // Create a new object which holds the type of the command handler, if it exists. // if the command handler doesn't exist, then this won't be set to a value Type commandHandler = Type.GetType( "helpmebot6.Commands." + command.Substring(0, 1).ToUpper() + command.Substring(1).ToLower()); // check the type exists if (commandHandler != null) { string directedTo = FindRedirection(ref args); // create a new instance of the commandhandler. // cast to genericcommand (which holds all the required methods to run the command) // run the command. CommandResponseHandler response = ((GenericCommand) Activator.CreateInstance(commandHandler, source, destination, args, this.commandServiceHelper)) .RunCommand(); this.HandleCommandResponseHandler(source, destination, directedTo, response); return; } /* * Check for a learned word */ { // FIXME: ServiceLocator - keywordservice var keywordService = ServiceLocator.Current.GetInstance<IKeywordService>(); Keyword keyword = keywordService.Get(command); var crh = new CommandResponseHandler(); string directedTo = string.Empty; if (keyword != null) { if (source.AccessLevel < LegacyUser.UserRights.Normal) { this.Log.InfoFormat("Access denied for keyword retrieval for {0}", source); var messageService1 = this.commandServiceHelper.MessageService; crh.Respond( messageService1.RetrieveMessage(Messages.OnAccessDenied, destination, null), CommandResponseDestination.PrivateMessage); string[] accessDeniedArguments = { source.ToString(), MethodBase.GetCurrentMethod().Name }; crh.Respond( messageService1.RetrieveMessage("accessDeniedDebug", destination, accessDeniedArguments), CommandResponseDestination.ChannelDebug); } else { string wordResponse = keyword.Response; IDictionary<string, object> dict = new Dictionary<string, object>(); dict.Add("username", source.Username); dict.Add("nickname", source.Nickname); dict.Add("hostname", source.Hostname); dict.Add("AccessLevel", source.AccessLevel); dict.Add("channel", destination); for (int i = 0; i < args.Length; i++) { dict.Add(i.ToString(CultureInfo.InvariantCulture), args[i]); dict.Add(i + "*", string.Join(" ", args, i, args.Length - i)); } wordResponse = wordResponse.FormatWith(dict); if (keyword.Action) { crh.Respond(wordResponse.SetupForCtcp("ACTION")); } else { directedTo = FindRedirection(ref args); crh.Respond(wordResponse); } this.HandleCommandResponseHandler(source, destination, directedTo, crh); } } } }
/// <summary> /// Handles the command. /// </summary> /// <param name="source">The source.</param> /// <param name="destination">The destination.</param> /// <param name="command">The command.</param> /// <param name="args">The args.</param> public void handleCommand(User source, string destination, string command, string[] args) { Logger.instance().addToLog("Handling recieved message...", Logger.LogTypes.General); // if on ignore list, ignore! if (source.accessLevel == User.UserRights.Ignored) { return; } // flip destination over if required if (destination == Helpmebot6.irc.ircNickname) { destination = source.nickname; } /* * check category codes */ if (WatcherController.instance().isValidKeyword(command)) { int argsLength = GlobalFunctions.realArrayLength(args); string[] newArgs = new string[argsLength + 1]; int newArrayPos = 1; for (int i = 0; i < args.Length; i++) { if (!String.IsNullOrEmpty(args[i])) { newArgs[newArrayPos] = args[i]; } newArrayPos++; } newArgs[0] = command; string directedTo = findRedirection(destination, ref newArgs); CommandResponseHandler crh = new CategoryWatcher().run(source, destination, newArgs); this.handleCommandResponseHandler(source, destination, directedTo, crh); return; } /* * Check for a valid command * search for a class that can handle this command. */ // Create a new object which holds the type of the command handler, if it exists. // if the command handler doesn't exist, then this won't be set to a value Type commandHandler = Type.GetType("helpmebot6.Commands." + command.Substring(0, 1).ToUpper() + command.Substring(1).ToLower()); // check the type exists if (commandHandler != null) { string directedTo = findRedirection(destination, ref args); // create a new instance of the commandhandler. // cast to genericcommand (which holds all the required methods to run the command) // run the command. CommandResponseHandler response = ((GenericCommand)Activator.CreateInstance(commandHandler)).run( source, destination, args); this.handleCommandResponseHandler(source, destination, directedTo, response); return; } /* * Check for a learned word */ { WordLearner.RemeberedWord rW = WordLearner.remember(command); CommandResponseHandler crh = new CommandResponseHandler(); string wordResponse = rW.phrase; string directedTo = ""; if (wordResponse != String.Empty) { if (source.accessLevel < User.UserRights.Normal) { crh.respond(new Message().get("accessDenied"), CommandResponseDestination.PrivateMessage); string[] aDArgs = { source.ToString(), MethodBase.GetCurrentMethod().Name }; crh.respond(new Message().get("accessDeniedDebug", aDArgs), CommandResponseDestination.ChannelDebug); } else { wordResponse = String.Format(wordResponse, args); if (rW.action) { crh.respond(IAL.wrapCTCP("ACTION", wordResponse)); } else { directedTo = findRedirection(destination, ref args); crh.respond(wordResponse); } this.handleCommandResponseHandler(source, destination, directedTo, crh); } return; } } }