CTFBot.SourceReader.sourceirc_OnChannelMessage C# (CSharp) Method

sourceirc_OnChannelMessage() public method

public sourceirc_OnChannelMessage ( object sender, IrcEventArgs e ) : void
sender object
e Meebey.SmartIrc4net.IrcEventArgs
return void
        void sourceirc_OnChannelMessage(object sender, IrcEventArgs e)
        {
            lastMessage = DateTime.Now;

            /* Sample input
            :[email protected] PRIVMSG #wikipedia-VAN :15[[07Title15]] by "0380.100.196.12815" (12 http://en.wikipedia.org/w/index.php?diff=403417897&oldid=396729660 15) 060.90746715 (04Reverted15) (13Default revert15) (021.234 15s)

            :[email protected] PRIVMSG #wikipedia-VAN :15[[07Page15]] by "03127.0.0.115" (12 http://en.wikipedia.org/w/index.php?diff=403418859&oldid=403418512 15) 060.95910315 (03Not Reverted15) (13Reverted before15) (020.3157 15s)
            */

            string strippedmsg = stripBold.Replace(stripColours.Replace(CTFUtils.replaceStrMax(e.Data.Message, '\x03', '\x04', 14), "\x03"), "");
            string[] fields = strippedmsg.Split(new char[1] { '\x03' }, 15);

            if (fields.Length == 15)
            {
                /* Sample fields
                0:
                1:[[
                2:Triangular trade
                3:]] by "
                4:173.57.160.195
                5:" (
                6: http://en.wikipedia.org/w/index.php?diff=403448965&oldid=402566006
                7:)
                8:0.935177
                9: (
                10:Reverted
                11:) (
                12:Default revert
                13:) (
                14:3.0718929767609 15s)
                --
                0:
                1:[[
                2:Heterosexuality
                3:]] by "
                4:68.194.43.126
                5:" (
                6: http://en.wikipedia.org/w/index.php?diff=403448989&oldid=403448396
                7:)
                8:0.963363
                9: (
                10:Not Reverted
                11:) (
                12:Default revert
                13:) (
                14:3.0718929767609 15s)
                */

                // Cut off possible special character at the end
                if (fields[14].EndsWith("\x03"))
                    fields[14] = fields[14].Substring(0, fields[14].Length - 1);

                // Cut off " s)" too
                string[] timeparts = fields[14].Split(new char[1] { ' ' }, 2);
                fields[14] = timeparts[0];
            }
            else
            {
                //Console.WriteLine("Ignored: " + e.Data.Message);
                return; //Probably really long article title or something that got cut off; we can't handle these
            }

            try
            {
                SourceEvent rce;

                rce.eventtype = SourceEvent.EventType.somethingelse;

                rce.fullstring = e.Data.Message;
                rce.sendname = e.Data.Nick;

                rce.title = "";
                rce.user = "";
                rce.url = "";
                rce.score = "";
                rce.reverted = "";
                rce.reason = "";
                rce.time = "";

                try
                {
                    if (e.Data.Nick == Program.sourceAccount)
                    {
                        rce.eventtype = SourceEvent.EventType.cluereport;

                        rce.title = fields[2];
                        rce.user = fields[4];
                        rce.url = fields[6].Trim();
                        rce.score = fields[8];
                        rce.reverted = fields[10];
                        rce.reason = fields[12];
                        rce.time = fields[14];
                    }
                    Program.ReactToSourceEvent(rce);
                }
                catch (Exception exce)
                {
                    logger.Warn("ReactorException: " + exce.Message);
                }
            }
            catch (ArgumentOutOfRangeException eor)
            {
                //Broadcast this for Distributed Debugging
                logger.Warn("SourceR_AOORE: " + eor.Message);
            }
        }