diff --git a/src/Discord.Net.Core/Entities/Invites/IInvite.cs b/src/Discord.Net.Core/Entities/Invites/IInvite.cs
index 47ffffacb..292fc5c2b 100644
--- a/src/Discord.Net.Core/Entities/Invites/IInvite.cs
+++ b/src/Discord.Net.Core/Entities/Invites/IInvite.cs
@@ -56,6 +56,9 @@ namespace Discord
///
/// Gets the guild this invite is linked to.
///
+ ///
+ /// Guild might have empty properties due to API not returning full guild object.
+ ///
///
/// A guild object representing the guild that the invite points to.
///
diff --git a/src/Discord.Net.Rest/API/Common/Guild.cs b/src/Discord.Net.Rest/API/Common/Guild.cs
index d091c26a7..e49704d64 100644
--- a/src/Discord.Net.Rest/API/Common/Guild.cs
+++ b/src/Discord.Net.Rest/API/Common/Guild.cs
@@ -66,7 +66,7 @@ namespace Discord.API
[JsonProperty("premium_subscription_count")]
public int? PremiumSubscriptionCount { get; set; }
[JsonProperty("preferred_locale")]
- public string PreferredLocale { get; set; }
+ public Optional PreferredLocale { get; set; }
[JsonProperty("public_updates_channel_id")]
public ulong? PublicUpdatesChannelId { get; set; }
[JsonProperty("max_video_channel_users")]
diff --git a/src/Discord.Net.Rest/API/Common/Invite.cs b/src/Discord.Net.Rest/API/Common/Invite.cs
index f9d53bad6..7b797a97d 100644
--- a/src/Discord.Net.Rest/API/Common/Invite.cs
+++ b/src/Discord.Net.Rest/API/Common/Invite.cs
@@ -7,7 +7,7 @@ namespace Discord.API
[JsonProperty("code")]
public string Code { get; set; }
[JsonProperty("guild")]
- public Optional Guild { get; set; }
+ public Optional Guild { get; set; }
[JsonProperty("channel")]
public InviteChannel Channel { get; set; }
[JsonProperty("inviter")]
diff --git a/src/Discord.Net.Rest/API/Common/InviteGuild.cs b/src/Discord.Net.Rest/API/Common/InviteGuild.cs
deleted file mode 100644
index 8d63de60d..000000000
--- a/src/Discord.Net.Rest/API/Common/InviteGuild.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace Discord.API
-{
- internal class InviteGuild
- {
- [JsonProperty("id")]
- public ulong Id { get; set; }
-
- [JsonProperty("name")]
- public string Name { get; set; }
-
- [JsonProperty("splash")]
- public Optional Splash { get; set; }
-
- [JsonProperty("banner")]
- public Optional BannerHash { get; set; }
-
- [JsonProperty("description")]
- public Optional Description { get; set; }
-
- [JsonProperty("icon")]
- public Optional IconHash { get; set; }
-
- [JsonProperty("features")]
- public GuildFeatures Features { get; set; }
-
- [JsonProperty("verification_level")]
- public VerificationLevel VerificationLevel { get; set; }
-
- [JsonProperty("vanity_url_code")]
- public Optional VanityUrlCode { get; set; }
-
- [JsonProperty("premium_subscription_count")]
- public Optional PremiumSubscriptionCount { get; set; }
-
- [JsonProperty("nsfw")]
- public Optional Nsfw { get; set; }
-
- [JsonProperty("nsfw_level")]
- public NsfwLevel NsfwLevel { get; set; }
-
- [JsonProperty("welcome_screen")]
- public Optional WelcomeScreen { get; set; }
- }
-}
diff --git a/src/Discord.Net.Rest/ClientHelper.cs b/src/Discord.Net.Rest/ClientHelper.cs
index 0c8f8c42f..ceed8420e 100644
--- a/src/Discord.Net.Rest/ClientHelper.cs
+++ b/src/Discord.Net.Rest/ClientHelper.cs
@@ -57,7 +57,7 @@ namespace Discord.Rest
{
var model = await client.ApiClient.GetInviteAsync(inviteId, options).ConfigureAwait(false);
if (model != null)
- return RestInviteMetadata.Create(client, null, null, model);
+ return RestInviteMetadata.Create(client, RestGuild.Create(client, model.Guild.IsSpecified ? model.Guild.Value : null), null, model);
return null;
}
diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs
index e0e96a104..9bccd4abb 100644
--- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs
+++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs
@@ -181,8 +181,8 @@ namespace Discord.Rest
MaxMembers = model.MaxMembers.Value;
if (model.MaxVideoChannelUsers.IsSpecified)
MaxVideoChannelUsers = model.MaxVideoChannelUsers.Value;
- PreferredLocale = model.PreferredLocale;
- PreferredCulture = new CultureInfo(PreferredLocale);
+ PreferredLocale = model.PreferredLocale.IsSpecified ? model.PreferredLocale.Value : null;
+ PreferredCulture = model.PreferredLocale.IsSpecified ? new CultureInfo(PreferredLocale) : null;
if (model.ApproximateMemberCount.IsSpecified)
ApproximateMemberCount = model.ApproximateMemberCount.Value;
if (model.ApproximatePresenceCount.IsSpecified)
diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs
index 7d53619f1..283b46de4 100644
--- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs
+++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs
@@ -515,7 +515,7 @@ namespace Discord.WebSocket
MaxMembers = model.MaxMembers.Value;
if (model.MaxVideoChannelUsers.IsSpecified)
MaxVideoChannelUsers = model.MaxVideoChannelUsers.Value;
- PreferredLocale = model.PreferredLocale;
+ PreferredLocale = model.PreferredLocale.IsSpecified ? model.PreferredLocale.Value : null;
PreferredCulture = PreferredLocale == null ? null : new CultureInfo(PreferredLocale);
if (model.IsBoostProgressBarEnabled.IsSpecified)
IsBoostProgressBarEnabled = model.IsBoostProgressBarEnabled.Value;