public static void Execute(string str, IrcUser sender, IIrcMessageTarget target) { var args = new IRCCommandEventArgs(str, sender, target); string commandName = args[-1].ToLowerInvariant(); if (TShockIRC.Config.IgnoredCommands.Contains(commandName)) return; var ircCommand = Commands.FirstOrDefault(c => c.Names.Contains(commandName)); var senderGroup = TShockIRC.IrcUsers[sender]; if (ircCommand != null) { if (String.IsNullOrEmpty(ircCommand.Permission) || senderGroup.HasPermission(ircCommand.Permission)) { if (ircCommand.DoLog) Log.Info("{0} executed: /{1}.", sender.NickName, str); ircCommand.Execute(args); } else { Log.Warn("{0} tried to execute /{1}.", sender.NickName, str); TShockIRC.SendMessage(target, "\u00035You do not have access to this command."); } } else if (senderGroup.HasPermission("tshockirc.command")) { var tsIrcPlayer = new TSIrcPlayer(sender.NickName, senderGroup, target); var commands = TShockAPI.Commands.ChatCommands.Where(c => c.HasAlias(commandName)); if (commands.Count() != 0) { Main.rand = new Random(); WorldGen.genRand = new Random(); foreach (Command command in commands) { if (!command.CanRun(tsIrcPlayer)) { Log.Warn("{0} tried to execute /{1}.", sender.NickName, str); TShockIRC.SendMessage(target, "\u00035You do not have access to this command."); } else if (!command.AllowServer) TShockIRC.SendMessage(target, "\u00035You must use this command in-game."); else { var parms = args.ParameterRange(0, args.Length); if (TShockAPI.Hooks.PlayerHooks.OnPlayerCommand(tsIrcPlayer, command.Name, str, parms, ref commands)) return; if (command.DoLog) Log.Info("{0} executed: /{1}.", sender.NickName, str); command.Run(str, tsIrcPlayer, parms); } } } else TShockIRC.SendMessage(target, "\u00035Invalid command."); } else { Log.Warn("{0} tried to execute /{1}.", sender.NickName, str); TShockIRC.SendMessage(target, "\u00035You do not have access to this command."); } }
public static void Execute(string str, IrcUser sender, IIrcMessageTarget target) { var args = new IRCCommandEventArgs(str, sender, target); string commandName = args[-1].ToLowerInvariant(); if (TShockIRC.Config.IgnoredCommands.Contains(commandName)) { return; } var ircCommand = Commands.FirstOrDefault(c => c.Names.Contains(commandName)); var senderGroup = TShockIRC.IrcUsers[sender]; if (ircCommand != null) { if (String.IsNullOrEmpty(ircCommand.Permission) || senderGroup.HasPermission(ircCommand.Permission)) { if (ircCommand.DoLog) { Log.Info("{0} executed: /{1}.", sender.NickName, str); } ircCommand.Execute(args); } else { Log.Warn("{0} tried to execute /{1}.", sender.NickName, str); TShockIRC.SendMessage(target, "\u00035You do not have access to this command."); } } else if (senderGroup.HasPermission("tshockirc.command")) { var tsIrcPlayer = new TSIrcPlayer(sender.NickName, senderGroup, target); var commands = TShockAPI.Commands.ChatCommands.Where(c => c.HasAlias(commandName)); if (commands.Count() != 0) { Main.rand = new Random(); WorldGen.genRand = new Random(); foreach (Command command in commands) { if (!command.CanRun(tsIrcPlayer)) { Log.Warn("{0} tried to execute /{1}.", sender.NickName, str); TShockIRC.SendMessage(target, "\u00035You do not have access to this command."); } else if (!command.AllowServer) { TShockIRC.SendMessage(target, "\u00035You must use this command in-game."); } else { var parms = args.ParameterRange(0, args.Length); if (TShockAPI.Hooks.PlayerHooks.OnPlayerCommand(tsIrcPlayer, command.Name, str, parms, ref commands)) { return; } if (command.DoLog) { Log.Info("{0} executed: /{1}.", sender.NickName, str); } command.Run(str, tsIrcPlayer, parms); } } } else { TShockIRC.SendMessage(target, "\u00035Invalid command."); } } else { Log.Warn("{0} tried to execute /{1}.", sender.NickName, str); TShockIRC.SendMessage(target, "\u00035You do not have access to this command."); } }