Пример #1
0
        private void IrcClient_DataRecieved(object sender, IrcDataEventArgs e)
        {
            IrcClient_UpdateChannelList(sender, e);
            if (e.Command != "PONG")
            {
                lastRecievedData = e.Data;

                //AppendText(DateTime.Now.ToString("<HH:mm:ss>") + e.Data + Environment.NewLine);
                Console.WriteLine(DateTime.Now.ToString("<HH:mm:ss>") +
                                  "<" + e.From + " " + e.Command + " " + e.To + "> " +
                                  IrcFormatting.ClearFormatting(e.Message));
            }
        }
Пример #2
0
        private void IrcClient_DataSent(object sender, IrcDataEventArgs e)
        {
            lastSentData = e.Data;
            IrcDataEventArgs e2 = new IrcDataEventArgs(":" + Nick + " " + e.Data);

            IrcClient_UpdateChannelList(sender, e2);

            sw.WriteLine(e.Data);

            Console.WriteLine(DateTime.Now.ToString("<HH:mm:ss>") +
                              "<" + e2.From + " " + e2.Command + " " + e2.To + "> " +
                              IrcFormatting.ClearFormatting(e2.Message));

            if (e2.Command == "NICK")
            {
                nick = e2.To;
            }
        }
Пример #3
0
        private void IrcClient_UpdateChannelList(object sender, IrcDataEventArgs e)
        {
            string[] msg = e.Message.Split(' ');
            switch (e.Command)
            {
            case "JOIN":
                if (e.From == Nick)
                {
                    Channels.Add(e.To);
                }
                else
                {
                    Channels[e.To].Users.Add(e.From);
                }
                break;

            case "PART":
                if (e.From == Nick)
                {
                    Channels.Remove(e.To);
                }
                else
                {
                    Channels[e.To].Users.Remove(e.From);
                }
                break;

            case "NICK":
                for (int i = 0; i < Channels.Count; i++)
                {
                    if (Channels[i].Users[e.From] != null)
                    {
                        Channels[i].Users[e.From].Name = e.To;
                    }
                }
                break;

            case "MODE":
                switch (msg[0])
                {
                case "+a":
                    Channels[e.To].Users[msg[1]].IsAdmin = true;
                    break;

                case "-a":
                    Channels[e.To].Users[msg[1]].IsAdmin = false;
                    break;

                case "+o":
                    Channels[e.To].Users[msg[1]].IsOperator = true;
                    break;

                case "-o":
                    Channels[e.To].Users[msg[1]].IsOperator = false;
                    break;

                case "+h":
                    Channels[e.To].Users[msg[1]].IsHalfOperator = true;
                    break;

                case "-h":
                    Channels[e.To].Users[msg[1]].IsHalfOperator = false;
                    break;

                case "+v":
                    Channels[e.To].Users[msg[1]].IsVoice = true;
                    break;

                case "-v":
                    Channels[e.To].Users[msg[1]].IsVoice = false;
                    break;
                }
                break;

            case "353":
                string[] nick = e.Message.Substring(e.Message.IndexOf(':') + 1).Split(' ');
                string   chan = e.Message.Substring(e.Message.IndexOf('#'));
                chan = chan.Substring(0, chan.IndexOf(' ')).Trim().ToLower();

                Channels[chan].Users.Clear();
                for (int i = 0; i < nick.Length; i++)
                {
                    Channels[chan].Users.Add(nick[i]);
                }

                break;
            }
        }