public void UpdateByNameReply(NameReply nameReply) { foreach (var nameItem in nameReply.Names) { if (!this.ContainsKey(nameItem.Nickname)) { this[nameItem.Nickname] = new ChannelUser(nameItem.Nickname); } } }
/// <summary> /// Parses a RPL_NAMREPLY reply. /// </summary> public static NameReply ParseNameReply(Message message) { Debug.Assert(message.NumericReply == NumericalReplyCodes.RPL_NAMREPLY); Debug.Assert(message.Parameters.Count == 4); var nameReply = new NameReply(message.Parameters[1], message.Parameters[2]); foreach (var item in message.TrailingParameter.Split(new[] {' '})) { var match = Regex.Match(item, @"([@+]?)(.+)"); if (match.Success) { var nameItem = new NameReplyItem(match.Groups[1].Value, match.Groups[2].Value); nameReply.Names.Add(nameItem); } } return nameReply; }