diff --git a/src/Discord.Net.Core/Entities/Guilds/IUserGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IUserGuild.cs
index b6685edf6..741dc335c 100644
--- a/src/Discord.Net.Core/Entities/Guilds/IUserGuild.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/IUserGuild.cs
@@ -18,5 +18,13 @@ namespace Discord
/// Returns the current user's permissions for this guild.
///
GuildPermissions Permissions { get; }
+
+ ///
+ /// Gets the features for this guild.
+ ///
+ ///
+ /// A flags enum containing all the features for the guild.
+ ///
+ GuildFeatures Features { get; }
}
}
diff --git a/src/Discord.Net.Rest/API/Common/UserGuild.cs b/src/Discord.Net.Rest/API/Common/UserGuild.cs
index fc1fe833d..a501604a0 100644
--- a/src/Discord.Net.Rest/API/Common/UserGuild.cs
+++ b/src/Discord.Net.Rest/API/Common/UserGuild.cs
@@ -14,5 +14,7 @@ namespace Discord.API
public bool Owner { get; set; }
[JsonProperty("permissions"), Int53]
public string Permissions { get; set; }
+ [JsonProperty("features")]
+ public GuildFeatures Features { get; set; }
}
}
diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs
index 0778e69ad..503a3801b 100644
--- a/src/Discord.Net.Rest/DiscordRestClient.cs
+++ b/src/Discord.Net.Rest/DiscordRestClient.cs
@@ -152,6 +152,19 @@ namespace Discord.Rest
#endregion
+ public async Task GetCurrentUserAsync(RequestOptions options = null)
+ {
+ var user = RestSelfUser.Create(this, await ApiClient.GetMyUserAsync(options));
+ base.CurrentUser = user;
+ return user;
+ }
+
+ public async Task GetCurrentUserGuildMemberAsync(ulong guildId, RequestOptions options = null)
+ {
+ var user = await ApiClient.GetCurrentUserGuildMember(guildId, options);
+ return RestGuildUser.Create(this, null, user, guildId);
+ }
+
public async Task GetApplicationInfoAsync(RequestOptions options = null)
{
return _applicationInfo ??= await ClientHelper.GetApplicationInfoAsync(this, options).ConfigureAwait(false);
diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestUserGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestUserGuild.cs
index b75d6288e..6131c6520 100644
--- a/src/Discord.Net.Rest/Entities/Guilds/RestUserGuild.cs
+++ b/src/Discord.Net.Rest/Entities/Guilds/RestUserGuild.cs
@@ -21,6 +21,8 @@ namespace Discord.Rest
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
///
public string IconUrl => CDN.GetGuildIconUrl(Id, _iconId);
+ ///
+ public GuildFeatures Features { get; private set; }
internal RestUserGuild(BaseDiscordClient discord, ulong id)
: base(discord, id)
@@ -39,12 +41,20 @@ namespace Discord.Rest
IsOwner = model.Owner;
Name = model.Name;
Permissions = new GuildPermissions(model.Permissions);
+ Features = model.Features;
}
public async Task LeaveAsync(RequestOptions options = null)
{
await Discord.ApiClient.LeaveGuildAsync(Id, options).ConfigureAwait(false);
}
+
+ public async Task GetCurrentUserGuildMemberAsync(RequestOptions options = null)
+ {
+ var user = await Discord.ApiClient.GetCurrentUserGuildMember(Id, options);
+ return RestGuildUser.Create(Discord, null, user, Id);
+ }
+
///
public async Task DeleteAsync(RequestOptions options = null)
{