Example #1
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            Channel channel = message.GetChannel(message.Parameters[1]);
            User user = message.GetUserFromNick(message.Parameters[5]);

            user.HostName = message.Parameters[3];
            user.UserName = message.Parameters[2];
            user.RealName = string.Join(" ", message.Parameters.Skip(8)).Trim();
            user.IsOperator = message.Parameters[6].Contains('*');

            foreach (char c in message.Parameters[6])
            {
                switch (c)
                {
                    case 'G':
                        user.IsAway = true;
                        break;
                    case 'H':
                        user.IsAway = false;
                        break;
                    default:
                        if (User.RankChars.ContainsKey(c))
                        {
                            channel.SetRank(user, user.Ranks[channel.Name] | User.RankChars[c]);
                        }
                        break;
                }
            }

            client.TriggerOnWho(user, string.Join(" ", message.Parameters.Skip(3)));
            channel.TriggerOnWho(user, string.Join(" ", message.Parameters.Skip(3)));
        }
Example #2
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User user = message.GetUser();
            Channel channel = message.GetChannel();
            string line = message.Parameters[1];

            channel.TriggerOnMessage(user, line);
        }
Example #3
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User user = message.GetUser();
            Channel channel = message.GetChannel();
            string action = message.GetCTCPParameter();

            channel.TriggerOnAction(user, action);
        }
Example #4
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User kicker = message.GetUser();
            Channel channel = message.GetChannel();
            User user = message.GetUserFromNick(message.Parameters[1]);
            string reason = message.Parameters[2];

            channel.TriggerOnKick(kicker, user, reason);
        }
Example #5
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User target = message.GetUserFromNick(message.Parameters[0]);

            if (target == client.User)
            {
                Channel channel = message.GetChannel(message.Parameters[1]);

                channel.Topic.ClearTopic();
            }
        }
Example #6
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User target = message.GetUserFromNick(message.Parameters[0]);

            if (target == client.User)
            {
                char chanType = Convert.ToChar(message.Parameters[1]);
                Channel channel = message.GetChannel(message.Parameters[2]);

                switch (chanType)
                {
                    case '=':
                        channel.IsPrivate = false;
                        channel.IsSecret = false;
                        break;
                    case '*':
                        channel.IsPrivate = true;
                        channel.IsSecret = false;
                        break;
                    case '@':
                        channel.IsSecret = true;
                        break;
                }

                string[] users = message.Parameters[3].Split(' ');

                foreach (string userStr in users)
                {
                    if (string.IsNullOrEmpty(userStr))
                    {
                        break;
                    }

                    UserRank rank = UserRank.None;
                    string nick = userStr;

                    char[] ranks = userStr.TakeWhile(c => User.RankChars.ContainsKey(c)).ToArray(); // Take all the user statuses
                    nick = new string(userStr.SkipWhile(c => User.RankChars.ContainsKey(c)).ToArray()); // Take the remaining nick

                    User user = client.UserFactory.FromNick(nick);

                    foreach (char rankChar in ranks)
                    {
                        rank = rank | User.RankChars[rankChar];
                    }

                    channel.SetRank(user, rank);
                    channel.AddUser(user);
                }

                channel.TriggerOnNames(users);
            }
        }
Example #7
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User user = message.GetUser();
            Channel channel = message.GetChannel();
            string topic = message.Parameters[1];

            channel.Topic.Message = topic;
            channel.Topic.Author = user;
            channel.Topic.LastUpdated = DateTime.Now;

            channel.TriggerOnTopicChange(channel.Topic);
        }
Example #8
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User user = message.GetUser();
            Channel channel = message.GetChannel();

            channel.JoinUser(user);

            if (user == client.User)
            {
                client.TriggerOnChannelJoin(channel);
            }

            client.Send(channel.SendWho());
        }
Example #9
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User target = message.GetUserFromNick(message.Parameters[0]);

            if (target == client.User)
            {
                Channel channel = message.GetChannel(message.Parameters[1]);

                string topic = null;
                if (message.Parameters.Length >= 3)
                    topic= message.Parameters[2];

                channel.Topic.Message = topic;
            }
        }
Example #10
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User target = message.GetUserFromNick(message.Parameters[0]);

            if (target == client.User)
            {
                Channel channel = message.GetChannel(message.Parameters[1]);
                User user = message.GetUser(message.Parameters[2]);
                int timestamp = int.Parse(message.Parameters[3]);

                DateTime time = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
                time = time.AddSeconds(timestamp);

                channel.Topic.Author = user;
                channel.Topic.LastUpdated = time.ToLocalTime();
                channel.TriggerOnTopic(channel.Topic);
            }
        }
Example #11
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            Channel channel = message.GetChannel();
            User user = message.GetUser();

            string reason = null;
            if (message.Parameters.Length >= 2)
                reason = message.Parameters[1];

            channel.LeaveUser(user, reason);

            if (user == client.User)
            {
                client.ChannelFactory.RemoveName(channel.Name);
                client.TriggerOnChannelLeave(channel);
                channel.ClearUsers();
            }

            else
            {
                client.Send(channel.SendWho());
            }
        }
Example #12
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            User setter = message.GetUser();
            Channel channel = message.GetChannel();
            string modes = message.Parameters[1];
            string[] parameters = message.Parameters.Skip(2).ToArray();

            List<KeyValuePair<string, string>> changes = this.ParseModes(client, channel, modes, parameters);
            channel.TriggerOnMode(setter, changes);
        }
Example #13
0
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            Channel target = message.GetChannel(message.Parameters[0]);

            target.InviteList.Add(message.Parameters[1]);
        }
        public void ProcessMessage(ParsedMessage message, Client client)
        {
            Channel channel = message.GetChannel(message.Parameters[1]);

            channel.TriggerOnChannelOperatorNeeded(channel, message.Parameters[2]);
        }