diff --git a/src/Discord.Net/Models/User.cs b/src/Discord.Net/Models/User.cs index 3726f6616..1c28c5531 100644 --- a/src/Discord.Net/Models/User.cs +++ b/src/Discord.Net/Models/User.cs @@ -61,7 +61,8 @@ namespace Discord private readonly Reference _server; [JsonIgnore] - public Channel VoiceChannel { get; private set; } + public Channel VoiceChannel => _voiceChannel.Value; + private Reference _voiceChannel; [JsonIgnore] public IEnumerable Roles => _roles.Select(x => x.Value); @@ -130,6 +131,8 @@ namespace Discord if (Id == _client.CurrentUserId) x.CurrentUser = null; }); + _voiceChannel = new Reference(x => _client.Channels[x]); + Status = UserStatus.Offline; _channels = new ConcurrentDictionary(); if (serverId != null) @@ -210,16 +213,16 @@ namespace Discord SessionId = model.SessionId; if (model.Token != null) Token = model.Token; - - if (model.ChannelId != null) - VoiceChannel = _client.Channels[model.ChannelId]; + if (model.IsSelfDeafened != null) IsSelfDeafened = model.IsSelfDeafened.Value; if (model.IsSelfMuted != null) IsSelfMuted = model.IsSelfMuted.Value; if (model.IsServerSuppressed != null) IsServerSuppressed = model.IsServerSuppressed.Value; - } + + _voiceChannel.Id = model.ChannelId; //Can be null + } private void UpdateRoles(IEnumerable roles) { if (_server.Id != null)