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) {