internal void Update(ExtendedGuild model) { Update(model as Guild); if (model.Channels != null) { foreach (var subModel in model.Channels) { AddChannel(subModel.Id).Update(subModel); } } if (model.Members != null) { foreach (var subModel in model.Members) { AddUser(subModel.User.Id).Update(subModel); } } if (model.VoiceStates != null) { foreach (var subModel in model.VoiceStates) { GetUser(subModel.UserId)?.Update(subModel); } } if (model.Presences != null) { foreach (var subModel in model.Presences) { GetUser(subModel.User.Id)?.Update(subModel); } } }
internal void Update(ExtendedGuild model) { Update(model as Guild); //Only channels or members should have AddXXX(cachePerms: true), not both if (model.Channels != null) { _channels = new ConcurrentDictionary <ulong, Channel>(2, (int)(model.Channels.Length * 1.05)); foreach (var subModel in model.Channels) { AddChannel(subModel.Id, false).Update(subModel); } DefaultChannel = _channels[Id]; } if (model.MemberCount != null) { if (_users == null) { _users = new ConcurrentDictionary <ulong, Member>(2, (int)(model.MemberCount * 1.05)); } _userCount = model.MemberCount.Value; } if (!model.IsLarge) { if (model.Members != null) { foreach (var subModel in model.Members) { AddUser(subModel.User.Id, true, false).Update(subModel); } } if (model.VoiceStates != null) { foreach (var subModel in model.VoiceStates) { GetUser(subModel.UserId)?.Update(subModel); } } if (model.Presences != null) { foreach (var subModel in model.Presences) { GetUser(subModel.User.Id)?.Update(subModel); } } } }