Skip to content

Commit 21b3ab2

Browse files
committed
Add membership screening
- Adds discord/discord-api-docs#2396 - Add models - Add rest requests
1 parent d17c312 commit 21b3ab2

File tree

4 files changed

+666
-281
lines changed

4 files changed

+666
-281
lines changed

common/src/main/kotlin/entity/DiscordGuild.kt

Lines changed: 85 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ data class DiscordGuild(
151151
@SerialName("approximate_presence_count")
152152
val approximatePresenceCount: OptionalInt = OptionalInt.Missing,
153153

154-
)
154+
)
155155

156156
/**
157157
* A partial representation of a [Discord Guild structure](https://discord.com/developers/docs/resources/guild#guild-object
@@ -223,26 +223,39 @@ sealed class GuildFeature(val value: String) {
223223
/** Guild has enabled the welcome screen */
224224
object WelcomeScreenEnabled : GuildFeature("WELCOME_SCREEN_ENABLED")
225225

226+
/**
227+
* Guild has enabled [Membership Screening](#DOCS_RESOURCES_GUILD/membership-screening-object)
228+
*/
229+
object MemberVerificationGateEnabled : GuildFeature("MEMBER_VERIFICATION_GATE_ENABLED ")
230+
231+
/**
232+
* Guild can be previewed before joining via Membership Screening or the directory
233+
*/
234+
object PreviewEnabled : GuildFeature("PREVIEW_ENABLED")
235+
226236
internal object Serializer : KSerializer<GuildFeature> {
227237
override val descriptor: SerialDescriptor
228238
get() = PrimitiveSerialDescriptor("feature", PrimitiveKind.STRING)
229239

230-
override fun deserialize(decoder: Decoder): GuildFeature = when (val value = decoder.decodeString()) {
231-
"INVITE_SPLASH" -> InviteSplash
232-
"VIP_REGIONS" -> VIPRegions
233-
"VANITY_URL" -> VanityUrl
234-
"VERIFIED" -> Verified
235-
"PARTNERED" -> Partnered
236-
"COMMUNITY" -> Community
237-
"COMMERCE" -> Commerce
238-
"NEWS" -> News
239-
"DISCOVERABLE" -> Discoverable
240-
"FEATURABLE" -> Featurable
241-
"ANIMATED_ICON" -> AnimatedIcon
242-
"BANNER" -> Banner
243-
"WELCOME_SCREEN_ENABLED" -> WelcomeScreenEnabled
244-
else -> Unknown(value)
245-
}
240+
override fun deserialize(decoder: Decoder): GuildFeature =
241+
when (val value = decoder.decodeString()) {
242+
"INVITE_SPLASH" -> InviteSplash
243+
"VIP_REGIONS" -> VIPRegions
244+
"VANITY_URL" -> VanityUrl
245+
"VERIFIED" -> Verified
246+
"PARTNERED" -> Partnered
247+
"COMMUNITY" -> Community
248+
"COMMERCE" -> Commerce
249+
"NEWS" -> News
250+
"DISCOVERABLE" -> Discoverable
251+
"FEATURABLE" -> Featurable
252+
"ANIMATED_ICON" -> AnimatedIcon
253+
"BANNER" -> Banner
254+
"WELCOME_SCREEN_ENABLED" -> WelcomeScreenEnabled
255+
"MEMBER_VERIFICATION_GATE_ENABLED" -> MemberVerificationGateEnabled
256+
"PREVIEW_ENABLED" -> PreviewEnabled
257+
else -> Unknown(value)
258+
}
246259

247260
override fun serialize(encoder: Encoder, value: GuildFeature) {
248261
encoder.encodeString(value.value)
@@ -409,13 +422,14 @@ sealed class PremiumTier(val value: Int) {
409422
override val descriptor: SerialDescriptor
410423
get() = PrimitiveSerialDescriptor("Kord.PremiumTier", PrimitiveKind.INT)
411424

412-
override fun deserialize(decoder: Decoder): PremiumTier = when (val value = decoder.decodeInt()) {
413-
0 -> None
414-
1 -> One
415-
2 -> Two
416-
3 -> Three
417-
else -> Unknown(value)
418-
}
425+
override fun deserialize(decoder: Decoder): PremiumTier =
426+
when (val value = decoder.decodeInt()) {
427+
0 -> None
428+
1 -> One
429+
2 -> Two
430+
3 -> Three
431+
else -> Unknown(value)
432+
}
419433

420434
override fun serialize(encoder: Encoder, value: PremiumTier) {
421435
encoder.encodeInt(value.value)
@@ -460,12 +474,13 @@ sealed class ExplicitContentFilter(val value: Int) {
460474
override val descriptor: SerialDescriptor
461475
get() = PrimitiveSerialDescriptor("explicit_content_filter", PrimitiveKind.INT)
462476

463-
override fun deserialize(decoder: Decoder): ExplicitContentFilter = when (val value = decoder.decodeInt()) {
464-
0 -> Disabled
465-
1 -> MembersWithoutRoles
466-
2 -> AllMembers
467-
else -> Unknown(value)
468-
}
477+
override fun deserialize(decoder: Decoder): ExplicitContentFilter =
478+
when (val value = decoder.decodeInt()) {
479+
0 -> Disabled
480+
1 -> MembersWithoutRoles
481+
2 -> AllMembers
482+
else -> Unknown(value)
483+
}
469484

470485
override fun serialize(encoder: Encoder, value: ExplicitContentFilter) {
471486
encoder.encodeInt(value.value)
@@ -485,11 +500,12 @@ sealed class MFALevel(val value: Int) {
485500
override val descriptor: SerialDescriptor
486501
get() = PrimitiveSerialDescriptor("Kord.MFALevel", PrimitiveKind.INT)
487502

488-
override fun deserialize(decoder: Decoder): MFALevel = when (val value = decoder.decodeInt()) {
489-
0 -> None
490-
1 -> Elevated
491-
else -> Unknown(value)
492-
}
503+
override fun deserialize(decoder: Decoder): MFALevel =
504+
when (val value = decoder.decodeInt()) {
505+
0 -> None
506+
1 -> Elevated
507+
else -> Unknown(value)
508+
}
493509

494510
override fun serialize(encoder: Encoder, value: MFALevel) {
495511
encoder.encodeInt(value.value)
@@ -525,14 +541,15 @@ sealed class VerificationLevel(val value: Int) {
525541
override val descriptor: SerialDescriptor
526542
get() = PrimitiveSerialDescriptor("Kord.VerificationLevel", PrimitiveKind.INT)
527543

528-
override fun deserialize(decoder: Decoder): VerificationLevel = when (val value = decoder.decodeInt()) {
529-
0 -> None
530-
1 -> Low
531-
2 -> Medium
532-
3 -> High
533-
4 -> VeryHigh
534-
else -> Unknown(value)
535-
}
544+
override fun deserialize(decoder: Decoder): VerificationLevel =
545+
when (val value = decoder.decodeInt()) {
546+
0 -> None
547+
1 -> Low
548+
2 -> Medium
549+
3 -> High
550+
4 -> VeryHigh
551+
else -> Unknown(value)
552+
}
536553

537554
override fun serialize(encoder: Encoder, value: VerificationLevel) {
538555
encoder.encodeInt(value.value)
@@ -557,4 +574,28 @@ data class DiscordWelcomeScreen(
557574
val description: String?,
558575
@SerialName("welcome_channels")
559576
val welcomeChannels: List<DiscordWelcomeScreenChannel>
560-
)
577+
)
578+
579+
@Serializable
580+
data class DiscordMembershipScreening(
581+
val version: String,
582+
@SerialName("form_fields")
583+
val formFields: List<FormField>,
584+
val description: Optional<String> = Optional.Missing()
585+
) {
586+
587+
@Serializable
588+
data class FormField(
589+
@SerialName("field_type")
590+
val type: Type,
591+
val label: String,
592+
val values: Optional<List<String>> = Optional.Missing(),
593+
val required: Boolean
594+
) {
595+
@Serializable
596+
enum class Type {
597+
@SerialName("TERMS")
598+
Terms
599+
}
600+
}
601+
}

0 commit comments

Comments
 (0)