Exemple #1
0
        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();
        }
Exemple #2
0
        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;
        }