Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new GuildFeatures and allow editing them #722

Merged
merged 2 commits into from
Nov 18, 2022
Merged
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
12 changes: 12 additions & 0 deletions common/api/common.api
Original file line number Diff line number Diff line change
Expand Up @@ -6212,6 +6212,10 @@ public final class dev/kord/common/entity/GuildFeature$AnimatedIcon : dev/kord/c
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$AnimatedIcon;
}

public final class dev/kord/common/entity/GuildFeature$ApplicationCommandPermissionsV2 : dev/kord/common/entity/GuildFeature {
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$ApplicationCommandPermissionsV2;
}

public final class dev/kord/common/entity/GuildFeature$AutoModeration : dev/kord/common/entity/GuildFeature {
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$AutoModeration;
}
Expand All @@ -6233,6 +6237,10 @@ public final class dev/kord/common/entity/GuildFeature$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

public final class dev/kord/common/entity/GuildFeature$DeveloperSupportServer : dev/kord/common/entity/GuildFeature {
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$DeveloperSupportServer;
}

public final class dev/kord/common/entity/GuildFeature$Discoverable : dev/kord/common/entity/GuildFeature {
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$Discoverable;
}
Expand All @@ -6245,6 +6253,10 @@ public final class dev/kord/common/entity/GuildFeature$InviteSplash : dev/kord/c
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$InviteSplash;
}

public final class dev/kord/common/entity/GuildFeature$InvitesDisabled : dev/kord/common/entity/GuildFeature {
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$InvitesDisabled;
}

public final class dev/kord/common/entity/GuildFeature$MemberVerificationGateEnabled : dev/kord/common/entity/GuildFeature {
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$MemberVerificationGateEnabled;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ public sealed class GuildFeature(
*/
public object AnimatedIcon : GuildFeature("ANIMATED_ICON")

/**
* Guild is using the old permissions configuration behavior.
*/
public object ApplicationCommandPermissionsV2 :
GuildFeature("APPLICATION_COMMAND_PERMISSIONS_V2")

/**
* Guild has set up auto moderation rules.
*/
Expand All @@ -75,6 +81,11 @@ public sealed class GuildFeature(
*/
public object Community : GuildFeature("COMMUNITY")

/**
* Guild has been set as a support server on the App Directory.
*/
public object DeveloperSupportServer : GuildFeature("DEVELOPER_SUPPORT_SERVER")

/**
* Guild is able to be discovered in the directory.
*/
Expand All @@ -85,6 +96,11 @@ public sealed class GuildFeature(
*/
public object Featurable : GuildFeature("FEATURABLE")

/**
* Guild has paused invites, preventing new users from joining.
*/
public object InvitesDisabled : GuildFeature("INVITES_DISABLED")

/**
* Guild has access to set an invite splash background.
*/
Expand Down Expand Up @@ -201,12 +217,15 @@ public sealed class GuildFeature(
when (val value = decoder.decodeString()) {
"ANIMATED_BANNER" -> AnimatedBanner
"ANIMATED_ICON" -> AnimatedIcon
"APPLICATION_COMMAND_PERMISSIONS_V2" -> ApplicationCommandPermissionsV2
"AUTO_MODERATION" -> AutoModeration
"BANNER" -> Banner
"COMMERCE" -> @Suppress("DEPRECATION_ERROR") Commerce
"COMMUNITY" -> Community
"DEVELOPER_SUPPORT_SERVER" -> DeveloperSupportServer
"DISCOVERABLE" -> Discoverable
"FEATURABLE" -> Featurable
"INVITES_DISABLED" -> InvitesDisabled
"INVITE_SPLASH" -> InviteSplash
"MEMBER_VERIFICATION_GATE_ENABLED" -> MemberVerificationGateEnabled
"MONETIZATION_ENABLED" -> MonetizationEnabled
Expand Down Expand Up @@ -235,12 +254,15 @@ public sealed class GuildFeature(
listOf(
AnimatedBanner,
AnimatedIcon,
ApplicationCommandPermissionsV2,
AutoModeration,
Banner,
@Suppress("DEPRECATION_ERROR") Commerce,
Community,
DeveloperSupportServer,
Discoverable,
Featurable,
InvitesDisabled,
InviteSplash,
MemberVerificationGateEnabled,
MonetizationEnabled,
Expand Down
12 changes: 12 additions & 0 deletions common/src/main/kotlin/entity/DiscordGuild.kt
Original file line number Diff line number Diff line change
Expand Up @@ -75,18 +75,30 @@
kDoc = "Guild has access to set an animated guild banner image.",
),
Entry("AnimatedIcon", stringValue = "ANIMATED_ICON", kDoc = "Guild has access to set an animated guild icon."),
Entry(
"ApplicationCommandPermissionsV2", stringValue = "APPLICATION_COMMAND_PERMISSIONS_V2",
kDoc = "Guild is using the old permissions configuration behavior.",
),
Entry("AutoModeration", stringValue = "AUTO_MODERATION", kDoc = "Guild has set up auto moderation rules."),
Entry("Banner", stringValue = "BANNER", kDoc = "Guild has access to set a guild banner image."),
Entry(
"Community", stringValue = "COMMUNITY",
kDoc = "Guild can enable welcome screen, Membership Screening, stage channels and discovery, and " +
"receives community updates.",
),
Entry(
"DeveloperSupportServer", stringValue = "DEVELOPER_SUPPORT_SERVER",
kDoc = "Guild has been set as a support server on the App Directory.",
),
Entry("Discoverable", stringValue = "DISCOVERABLE", kDoc = "Guild is able to be discovered in the directory."),
Entry(
"Featurable", stringValue = "FEATURABLE",
kDoc = "Guild is able to be featured in the directory.",
),
Entry(
"InvitesDisabled", stringValue = "INVITES_DISABLED",
kDoc = "Guild has paused invites, preventing new users from joining.",
),
Entry(
"InviteSplash", stringValue = "INVITE_SPLASH",
kDoc = "Guild has access to set an invite splash background.",
Expand Down
14 changes: 9 additions & 5 deletions rest/api/rest.api
Original file line number Diff line number Diff line change
Expand Up @@ -926,6 +926,7 @@ public final class dev/kord/rest/builder/guild/GuildModifyBuilder : dev/kord/res
public final fun getAfkTimeout-FghU774 ()Lkotlin/time/Duration;
public final fun getBanner ()Ldev/kord/rest/Image;
public final fun getExplicitContentFilter ()Ldev/kord/common/entity/ExplicitContentFilter;
public final fun getFeatures ()Ljava/util/Set;
public final fun getIcon ()Ldev/kord/rest/Image;
public final fun getName ()Ljava/lang/String;
public final fun getNotificationLevel ()Ldev/kord/common/entity/DefaultMessageNotificationLevel;
Expand All @@ -942,6 +943,7 @@ public final class dev/kord/rest/builder/guild/GuildModifyBuilder : dev/kord/res
public final fun setAfkTimeout-BwNAW2A (Lkotlin/time/Duration;)V
public final fun setBanner (Ldev/kord/rest/Image;)V
public final fun setExplicitContentFilter (Ldev/kord/common/entity/ExplicitContentFilter;)V
public final fun setFeatures (Ljava/util/Set;)V
public final fun setIcon (Ldev/kord/rest/Image;)V
public final fun setName (Ljava/lang/String;)V
public final fun setNotificationLevel (Ldev/kord/common/entity/DefaultMessageNotificationLevel;)V
Expand Down Expand Up @@ -3732,16 +3734,17 @@ public final class dev/kord/rest/json/request/GuildMemberModifyRequest$Companion
public final class dev/kord/rest/json/request/GuildModifyRequest {
public static final field Companion Ldev/kord/rest/json/request/GuildModifyRequest$Companion;
public fun <init> ()V
public synthetic fun <init> (ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V
public fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;)V
public synthetic fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V
public fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V
public synthetic fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/kord/common/entity/optional/Optional;
public final fun component10 ()Ldev/kord/common/entity/optional/Optional;
public final fun component11 ()Ldev/kord/common/entity/optional/Optional;
public final fun component12 ()Ldev/kord/common/entity/optional/OptionalSnowflake;
public final fun component13 ()Ldev/kord/common/entity/optional/OptionalSnowflake;
public final fun component14 ()Ldev/kord/common/entity/optional/OptionalSnowflake;
public final fun component15 ()Ldev/kord/common/entity/optional/Optional;
public final fun component16 ()Ldev/kord/common/entity/optional/Optional;
public final fun component2 ()Ldev/kord/common/entity/optional/Optional;
public final fun component3 ()Ldev/kord/common/entity/optional/Optional;
public final fun component4 ()Ldev/kord/common/entity/optional/Optional;
Expand All @@ -3750,14 +3753,15 @@ public final class dev/kord/rest/json/request/GuildModifyRequest {
public final fun component7 ()Ldev/kord/common/entity/optional/Optional;
public final fun component8 ()Ldev/kord/common/entity/optional/Optional;
public final fun component9 ()Ldev/kord/common/entity/optional/OptionalSnowflake;
public final fun copy (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;)Ldev/kord/rest/json/request/GuildModifyRequest;
public static synthetic fun copy$default (Ldev/kord/rest/json/request/GuildModifyRequest;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/rest/json/request/GuildModifyRequest;
public final fun copy (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)Ldev/kord/rest/json/request/GuildModifyRequest;
public static synthetic fun copy$default (Ldev/kord/rest/json/request/GuildModifyRequest;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/rest/json/request/GuildModifyRequest;
public fun equals (Ljava/lang/Object;)Z
public final fun getAfkChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake;
public final fun getAfkTimeout ()Ldev/kord/common/entity/optional/Optional;
public final fun getBanner ()Ldev/kord/common/entity/optional/Optional;
public final fun getContentFilter ()Ldev/kord/common/entity/optional/Optional;
public final fun getDefaultMessageNotificationLevel ()Ldev/kord/common/entity/optional/Optional;
public final fun getFeatures ()Ldev/kord/common/entity/optional/Optional;
public final fun getIcon ()Ldev/kord/common/entity/optional/Optional;
public final fun getName ()Ldev/kord/common/entity/optional/Optional;
public final fun getOwnerId ()Ldev/kord/common/entity/optional/OptionalSnowflake;
Expand Down
13 changes: 8 additions & 5 deletions rest/src/main/kotlin/builder/guild/GuildModifyBuilder.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package dev.kord.rest.builder.guild

import dev.kord.common.annotation.KordDsl
import dev.kord.common.entity.DefaultMessageNotificationLevel
import dev.kord.common.entity.ExplicitContentFilter
import dev.kord.common.entity.Snowflake
import dev.kord.common.entity.VerificationLevel
import dev.kord.common.entity.*
import dev.kord.common.entity.optional.Optional
import dev.kord.common.entity.optional.OptionalSnowflake
import dev.kord.common.entity.optional.delegate.delegate
Expand Down Expand Up @@ -77,6 +74,11 @@ public class GuildModifyBuilder : AuditRequestBuilder<GuildModifyRequest> {
*/
public var preferredLocale: Locale? by ::_preferredLocale.delegate()

private var _features: Optional<Set<GuildFeature>> = Optional.Missing()

/** The enabled [GuildFeature]s. */
public var features: Set<GuildFeature>? by ::_features.delegate()

override fun toRequest(): GuildModifyRequest = GuildModifyRequest(
_name,
_region,
Expand All @@ -92,6 +94,7 @@ public class GuildModifyBuilder : AuditRequestBuilder<GuildModifyRequest> {
_systemChannelId,
_rulesChannelId,
_publicUpdatesChannelId,
_preferredLocale.map { "${it.language}-${it.country}" }
_preferredLocale.map { "${it.language}-${it.country}" },
features = _features,
)
}
1 change: 1 addition & 0 deletions rest/src/main/kotlin/json/request/GuildRequests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ public data class GuildModifyRequest(
val publicUpdatesChannelId: OptionalSnowflake? = OptionalSnowflake.Missing,
@SerialName("preferred_locale")
val preferredLocale: Optional<String?> = Optional.Missing(),
val features: Optional<Set<GuildFeature>> = Optional.Missing(),
)

@Serializable
Expand Down