public void Start() { var socket = this.OpenSocket(); if (socket == null) { return; } this.SendIrcCommandNoWait(string.Format("NICK {0}", _config.Nick)); this.SendIrcCommandNoWait(string.Format("USER {0} {1} bla :{2}", "ident", _config.Host, "realname")); this.SendIrcCommandNoWait(string.Format("JOIN {0}", _config.Channel)); // do stuff string[] commands = null; //string[] parameters = null; string cmd; bool run = true; while (run) { commands = this.ReadIrcResponse(); IRCMessage currentMessage; foreach (string c in commands) { if (!string.IsNullOrWhiteSpace(c)) { currentMessage = new IRCMessage(c); this.ConsoleLog(c); if (currentMessage.Command == "PING") { this.SendIrcCommandNoWait(string.Format("PONG {0}", currentMessage.Parameters[0])); } else if (currentMessage.Parameters.Any()) { try { run = this.HandleIrcCommand(currentMessage); } catch (Exception e) { this.ConsoleLog(e.Message); } } } } // do we have tasks to take care of? nerf war? System.Threading.Thread.Sleep(0); } this.CloseSocket(); }
protected bool HandleIrcCommand(IRCMessage message) { switch (message.Command) { case "PRIVMSG": if (message.Parameters[0] == _config.Channel) { this.RecvChannelMessage(message.Prefix, message.Parameters[1]); } else if (message.Parameters[0] == _config.Nick) { return this.RecvPrivateMessage(message.Prefix, message.Parameters[1]); } break; case "JOIN": // if master joined the channel, grant him ops (if we have it) if (message.Prefix == _config.Master) { string nick = this.GetNickFromIdent(message.Prefix); string ops = string.Format("MODE {0} +o {1}", _config.Channel, nick); this.SendIrcCommandNoWait(ops); } break; } return true; }