diff --git a/src/Models/Channels/Channel.cs b/src/Models/Channels/Channel.cs
index 4ebf077f2..786b3c60a 100644
--- a/src/Models/Channels/Channel.cs
+++ b/src/Models/Channels/Channel.cs
@@ -39,7 +39,7 @@ namespace Discord.Net.Models
///
/// Maximum langth of a channel topic.
///
- public const int MaxRateLimitPerUserDuration = 1024;
+ public const int MaxRateLimitPerUserDuration = 21600;
///
/// Minimum amount of users in channel.
diff --git a/src/Models/Guilds/Ban.cs b/src/Models/Guilds/Ban.cs
index 06ebfe276..43f82c8f2 100644
--- a/src/Models/Guilds/Ban.cs
+++ b/src/Models/Guilds/Ban.cs
@@ -11,6 +11,16 @@ namespace Discord.Net.Models
public record Ban
{
///
+ /// Minimum amount of days to delete messages when banning.
+ ///
+ public const int MinDaysToDeleteMessages = 0;
+
+ ///
+ /// Maximum amount of days to delete messages when banning.
+ ///
+ public const int MaxDaysToDeleteMessages = 7;
+
+ ///
/// The reason for the ban.
///
[JsonPropertyName("reason")]
diff --git a/src/Models/Guilds/Guild.cs b/src/Models/Guilds/Guild.cs
index 4eb64b793..a938801e7 100644
--- a/src/Models/Guilds/Guild.cs
+++ b/src/Models/Guilds/Guild.cs
@@ -12,6 +12,36 @@ namespace Discord.Net.Models
public record Guild
{
///
+ /// Minimum langth of a guild name.
+ ///
+ public const int MinGuildNameLength = 2;
+
+ ///
+ /// Maximum langth of a guild name.
+ ///
+ public const int MaxGuildNameLength = 100;
+
+ ///
+ /// Minimum amount of days to prune for.
+ ///
+ public const int MinAmountOfDaysToPruneFor = 1;
+
+ ///
+ /// Maximum amount of days to prune for.
+ ///
+ public const int MaxAmountOfDaysToPruneFor = 30;
+
+ ///
+ /// Minimum limit of users to list.
+ ///
+ public const int MinUserLimitToList = 1;
+
+ ///
+ /// Maximum limit of users to list.
+ ///
+ public const int MaxUserLimitToList = 1000;
+
+ ///
/// id.
///
[JsonPropertyName("id")]
diff --git a/src/Models/Guilds/GuildMember.cs b/src/Models/Guilds/GuildMember.cs
index f024acb5f..c01da4bfc 100644
--- a/src/Models/Guilds/GuildMember.cs
+++ b/src/Models/Guilds/GuildMember.cs
@@ -12,13 +12,18 @@ namespace Discord.Net.Models
public record GuildMember
{
///
+ /// Maximum langth of a guild member nickname.
+ ///
+ public const int MaxNicknameLength = 32;
+
+ ///
/// The this represents.
///
[JsonPropertyName("user")]
public Optional User { get; init; }
///
- /// This users nickname.
+ /// This user's nickname.
///
[JsonPropertyName("nick")]
public Optional Nick { get; init; }
diff --git a/src/Models/Invites/Invite.cs b/src/Models/Invites/Invite.cs
index f17d9d44a..17aa468c6 100644
--- a/src/Models/Invites/Invite.cs
+++ b/src/Models/Invites/Invite.cs
@@ -14,8 +14,12 @@ namespace Discord.Net.Models
///
/// The code (unique ID).
///
+ ///
+ /// Might be if it is a vanity url invite and
+ /// it was not set for the .
+ ///
[JsonPropertyName("code")]
- public string? Code { get; init; } // Required property candidate
+ public string? Code { get; init; }
///
/// The this is for.
diff --git a/src/Rest/DiscordRestClient.cs b/src/Rest/DiscordRestClient.cs
index fff0069a2..a3a8cb108 100644
--- a/src/Rest/DiscordRestClient.cs
+++ b/src/Rest/DiscordRestClient.cs
@@ -41,7 +41,7 @@ namespace Discord.Net
#region Channel
///
- public Task GetChannelAsync(Snowflake channelId, CancellationToken cancellationToken = default)
+ public Task GetChannelAsync(Snowflake channelId, CancellationToken cancellationToken = default)
{
Preconditions.NotZero(channelId, nameof(channelId));
return _api.GetChannelAsync(channelId, cancellationToken);
@@ -82,7 +82,7 @@ namespace Discord.Net
}
///
- public Task GetChannelMessagesAsync(Snowflake channelId, GetChannelMessagesParams args, CancellationToken cancellationToken = default)
+ public Task> GetChannelMessagesAsync(Snowflake channelId, GetChannelMessagesParams args, CancellationToken cancellationToken = default)
{
Preconditions.NotZero(channelId, nameof(channelId));
Preconditions.NotNull(args, nameof(args));
@@ -91,7 +91,7 @@ namespace Discord.Net
}
///
- public Task GetChannelMessageAsync(Snowflake channelId, Snowflake messageId, CancellationToken cancellationToken = default)
+ public Task GetChannelMessageAsync(Snowflake channelId, Snowflake messageId, CancellationToken cancellationToken = default)
{
Preconditions.NotZero(channelId, nameof(channelId));
Preconditions.NotZero(messageId, nameof(messageId));
@@ -144,7 +144,7 @@ namespace Discord.Net
}
///
- public Task GetReactionsAsync(Snowflake channelId, Snowflake messageId, Emoji emoji, GetReactionsParams args, CancellationToken cancellationToken = default)
+ public Task> GetReactionsAsync(Snowflake channelId, Snowflake messageId, Emoji emoji, GetReactionsParams args, CancellationToken cancellationToken = default)
{
Preconditions.NotZero(channelId, nameof(channelId));
Preconditions.NotZero(messageId, nameof(messageId));
@@ -209,7 +209,7 @@ namespace Discord.Net
}
///
- public Task GetChannelInvitesAsync(Snowflake channelId, CancellationToken cancellationToken = default)
+ public Task> GetChannelInvitesAsync(Snowflake channelId, CancellationToken cancellationToken = default)
{
Preconditions.NotZero(channelId, nameof(channelId));
return _api.GetChannelInvitesAsync(channelId, cancellationToken);
@@ -249,7 +249,7 @@ namespace Discord.Net
}
///
- public Task GetPinnedMessagesAsync(Snowflake channelId, CancellationToken cancellationToken = default)
+ public Task> GetPinnedMessagesAsync(Snowflake channelId, CancellationToken cancellationToken = default)
{
Preconditions.NotZero(channelId, nameof(channelId));
return _api.GetPinnedMessagesAsync(channelId, cancellationToken);
@@ -339,7 +339,7 @@ namespace Discord.Net
}
///
- public Task ListThreadMembersAsync(Snowflake channelId, CancellationToken cancellationToken = default)
+ public Task> ListThreadMembersAsync(Snowflake channelId, CancellationToken cancellationToken = default)
{
Preconditions.NotZero(channelId, nameof(channelId));
return _api.ListThreadMembersAsync(channelId, cancellationToken);
@@ -380,5 +380,396 @@ namespace Discord.Net
}
#endregion Channel
+
+ #region Emoji
+
+ ///
+ public Task> ListGuildEmojisAsync(Snowflake guildId, Emoji emoji, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(emoji, nameof(emoji));
+ return _api.ListGuildEmojisAsync(guildId, emoji, cancellationToken);
+ }
+
+ ///
+ public Task GetGuildEmojiAsync(Snowflake guildId, Emoji emoji, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(emoji, nameof(emoji));
+ return _api.GetGuildEmojiAsync(guildId, emoji, cancellationToken);
+ }
+
+ ///
+ public Task CreateGuildEmojiAsync(Snowflake guildId, Emoji emoji, CreateGuildEmojiParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(emoji, nameof(emoji));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.CreateGuildEmojiAsync(guildId, emoji, args, cancellationToken);
+ }
+
+ ///
+ public Task ModifyGuildEmojiAsync(Snowflake guildId, Emoji emoji, ModifyGuildEmojiParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(emoji, nameof(emoji));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.ModifyGuildEmojiAsync(guildId, emoji, args, cancellationToken);
+ }
+
+ ///
+ public Task DeleteGuildEmojiAsync(Snowflake guildId, Emoji emoji, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(emoji, nameof(emoji));
+ return _api.DeleteGuildEmojiAsync(guildId, emoji, cancellationToken);
+ }
+
+ #endregion Emoji
+
+ #region Guild
+
+ ///
+ public Task CreateGuildAsync(CreateGuildParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.CreateGuildAsync(args, cancellationToken);
+ }
+
+ ///
+ public Task GetGuildAsync(Snowflake guildId, GetGuildParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.GetGuildAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task GetGuildPreviewAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildPreviewAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task ModifyGuildAsync(Snowflake guildId, ModifyGuildParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.ModifyGuildAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task DeleteGuildAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.DeleteGuildAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task> GetGuildChannelsAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildChannelsAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task CreateGuildChannelAsync(Snowflake guildId, CreateGuildChannelParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.CreateGuildChannelAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task ModifyGuildChannelPositionsAsync(Snowflake guildId, ModifyGuildChannelPositionsParams[] args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ foreach (var value in args)
+ {
+ Preconditions.NotNull(value, nameof(args));
+ value.Validate();
+ }
+ return _api.ModifyGuildChannelPositionsAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task GetGuildMemberAsync(Snowflake guildId, Snowflake userId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ return _api.GetGuildMemberAsync(guildId, userId, cancellationToken);
+ }
+
+ ///
+ public Task> ListGuildMembersAsync(Snowflake guildId, ListGuildMembersParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.ListGuildMembersAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task> SearchGuildMembersAsync(Snowflake guildId, SearchGuildMembersParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.SearchGuildMembersAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task AddGuildMemberAsync(Snowflake guildId, Snowflake userId, AddGuildMemberParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.AddGuildMemberAsync(guildId, userId, args, cancellationToken);
+ }
+
+ ///
+ public Task ModifyGuildMemberAsync(Snowflake guildId, Snowflake userId, ModifyGuildMemberParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.ModifyGuildMemberAsync(guildId, userId, args, cancellationToken);
+ }
+
+ ///
+ public Task ModifyCurrentUserNickAsync(Snowflake guildId, ModifyCurrentUserNickParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.ModifyCurrentUserNickAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task AddGuildMemberRoleAsync(Snowflake guildId, Snowflake userId, Snowflake roleId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ Preconditions.NotZero(roleId, nameof(roleId));
+ return _api.AddGuildMemberRoleAsync(guildId, userId, roleId, cancellationToken);
+ }
+
+ ///
+ public Task RemoveGuildMemberRoleAsync(Snowflake guildId, Snowflake userId, Snowflake roleId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ Preconditions.NotZero(roleId, nameof(roleId));
+ return _api.RemoveGuildMemberRoleAsync(guildId, userId, roleId, cancellationToken);
+ }
+
+ ///
+ public Task RemoveGuildMemberAsync(Snowflake guildId, Snowflake userId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ return _api.RemoveGuildMemberAsync(guildId, userId, cancellationToken);
+ }
+
+ ///
+ public Task> GetGuildBansAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildBansAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task GetGuildBanAsync(Snowflake guildId, Snowflake userId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ return _api.GetGuildBanAsync(guildId, userId, cancellationToken);
+ }
+
+ ///
+ public Task CreateGuildBanAsync(Snowflake guildId, Snowflake userId, CreateGuildBanParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.CreateGuildBanAsync(guildId, userId, args, cancellationToken);
+ }
+
+ ///
+ public Task RemoveGuildBanAsync(Snowflake guildId, Snowflake userId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(userId, nameof(userId));
+ return _api.RemoveGuildBanAsync(guildId, userId, cancellationToken);
+ }
+
+ ///
+ public Task> GetGuildRolesAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildRolesAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task CreateGuildRoleAsync(Snowflake guildId, CreateGuildRoleParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.CreateGuildRoleAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task> ModifyGuildRolePositionsAsync(Snowflake guildId, ModifyGuildRolePositionsParams[] args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ foreach (var value in args)
+ {
+ Preconditions.NotNull(value, nameof(args));
+ value.Validate();
+ }
+ return _api.ModifyGuildRolePositionsAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task ModifyGuildRoleAsync(Snowflake guildId, Snowflake roleId, ModifyGuildRoleParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(roleId, nameof(roleId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.ModifyGuildRoleAsync(guildId, roleId, args, cancellationToken);
+ }
+
+ ///
+ public Task DeleteGuildRoleAsync(Snowflake guildId, Snowflake roleId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotZero(roleId, nameof(roleId));
+ return _api.DeleteGuildRoleAsync(guildId, roleId, cancellationToken);
+ }
+
+ ///
+ public Task GetGuildPruneCountAsync(Snowflake guildId, GetGuildPruneCountParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.GetGuildPruneCountAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task BeginGuildPruneAsync(Snowflake guildId, BeginGuildPruneParams args, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ Preconditions.NotNull(args, nameof(args));
+ args.Validate();
+ return _api.BeginGuildPruneAsync(guildId, args, cancellationToken);
+ }
+
+ ///
+ public Task> GetGuildVoiceRegionsAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildVoiceRegionsAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task> GetGuildInvitesAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildInvitesAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task> GetGuildIntegrationsAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildIntegrationsAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task DeleteGuildIntegrationAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.DeleteGuildIntegrationAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task GetGuildWidgetSettingsAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.GetGuildWidgetSettingsAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task ModifyGuildWidgetAsync(Snowflake guildId, CancellationToken cancellationToken = default)
+ {
+ Preconditions.NotZero(guildId, nameof(guildId));
+ return _api.ModifyGuildWidgetAsync(guildId, cancellationToken);
+ }
+
+ ///
+ public Task