diff --git a/src/Discord.Net/API/Common/Ban.cs b/src/Discord.Net/API/Common/Ban.cs index 121dff840..c1f667e65 100644 --- a/src/Discord.Net/API/Common/Ban.cs +++ b/src/Discord.Net/API/Common/Ban.cs @@ -1,9 +1,13 @@ #pragma warning disable CS1591 +using Newtonsoft.Json; + namespace Discord.API { public class Ban { + [JsonProperty("user")] public User User { get; set; } + [JsonProperty("reason")] public string Reason { get; set; } } } diff --git a/src/Discord.Net/API/DiscordRestApiClient.cs b/src/Discord.Net/API/DiscordRestApiClient.cs index 8d908dc2b..cd64df50a 100644 --- a/src/Discord.Net/API/DiscordRestApiClient.cs +++ b/src/Discord.Net/API/DiscordRestApiClient.cs @@ -440,11 +440,11 @@ namespace Discord.API } //Guild Bans - public async Task> GetGuildBansAsync(ulong guildId, RequestOptions options = null) + public async Task> GetGuildBansAsync(ulong guildId, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); - return await SendAsync>("GET", $"guilds/{guildId}/bans", options: options).ConfigureAwait(false); + return await SendAsync>("GET", $"guilds/{guildId}/bans", options: options).ConfigureAwait(false); } public async Task CreateGuildBanAsync(ulong guildId, ulong userId, CreateGuildBanParams args, RequestOptions options = null) { diff --git a/src/Discord.Net/Entities/Guilds/Ban.cs b/src/Discord.Net/Entities/Guilds/Ban.cs new file mode 100644 index 000000000..5d9d3df07 --- /dev/null +++ b/src/Discord.Net/Entities/Guilds/Ban.cs @@ -0,0 +1,20 @@ +using System.Diagnostics; + +namespace Discord +{ + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public struct Ban + { + public IUser User { get; } + public string Reason { get; } + + public Ban(IUser user, string reason) + { + User = user; + Reason = reason; + } + + public override string ToString() => User.ToString(); + private string DebuggerDisplay => $"{User}: {Reason}"; + } +} diff --git a/src/Discord.Net/Entities/Guilds/IGuild.cs b/src/Discord.Net/Entities/Guilds/IGuild.cs index fc55334ef..b1c010439 100644 --- a/src/Discord.Net/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net/Entities/Guilds/IGuild.cs @@ -61,7 +61,7 @@ namespace Discord Task LeaveAsync(); /// Gets a collection of all users banned on this guild. - Task> GetBansAsync(); + Task> GetBansAsync(); /// Bans the provided user from this guild and optionally prunes their recent messages. Task AddBanAsync(IUser user, int pruneDays = 0); /// Bans the provided user id from this guild and optionally prunes their recent messages. diff --git a/src/Discord.Net/Rest/Entities/Guilds/Guild.cs b/src/Discord.Net/Rest/Entities/Guilds/Guild.cs index 43c6f9e5d..d70a31d21 100644 --- a/src/Discord.Net/Rest/Entities/Guilds/Guild.cs +++ b/src/Discord.Net/Rest/Entities/Guilds/Guild.cs @@ -157,10 +157,10 @@ namespace Discord await Discord.ApiClient.DeleteGuildAsync(Id).ConfigureAwait(false); } - public async Task> GetBansAsync() + public async Task> GetBansAsync() { var models = await Discord.ApiClient.GetGuildBansAsync(Id).ConfigureAwait(false); - return models.Select(x => new User(x)).ToImmutableArray(); + return models.Select(x => new Ban(new User(x.User), x.Reason)).ToImmutableArray(); } public Task AddBanAsync(IUser user, int pruneDays = 0) => AddBanAsync(user, pruneDays); public async Task AddBanAsync(ulong userId, int pruneDays = 0)