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))); }
public void ProcessMessage(ParsedMessage message, Client client) { User user = message.GetUser(); Channel channel = message.GetChannel(); string line = message.Parameters[1]; channel.TriggerOnMessage(user, line); }
public void ProcessMessage(ParsedMessage message, Client client) { User user = message.GetUser(); Channel channel = message.GetChannel(); string action = message.GetCTCPParameter(); channel.TriggerOnAction(user, action); }
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); }
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(); } }
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); } }
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); }
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()); }
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; } }
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); } }
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()); } }
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); }
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]); }