internal void HandleCommand(Irc irc, string text) { string[] args = text.Split(' '); if (args[0].StartsWith("//") || !args[0].StartsWith("/")) { if (args[0].StartsWith("//")) { args[0] = args[0].Replace("//", "/"); } irc.SendMessage(String.Join(" ", args)); } else if (args[0].StartsWith("/")) { var cmd = CommandList.Where(command => command.StartsWith(args[0])).ToList(); if (cmd.Count > 1) { irc.ClientMessage("Multiple matches found: " + args[0]); irc.ClientMessage(String.Join(", ", cmd)); irc.ClientMessage("Type /help for a list of commands."); return; } else if (cmd.Count == 1) { ((Command)CommandTable[cmd[0]])(irc, args); } else { irc.ClientMessage("Unknown Command: " + text); irc.ClientMessage("Type /help for a list of commands."); } } }
internal void ModeCommandHandler(Irc irc, string[] args) { if ((args.Length < 3) || (args.Length > 2 && !args[1].StartsWith("#"))) { irc.ClientMessage("Command too short!"); return; } var modeLine = "MODE "; if (args[1].StartsWith("#")) { modeLine += args[1] + " " + args[2]; if (args.Length == 4) { modeLine += " " + args[3]; } } else { modeLine += irc.currentChannel + " " + args[1]; if (args.Length == 3) { modeLine += " " + args[2]; } } Debug.WriteLine(modeLine); irc.WriteLine(modeLine); }
internal void BanCommandHandler(Irc irc, string[] args) { if (args.Length != 2) { irc.ClientMessage("Wrong params: " + String.Join(" ", args)); return; } string[] modeArgs; modeArgs = new string[] { "MODE", irc.currentChannel, "+b", args[1] + "!*@*" }; ModeCommandHandler(irc, modeArgs); }
internal void QuietCommandHandler(Irc irc, string[] args) { if (args.Length != 2) { irc.ClientMessage("Wrong params: " + String.Join(" ", args)); return; } string[] modeArgs; if (args[0].ToLower().Contains("unmute")) { modeArgs = new string[] { "MODE", irc.currentChannel, "-q", args[1] + "!*@*" }; } else { modeArgs = new string[] { "MODE", irc.currentChannel, "+q", args[1] + "!*@*" }; } ModeCommandHandler(irc, modeArgs); }
private void HelpCommandHandler(Irc irc, string[] args) { irc.ClientMessage("The following commands are available: "); irc.ClientMessage(String.Join(", ", CommandList)); }
public override Task <bool> HandleLine(IrcMessage parsedLine) { Debug.WriteLine(parsedLine.CommandMessage.Command + " - " + parsedLine.OriginalMessage); if (parsedLine.CommandMessage.Parameters.Count > 2) { var channel = parsedLine.CommandMessage.Parameters[0]; if (parsedLine.CommandMessage.Parameters.Count == 3) { var currentPrefix = Irc.ChannelList[channel].Store.GetPrefix(parsedLine.CommandMessage.Parameters[2]); var prefix = ""; var mode = parsedLine.CommandMessage.Parameters[1]; switch (mode) { case "+o": if (currentPrefix.Length > 0 && currentPrefix[0] == '+') { prefix = "@+"; } else { prefix = "@"; } break; case "-o": if (currentPrefix.Length > 1 && currentPrefix[1] == '+') { prefix = "+"; } else { prefix = ""; } break; case "+v": if (currentPrefix.Length > 0 && currentPrefix[0] == '@') { prefix = "@+"; } else { prefix = "+"; } break; case "-v": if (currentPrefix.Length > 0 && currentPrefix[0] == '@') { prefix = "@"; } else { prefix = ""; } break; } Irc.ChannelList[channel].Store.ChangePrefix(parsedLine.CommandMessage.Parameters[2], prefix); } Irc.ClientMessage(channel, "Mode change: " + string.Join(" ", parsedLine.CommandMessage.Parameters)); } return(Task.FromResult(true)); }