[Feature] Guild bans with seconds prune period (#2898)
* rip legacy code * rename so no conflicts * eh renamed wrong thing
This commit is contained in:
@@ -544,6 +544,29 @@ namespace Discord
|
|||||||
/// A task that represents the asynchronous add operation for the ban.
|
/// A task that represents the asynchronous add operation for the ban.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
Task AddBanAsync(ulong userId, int pruneDays = 0, string reason = null, RequestOptions options = null);
|
Task AddBanAsync(ulong userId, int pruneDays = 0, string reason = null, RequestOptions options = null);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bans the user from this guild and optionally prunes their recent messages.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="user">The user to ban.</param>
|
||||||
|
/// <param name="pruneSeconds">The number of seconds to remover messages from this user for, between 0 and 604800</param>
|
||||||
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
|
/// <returns>
|
||||||
|
/// A task that represents the asynchronous add operation for the ban.
|
||||||
|
/// </returns>
|
||||||
|
Task BanUserAsync(IUser user, uint pruneSeconds = 0, RequestOptions options = null);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bans the user from this guild and optionally prunes their recent messages.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId">The ID of the user to ban.</param>
|
||||||
|
/// <param name="pruneSeconds">The number of seconds to remover messages from this user for, between 0 and 604800</param>
|
||||||
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
|
/// <returns>
|
||||||
|
/// A task that represents the asynchronous add operation for the ban.
|
||||||
|
/// </returns>
|
||||||
|
Task BanUserAsync(ulong userId, uint pruneSeconds = 0, RequestOptions options = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unbans the user if they are currently banned.
|
/// Unbans the user if they are currently banned.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
namespace Discord.API.Rest
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Discord.API.Rest;
|
||||||
|
|
||||||
|
internal class CreateGuildBanParams
|
||||||
{
|
{
|
||||||
internal class CreateGuildBanParams
|
[JsonProperty("delete_message_seconds")]
|
||||||
{
|
public uint DeleteMessageSeconds { get; set; }
|
||||||
public Optional<int> DeleteMessageDays { get; set; }
|
|
||||||
public string Reason { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1743,22 +1743,23 @@ namespace Discord.API
|
|||||||
/// <exception cref="ArgumentException">
|
/// <exception cref="ArgumentException">
|
||||||
/// <paramref name="guildId"/> and <paramref name="userId"/> must not be equal to zero.
|
/// <paramref name="guildId"/> and <paramref name="userId"/> must not be equal to zero.
|
||||||
/// -and-
|
/// -and-
|
||||||
/// <paramref name="args.DeleteMessageDays"/> must be between 0 to 7.
|
/// <paramref name="deleteMessageSeconds"/> must be between 0 and 604800.
|
||||||
/// </exception>
|
/// </exception>
|
||||||
/// <exception cref="ArgumentNullException"><paramref name="args"/> must not be <see langword="null"/>.</exception>
|
public Task CreateGuildBanAsync(ulong guildId, ulong userId, uint deleteMessageSeconds, string reason, RequestOptions options = null)
|
||||||
public Task CreateGuildBanAsync(ulong guildId, ulong userId, CreateGuildBanParams args, RequestOptions options = null)
|
|
||||||
{
|
{
|
||||||
Preconditions.NotEqual(guildId, 0, nameof(guildId));
|
Preconditions.NotEqual(guildId, 0, nameof(guildId));
|
||||||
Preconditions.NotEqual(userId, 0, nameof(userId));
|
Preconditions.NotEqual(userId, 0, nameof(userId));
|
||||||
Preconditions.NotNull(args, nameof(args));
|
|
||||||
Preconditions.AtLeast(args.DeleteMessageDays, 0, nameof(args.DeleteMessageDays), "Prune length must be within [0, 7]");
|
Preconditions.AtMost(deleteMessageSeconds, 604800, nameof(deleteMessageSeconds), "Prune length must be within [0, 604800]");
|
||||||
Preconditions.AtMost(args.DeleteMessageDays, 7, nameof(args.DeleteMessageDays), "Prune length must be within [0, 7]");
|
|
||||||
|
var data = new CreateGuildBanParams { DeleteMessageSeconds = deleteMessageSeconds };
|
||||||
|
|
||||||
options = RequestOptions.CreateOrClone(options);
|
options = RequestOptions.CreateOrClone(options);
|
||||||
|
|
||||||
var ids = new BucketIds(guildId: guildId);
|
var ids = new BucketIds(guildId: guildId);
|
||||||
if (!string.IsNullOrWhiteSpace(args.Reason))
|
if (!string.IsNullOrWhiteSpace(reason))
|
||||||
options.AuditLogReason = args.Reason;
|
options.AuditLogReason = reason;
|
||||||
return SendAsync("PUT", () => $"guilds/{guildId}/bans/{userId}?delete_message_days={args.DeleteMessageDays}", ids, options: options);
|
return SendJsonAsync("PUT", () => $"guilds/{guildId}/bans/{userId}", data, ids, options: options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <exception cref="ArgumentException"><paramref name="guildId"/> and <paramref name="userId"/> must not be equal to zero.</exception>
|
/// <exception cref="ArgumentException"><paramref name="guildId"/> and <paramref name="userId"/> must not be equal to zero.</exception>
|
||||||
|
|||||||
@@ -235,11 +235,15 @@ namespace Discord.Rest
|
|||||||
return model == null ? null : RestBan.Create(client, model);
|
return model == null ? null : RestBan.Create(client, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Task AddBanAsync(IGuild guild, BaseDiscordClient client,
|
public static Task AddBanAsync(IGuild guild, BaseDiscordClient client, ulong userId, int pruneDays, string reason, RequestOptions options)
|
||||||
ulong userId, int pruneDays, string reason, RequestOptions options)
|
|
||||||
{
|
{
|
||||||
var args = new CreateGuildBanParams { DeleteMessageDays = pruneDays, Reason = reason };
|
Preconditions.AtLeast(pruneDays, 0, nameof(pruneDays), "Prune length must be within [0, 7]");
|
||||||
return client.ApiClient.CreateGuildBanAsync(guild.Id, userId, args, options);
|
return client.ApiClient.CreateGuildBanAsync(guild.Id, userId, (uint)pruneDays * 86400, reason, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task AddBanAsync(IGuild guild, BaseDiscordClient client, ulong userId, uint pruneSeconds, RequestOptions options)
|
||||||
|
{
|
||||||
|
return client.ApiClient.CreateGuildBanAsync(guild.Id, userId, pruneSeconds, null, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Task RemoveBanAsync(IGuild guild, BaseDiscordClient client, ulong userId, RequestOptions options)
|
public static Task RemoveBanAsync(IGuild guild, BaseDiscordClient client, ulong userId, RequestOptions options)
|
||||||
|
|||||||
@@ -395,6 +395,13 @@ namespace Discord.Rest
|
|||||||
public Task AddBanAsync(ulong userId, int pruneDays = 0, string reason = null, RequestOptions options = null)
|
public Task AddBanAsync(ulong userId, int pruneDays = 0, string reason = null, RequestOptions options = null)
|
||||||
=> GuildHelper.AddBanAsync(this, Discord, userId, pruneDays, reason, options);
|
=> GuildHelper.AddBanAsync(this, Discord, userId, pruneDays, reason, options);
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public Task BanUserAsync(IUser user, uint pruneSeconds = 0, RequestOptions options = null)
|
||||||
|
=> GuildHelper.AddBanAsync(this, Discord, user.Id, pruneSeconds, options);
|
||||||
|
/// <inheritdoc />
|
||||||
|
public Task BanUserAsync(ulong userId, uint pruneSeconds = 0, RequestOptions options = null)
|
||||||
|
=> GuildHelper.AddBanAsync(this, Discord, userId, pruneSeconds, options);
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task RemoveBanAsync(IUser user, RequestOptions options = null)
|
public Task RemoveBanAsync(IUser user, RequestOptions options = null)
|
||||||
=> GuildHelper.RemoveBanAsync(this, Discord, user.Id, options);
|
=> GuildHelper.RemoveBanAsync(this, Discord, user.Id, options);
|
||||||
|
|||||||
@@ -716,6 +716,13 @@ namespace Discord.WebSocket
|
|||||||
public Task AddBanAsync(ulong userId, int pruneDays = 0, string reason = null, RequestOptions options = null)
|
public Task AddBanAsync(ulong userId, int pruneDays = 0, string reason = null, RequestOptions options = null)
|
||||||
=> GuildHelper.AddBanAsync(this, Discord, userId, pruneDays, reason, options);
|
=> GuildHelper.AddBanAsync(this, Discord, userId, pruneDays, reason, options);
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public Task BanUserAsync(IUser user, uint pruneSeconds = 0, RequestOptions options = null)
|
||||||
|
=> GuildHelper.AddBanAsync(this, Discord, user.Id, pruneSeconds, options);
|
||||||
|
/// <inheritdoc />
|
||||||
|
public Task BanUserAsync(ulong userId, uint pruneSeconds = 0, RequestOptions options = null)
|
||||||
|
=> GuildHelper.AddBanAsync(this, Discord, userId, pruneSeconds, options);
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task RemoveBanAsync(IUser user, RequestOptions options = null)
|
public Task RemoveBanAsync(IUser user, RequestOptions options = null)
|
||||||
=> GuildHelper.RemoveBanAsync(this, Discord, user.Id, options);
|
=> GuildHelper.RemoveBanAsync(this, Discord, user.Id, options);
|
||||||
|
|||||||
Reference in New Issue
Block a user