Пример #1
0
        static void Main(string[] args)
        {
            object stream;
            string inputLine = "";
            string nickname  = "";
            string addresser = "";
            string fromChannel;

            try
            {
                //FileStream setting_file = new FileStream(SETTINGS_FILE, FileMode.Open);

                settings = IrcBot.ObtainConfig();

                fromChannel = settings.channels[0].name;
                m_irc       = new TcpClient();
                bool joined1    = false;
                bool joined2    = false;
                bool identified = true;
                m_irc.Connect(settings.server, settings.port);
                if (settings.secure == "1")
                {
                    stream = new SslStream(m_irc.GetStream(), true, new RemoteCertificateValidationCallback(ValidateServerCertificate));
                    SslStream sslStream = (SslStream)stream;
                    sslStream.AuthenticateAsClient(settings.server);
                }
                else
                {
                    stream = m_irc.GetStream();
                }
                reader = new StreamReader((Stream)stream);
                writer = new StreamWriter((Stream)stream);
                Console.WriteLine(settings.user);
                // Start PingSender thread
                PingSender.cs.PingSender ping = new PingSender.cs.PingSender();
                ping.Start();
                writer.WriteLine(settings.user);
                writer.Flush();
                writer.WriteLine("NICK " + settings.nick);
                writer.Flush();
                writer.WriteLine("PASS " + settings.password);
                writer.Flush();
                Console.WriteLine("NICK " + settings.nick);
                ch = new CommandHandler(writer, reader);
                CsBot.CommandHandler.settings = settings;
                //writer.WriteLine("JOIN " + settings.channels[0].name + " " + KEY);
                //writer.WriteLine("JOIN " + settings.channels[0].name);
                //writer.Flush();
                //writer.WriteLine("JOIN " + settings.channels[0].name2);
                //writer.Flush();

                IrcBot.EventLoop(inputLine,
                                 addresser,
                                 fromChannel,
                                 ping,
                                 joined1,
                                 joined2,
                                 nickname,
                                 identified,
                                 stream);
            }
            catch (Exception e)
            {
                foreach (Channel channel in settings.channels)
                {
                    ch.HandleMessage(":" + settings.command_start + "say Awe, Crap!", channel.name, "self");
                }

                // Close all streams
                if (writer != null)
                {
                    writer.Close();
                }
                if (reader != null)
                {
                    reader.Close();
                }
                if (m_irc != null)
                {
                    m_irc.Close();
                }
                // Show the exception, sleep for a while and try to establish a new connection to irc server
                Console.WriteLine("Exception info: " + e.ToString());
                Thread.Sleep(5000);
                string[] argv = { };
                Main(argv);
            }
        }