Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions twilight-http/src/request/guild/create_guild_prune.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,19 @@ struct CreateGuildPruneFields<'a> {
///
/// See [Discord Docs/Begin Guild Prune].
///
/// # Permissions
///
/// If the target guild has the
/// [`PruneRequiresAdmin`][`GuildFeature::PruneRequiresAdmin`] feature enabled
/// then this requires the [`ADMINISTRATOR`][`Permissions::ADMINISTRATOR`] guild
/// permission; otherwise, this requires both the
/// [`MANAGE_GUILD`][`Permissions::MANAGE_GUILD`] and
/// [`KICK_MEMBERS`][`Permissions::KICK_MEMBERS`] permissions.
///
/// [`GuildFeature::PruneRequiresAdmin`]: twilight_model::guild::GuildFeature::PruneRequiresAdmin
/// [`Permissions::ADMINISTRATOR`]: twilight_model::guild::Permissions::ADMINISTRATOR
/// [`Permissions::KICK_MEMBERS`]: twilight_model::guild::Permissions::KICK_MEMBERS
/// [`Permissions::MANAGE_GUILD`]: twilight_model::guild::Permissions::MANAGE_GUILD
/// [Discord Docs/Begin Guild Prune]: https://discord.com/developers/docs/resources/guild#begin-guild-prune
#[must_use = "requests must be configured and executed"]
pub struct CreateGuildPrune<'a> {
Expand Down
14 changes: 14 additions & 0 deletions twilight-http/src/request/guild/get_guild_prune_count.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@ struct GetGuildPruneCountFields<'a> {
}

/// Get the counts of guild members to be pruned.
///
/// # Permissions
///
/// If the target guild has the
/// [`PruneRequiresAdmin`][`GuildFeature::PruneRequiresAdmin`] feature enabled
/// then this requires the [`ADMINISTRATOR`][`Permissions::ADMINISTRATOR`] guild
/// permission; otherwise, this requires both the
/// [`MANAGE_GUILD`][`Permissions::MANAGE_GUILD`] and
/// [`KICK_MEMBERS`][`Permissions::KICK_MEMBERS`] permissions.
///
/// [`GuildFeature::PruneRequiresAdmin`]: twilight_model::guild::GuildFeature::PruneRequiresAdmin
/// [`Permissions::ADMINISTRATOR`]: twilight_model::guild::Permissions::ADMINISTRATOR
/// [`Permissions::KICK_MEMBERS`]: twilight_model::guild::Permissions::KICK_MEMBERS
/// [`Permissions::MANAGE_GUILD`]: twilight_model::guild::Permissions::MANAGE_GUILD
#[must_use = "requests must be configured and executed"]
pub struct GetGuildPruneCount<'a> {
fields: Result<GetGuildPruneCountFields<'a>, ValidationError>,
Expand Down
18 changes: 18 additions & 0 deletions twilight-model/src/guild/feature.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@ pub enum GuildFeature {
PreviewEnabled,
/// Has access to create private threads.
PrivateThreads,
/// Guild has enabled requiring admin to prune members.
///
/// If this feature is enabled then the
/// [`ADMINISTRATOR`][`Permissions::ADMINISTRATOR`] guild permission is
/// required for guild prune operations; otherwise, only the
/// [`MANAGE_GUILD`][`Permissions::MANAGE_GUILD`] and
/// [`KICK_MEMBERS`][`Permissions::KICK_MEMBERS`] permissions are required.
///
/// [`Permissions::ADMINISTRATOR`]: super::Permissions::ADMINISTRATOR
/// [`Permissions::KICK_MEMBERS`]: super::Permissions::KICK_MEMBERS
/// [`Permissions::MANAGE_GUILD`]: super::Permissions::MANAGE_GUILD
PruneRequiresAdmin,
/// Guild has disabled alerts for join raids in the configured safety alerts channel.
RaidAlertsDisabled,
/// Is able to set role icons.
Expand Down Expand Up @@ -94,6 +106,7 @@ impl From<GuildFeature> for Cow<'static, str> {
GuildFeature::Partnered => "PARTNERED".into(),
GuildFeature::PreviewEnabled => "PREVIEW_ENABLED".into(),
GuildFeature::PrivateThreads => "PRIVATE_THREADS".into(),
GuildFeature::PruneRequiresAdmin => "PRUNE_REQUIRES_ADMIN".into(),
GuildFeature::RaidAlertsDisabled => "RAID_ALERTS_DISABLED".into(),
GuildFeature::RoleIcons => "ROLE_ICONS".into(),
GuildFeature::RoleSubscriptionsAvailableForPurchase => {
Expand Down Expand Up @@ -131,6 +144,7 @@ impl From<String> for GuildFeature {
"PARTNERED" => Self::Partnered,
"PREVIEW_ENABLED" => Self::PreviewEnabled,
"PRIVATE_THREADS" => Self::PrivateThreads,
"PRUNE_REQUIRES_ADMIN" => Self::PruneRequiresAdmin,
"RAID_ALERTS_DISABLED" => Self::RaidAlertsDisabled,
"ROLE_ICONS" => Self::RoleIcons,
"ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE" => {
Expand Down Expand Up @@ -199,6 +213,10 @@ mod tests {
&GuildFeature::PrivateThreads,
&[Token::Str("PRIVATE_THREADS")],
);
serde_test::assert_tokens(
&GuildFeature::PruneRequiresAdmin,
&[Token::Str("PRUNE_REQUIRES_ADMIN")],
);
serde_test::assert_tokens(&GuildFeature::RoleIcons, &[Token::Str("ROLE_ICONS")]);
serde_test::assert_tokens(
&GuildFeature::RoleSubscriptionsAvailableForPurchase,
Expand Down
Loading