Skip to content

Commit 5566a1e

Browse files
committed
Add support for join raid protection
see discord/discord-api-docs#5778 and discord/discord-api-docs#6133
1 parent fc10ea4 commit 5566a1e

File tree

9 files changed

+64
-18
lines changed

9 files changed

+64
-18
lines changed

common/api/common.api

Lines changed: 11 additions & 5 deletions
Large diffs are not rendered by default.

common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/GuildFeature.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ public sealed class GuildFeature(
162162
)
163163
public object PrivateThreads : GuildFeature("PRIVATE_THREADS")
164164

165+
/**
166+
* Guild has disabled alerts for join raids in the configured safety alerts channel.
167+
*/
168+
public object RaidAlertsDisabled : GuildFeature("RAID_ALERTS_DISABLED")
169+
165170
/**
166171
* Guild is able to set role icons.
167172
*/
@@ -233,6 +238,7 @@ public sealed class GuildFeature(
233238
"PARTNERED" -> Partnered
234239
"PREVIEW_ENABLED" -> PreviewEnabled
235240
"PRIVATE_THREADS" -> @Suppress("DEPRECATION_ERROR") PrivateThreads
241+
"RAID_ALERTS_DISABLED" -> RaidAlertsDisabled
236242
"ROLE_ICONS" -> RoleIcons
237243
"ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE" -> RoleSubscriptionsAvailableForPurchase
238244
"ROLE_SUBSCRIPTIONS_ENABLED" -> RoleSubscriptionsEnabled
@@ -271,6 +277,7 @@ public sealed class GuildFeature(
271277
Partnered,
272278
PreviewEnabled,
273279
@Suppress("DEPRECATION_ERROR") PrivateThreads,
280+
RaidAlertsDisabled,
274281
RoleIcons,
275282
RoleSubscriptionsAvailableForPurchase,
276283
RoleSubscriptionsEnabled,

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@
136136
"Creating a private thread no longer requires the server to be boosted.", level = HIDDEN,
137137
),
138138
),
139+
Entry(
140+
"RaidAlertsDisabled", stringValue = "RAID_ALERTS_DISABLED",
141+
kDoc = "Guild has disabled alerts for join raids in the configured safety alerts channel.",
142+
),
139143
Entry("RoleIcons", stringValue = "ROLE_ICONS", kDoc = "Guild is able to set role icons."),
140144
Entry("RoleSubscriptionsAvailableForPurchase", stringValue = "ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE",
141145
kDoc = "Guild has role subscriptions that can be purchased."
@@ -306,7 +310,9 @@ public data class DiscordGuild(
306310
@SerialName("guild_scheduled_events")
307311
val guildScheduledEvents: Optional<List<DiscordGuildScheduledEvent>> = Optional.Missing(),
308312
@SerialName("premium_progress_bar_enabled")
309-
val premiumProgressBarEnabled: Boolean
313+
val premiumProgressBarEnabled: Boolean,
314+
@SerialName("safety_alerts_channel_id")
315+
val safetyAlertsChannelId: Snowflake?,
310316
)
311317

312318
/**

core/api/core.api

Lines changed: 9 additions & 5 deletions
Large diffs are not rendered by default.

core/src/commonMain/kotlin/cache/data/GuildData.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ public data class GuildData(
6565
val stageInstances: Optional<List<StageInstanceData>> = Optional.Missing(),
6666
val stickers: Optional<List<StickerData>> = Optional.Missing(),
6767
val guildScheduledEvents: Optional<List<GuildScheduledEventData>> = Optional.Missing(),
68-
val premiumProgressBarEnabled: Boolean
68+
val premiumProgressBarEnabled: Boolean,
69+
val safetyAlertsChannelId: Snowflake?,
6970
) {
7071
public companion object {
7172

@@ -133,7 +134,8 @@ public data class GuildData(
133134
stageInstances = stageInstances.mapList { StageInstanceData.from(it) },
134135
stickers = stickers.mapList { StickerData.from(it) },
135136
guildScheduledEvents = guildScheduledEvents.mapList { GuildScheduledEventData.from(it) },
136-
premiumProgressBarEnabled = premiumProgressBarEnabled
137+
premiumProgressBarEnabled = premiumProgressBarEnabled,
138+
safetyAlertsChannelId = safetyAlertsChannelId,
137139
)
138140
}
139141
}

core/src/commonMain/kotlin/entity/Guild.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,15 @@ public class Guild(
337337

338338
public val premiumProgressBarEnabled: Boolean get() = data.premiumProgressBarEnabled
339339

340+
/** The id of the channel where admins and moderators of Community guilds receive safety alerts from Discord. */
341+
public val safetyAlertsChannelId: Snowflake? get() = data.safetyAlertsChannelId
342+
343+
/**
344+
* The behavior of the channel where admins and moderators of Community guilds receive safety alerts from Discord.
345+
*/
346+
public val safetyAlertsChannel: TextChannelBehavior?
347+
get() = safetyAlertsChannelId?.let { TextChannelBehavior(guildId = id, id = it, kord) }
348+
340349
public val stageInstances: Set<StageInstance>
341350
get() = data.stageInstances.orEmpty().map { StageInstance(it, kord) }.toSet()
342351

rest/api/rest.api

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,6 +1085,7 @@ public final class dev/kord/rest/builder/guild/GuildModifyBuilder : dev/kord/res
10851085
public fun getReason ()Ljava/lang/String;
10861086
public final fun getRegion ()Ljava/lang/String;
10871087
public final fun getRulesChannelId ()Ldev/kord/common/entity/Snowflake;
1088+
public final fun getSafetyAlertsChannelId ()Ldev/kord/common/entity/Snowflake;
10881089
public final fun getSplash ()Ldev/kord/rest/Image;
10891090
public final fun getSystemChannelId ()Ldev/kord/common/entity/Snowflake;
10901091
public final fun getVerificationLevel ()Ldev/kord/common/entity/VerificationLevel;
@@ -1102,6 +1103,7 @@ public final class dev/kord/rest/builder/guild/GuildModifyBuilder : dev/kord/res
11021103
public fun setReason (Ljava/lang/String;)V
11031104
public final fun setRegion (Ljava/lang/String;)V
11041105
public final fun setRulesChannelId (Ldev/kord/common/entity/Snowflake;)V
1106+
public final fun setSafetyAlertsChannelId (Ldev/kord/common/entity/Snowflake;)V
11051107
public final fun setSplash (Ldev/kord/rest/Image;)V
11061108
public final fun setSystemChannelId (Ldev/kord/common/entity/Snowflake;)V
11071109
public final fun setVerificationLevel (Ldev/kord/common/entity/VerificationLevel;)V
@@ -4063,9 +4065,9 @@ public final class dev/kord/rest/json/request/GuildMemberModifyRequest$Companion
40634065
public final class dev/kord/rest/json/request/GuildModifyRequest {
40644066
public static final field Companion Ldev/kord/rest/json/request/GuildModifyRequest$Companion;
40654067
public fun <init> ()V
4066-
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
4067-
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
4068-
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
4068+
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;Ldev/kord/common/entity/optional/OptionalSnowflake;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V
4069+
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;Ldev/kord/common/entity/optional/OptionalSnowflake;)V
4070+
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;Ldev/kord/common/entity/optional/OptionalSnowflake;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
40694071
public final fun component1 ()Ldev/kord/common/entity/optional/Optional;
40704072
public final fun component10 ()Ldev/kord/common/entity/optional/Optional;
40714073
public final fun component11 ()Ldev/kord/common/entity/optional/Optional;
@@ -4074,6 +4076,7 @@ public final class dev/kord/rest/json/request/GuildModifyRequest {
40744076
public final fun component14 ()Ldev/kord/common/entity/optional/OptionalSnowflake;
40754077
public final fun component15 ()Ldev/kord/common/entity/optional/Optional;
40764078
public final fun component16 ()Ldev/kord/common/entity/optional/Optional;
4079+
public final fun component17 ()Ldev/kord/common/entity/optional/OptionalSnowflake;
40774080
public final fun component2 ()Ldev/kord/common/entity/optional/Optional;
40784081
public final fun component3 ()Ldev/kord/common/entity/optional/Optional;
40794082
public final fun component4 ()Ldev/kord/common/entity/optional/Optional;
@@ -4082,8 +4085,8 @@ public final class dev/kord/rest/json/request/GuildModifyRequest {
40824085
public final fun component7 ()Ldev/kord/common/entity/optional/Optional;
40834086
public final fun component8 ()Ldev/kord/common/entity/optional/Optional;
40844087
public final fun component9 ()Ldev/kord/common/entity/optional/OptionalSnowflake;
4085-
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;
4086-
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;
4088+
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/common/entity/optional/OptionalSnowflake;)Ldev/kord/rest/json/request/GuildModifyRequest;
4089+
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;Ldev/kord/common/entity/optional/OptionalSnowflake;ILjava/lang/Object;)Ldev/kord/rest/json/request/GuildModifyRequest;
40874090
public fun equals (Ljava/lang/Object;)Z
40884091
public final fun getAfkChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake;
40894092
public final fun getAfkTimeout ()Ldev/kord/common/entity/optional/Optional;
@@ -4098,6 +4101,7 @@ public final class dev/kord/rest/json/request/GuildModifyRequest {
40984101
public final fun getPublicUpdatesChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake;
40994102
public final fun getRegion ()Ldev/kord/common/entity/optional/Optional;
41004103
public final fun getRulesChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake;
4104+
public final fun getSafetyAlertsChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake;
41014105
public final fun getSplash ()Ldev/kord/common/entity/optional/Optional;
41024106
public final fun getSystemChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake;
41034107
public final fun getVerificationLevel ()Ldev/kord/common/entity/optional/Optional;

rest/src/commonMain/kotlin/builder/guild/GuildModifyBuilder.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ public class GuildModifyBuilder : AuditRequestBuilder<GuildModifyRequest> {
7979
/** The enabled [GuildFeature]s. */
8080
public var features: Set<GuildFeature>? by ::_features.delegate()
8181

82+
private var _safetyAlertsChannelId: OptionalSnowflake? = OptionalSnowflake.Missing
83+
84+
/** The id of the channel where admins and moderators of Community guilds receive safety alerts from Discord. */
85+
public var safetyAlertsChannelId: Snowflake? by ::_safetyAlertsChannelId.delegate()
86+
8287
override fun toRequest(): GuildModifyRequest = GuildModifyRequest(
8388
_name,
8489
_region,
@@ -96,5 +101,6 @@ public class GuildModifyBuilder : AuditRequestBuilder<GuildModifyRequest> {
96101
_publicUpdatesChannelId,
97102
_preferredLocale.map { locale -> "${locale.language}${locale.country?.let { "-$it" } ?: ""}" },
98103
features = _features,
104+
safetyAlertsChannelId = _safetyAlertsChannelId,
99105
)
100106
}

rest/src/commonMain/kotlin/json/request/GuildRequests.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ public data class GuildModifyRequest(
244244
@SerialName("preferred_locale")
245245
val preferredLocale: Optional<String?> = Optional.Missing(),
246246
val features: Optional<Set<GuildFeature>> = Optional.Missing(),
247+
@SerialName("safety_alerts_channel_id")
248+
val safetyAlertsChannelId: OptionalSnowflake? = OptionalSnowflake.Missing,
247249
)
248250

249251
@Serializable

0 commit comments

Comments
 (0)