diff --git a/src/Discord.Net/DiscordClient.Invites.cs b/src/Discord.Net/DiscordClient.Invites.cs index 10d1ee016..027257d9b 100644 --- a/src/Discord.Net/DiscordClient.Invites.cs +++ b/src/Discord.Net/DiscordClient.Invites.cs @@ -26,7 +26,8 @@ namespace Discord var response = await _api.GetInvite(inviteIdOrXkcd).ConfigureAwait(false); var invite = new Invite(this, response.Code, response.XkcdPass, response.Guild.Id, response.Inviter?.Id, response.Channel?.Id); invite.Cache(); //Builds references - return invite; + invite.Update(response); + return invite; } /// Creates a new invite to the default channel of the provided server. diff --git a/src/Discord.Net/Models/Invite.cs b/src/Discord.Net/Models/Invite.cs index a8f6caf73..97ad94a04 100644 --- a/src/Discord.Net/Models/Invite.cs +++ b/src/Discord.Net/Models/Invite.cs @@ -48,21 +48,30 @@ namespace Discord { var server = _client.Servers[x]; if (server == null) + { server = _generatedServer = new Server(client, x); + server.Cache(); + } return server; }); _inviter = new Reference(serverId, x => { var inviter = _client.Users[x, _server.Id]; if (inviter == null) + { inviter = _generatedInviter = new User(client, x, _server.Id); + inviter.Cache(); + } return inviter; }); _channel = new Reference(serverId, x => { var channel = _client.Channels[x]; if (channel == null) + { channel = _generatedChannel = new Channel(client, x, _server.Id, null); + channel.Cache(); + } return channel; }); } @@ -75,9 +84,9 @@ namespace Discord internal override void UnloadReferences() { } public override string ToString() => XkcdCode ?? Id; - - internal void Update(InviteInfo model) + + internal void Update(InviteReference model) { if (model.Guild != null && _generatedServer != null) _generatedServer.Update(model.Guild); @@ -85,6 +94,10 @@ namespace Discord _generatedInviter.Update(model.Inviter); if (model.Channel != null && _generatedChannel != null) _generatedChannel.Update(model.Channel); + } + internal void Update(InviteInfo model) + { + Update(model as InviteReference); if (model.IsRevoked != null) IsRevoked = model.IsRevoked.Value; @@ -96,6 +109,6 @@ namespace Discord MaxUses = model.MaxUses.Value; if (model.Uses != null) Uses = model.Uses.Value; - } + } } }