From 63c4841330fd1e6b4b32a47337ff3573cd23292b Mon Sep 17 00:00:00 2001 From: viztea Date: Mon, 8 Apr 2024 13:25:35 -0700 Subject: [PATCH 01/30] feat: entitlements --- .../common/entity/EntitlementOwnerType.kt | 89 ++++++++++++++++++ .../dev/kord/common/entity/EntitlementType.kt | 92 +++++++++++++++++++ .../common/entity/InteractionResponseType.kt | 7 ++ .../commonMain/kotlin/entity/Entitlements.kt | 48 ++++++++++ .../commonMain/kotlin/entity/Interactions.kt | 2 + gateway/src/commonMain/kotlin/Event.kt | 21 +++++ .../json/request/EntitlementRequests.kt | 26 ++++++ rest/src/commonMain/kotlin/route/Route.kt | 38 ++++++++ .../kotlin/service/EntitlementService.kt | 43 +++++++++ .../commonMain/kotlin/service/RestClient.kt | 3 + 10 files changed, 369 insertions(+) create mode 100644 common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt create mode 100644 common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt create mode 100644 common/src/commonMain/kotlin/entity/Entitlements.kt create mode 100644 rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt create mode 100644 rest/src/commonMain/kotlin/service/EntitlementService.kt diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt new file mode 100644 index 000000000000..cb0b061fd412 --- /dev/null +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt @@ -0,0 +1,89 @@ +// THIS FILE IS AUTO-GENERATED, DO NOT EDIT! +@file:Suppress(names = arrayOf("IncorrectFormatting", "ReplaceArrayOfWithLiteral", + "SpellCheckingInspection", "GrazieInspection")) + +package dev.kord.common.entity + +import kotlin.LazyThreadSafetyMode.PUBLICATION +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +/** + * See [EntitlementOwnerType]s in the + * [Discord Developer Documentation](https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement). + */ +@Serializable(with = EntitlementOwnerType.Serializer::class) +public sealed class EntitlementOwnerType( + /** + * The raw value used by Discord. + */ + public val `value`: Int, +) { + final override fun equals(other: Any?): Boolean = this === other || + (other is EntitlementOwnerType && this.value == other.value) + + final override fun hashCode(): Int = value.hashCode() + + final override fun toString(): String = + if (this is Unknown) "EntitlementOwnerType.Unknown(value=$value)" + else "EntitlementOwnerType.${this::class.simpleName}" + + /** + * An unknown [EntitlementOwnerType]. + * + * This is used as a fallback for [EntitlementOwnerType]s that haven't been added to Kord yet. + */ + public class Unknown internal constructor( + `value`: Int, + ) : EntitlementOwnerType(value) + + /** + * Entitlement is owned by a user. + */ + public object User : EntitlementOwnerType(1) + + /** + * Entitlement is owned by a guild. + */ + public object Guild : EntitlementOwnerType(2) + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("dev.kord.common.entity.EntitlementOwnerType", + PrimitiveKind.INT) + + override fun serialize(encoder: Encoder, `value`: EntitlementOwnerType) { + encoder.encodeInt(value.value) + } + + override fun deserialize(decoder: Decoder): EntitlementOwnerType = from(decoder.decodeInt()) + } + + public companion object { + /** + * A [List] of all known [EntitlementOwnerType]s. + */ + public val entries: List by lazy(mode = PUBLICATION) { + listOf( + User, + Guild, + ) + } + + + /** + * Returns an instance of [EntitlementOwnerType] with [EntitlementOwnerType.value] equal to + * the specified [value]. + */ + public fun from(`value`: Int): EntitlementOwnerType = when (value) { + 1 -> User + 2 -> Guild + else -> Unknown(value) + } + } +} diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt new file mode 100644 index 000000000000..3fc4b1900879 --- /dev/null +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt @@ -0,0 +1,92 @@ +// THIS FILE IS AUTO-GENERATED, DO NOT EDIT! +@file:Suppress(names = arrayOf("IncorrectFormatting", "ReplaceArrayOfWithLiteral", + "SpellCheckingInspection", "GrazieInspection")) + +package dev.kord.common.entity + +import kotlin.LazyThreadSafetyMode.PUBLICATION +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +/** + * See [EntitlementType]s in the + * [Discord Developer Documentation](https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types). + */ +@Serializable(with = EntitlementType.Serializer::class) +public sealed class EntitlementType( + /** + * The raw value used by Discord. + */ + public val `value`: Int, +) { + final override fun equals(other: Any?): Boolean = this === other || + (other is EntitlementType && this.value == other.value) + + final override fun hashCode(): Int = value.hashCode() + + final override fun toString(): String = + if (this is Unknown) "EntitlementType.Unknown(value=$value)" + else "EntitlementType.${this::class.simpleName}" + + /** + * An unknown [EntitlementType]. + * + * This is used as a fallback for [EntitlementType]s that haven't been added to Kord yet. + */ + public class Unknown internal constructor( + `value`: Int, + @Suppress(names = arrayOf("UNUSED_PARAMETER")) + unused: Nothing?, + ) : EntitlementType(value) { + @Deprecated( + level = DeprecationLevel.HIDDEN, + message = "Replaced by 'EntitlementType.from()'.", + replaceWith = ReplaceWith(expression = "EntitlementType.from(value)", imports = + arrayOf("dev.kord.common.entity.EntitlementType")), + ) + public constructor(`value`: Int) : this(value, null) + } + + /** + * Entitlement was purchased as an app subscription. + */ + public object ApplicationSubscription : EntitlementType(8) + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("dev.kord.common.entity.EntitlementType", + PrimitiveKind.INT) + + override fun serialize(encoder: Encoder, `value`: EntitlementType) { + encoder.encodeInt(value.value) + } + + override fun deserialize(decoder: Decoder): EntitlementType = from(decoder.decodeInt()) + } + + public companion object { + /** + * A [List] of all known [EntitlementType]s. + */ + public val entries: List by lazy(mode = PUBLICATION) { + listOf( + ApplicationSubscription, + ) + } + + + /** + * Returns an instance of [EntitlementType] with [EntitlementType.value] equal to the + * specified [value]. + */ + public fun from(`value`: Int): EntitlementType = when (value) { + 8 -> ApplicationSubscription + else -> Unknown(value, null) + } + } +} diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt index ca814eb3259b..6a3bfe1ab000 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt @@ -89,6 +89,11 @@ public sealed class InteractionResponseType( */ public object Modal : InteractionResponseType(9) + /** + * Respond to interactions with + */ + public object PremiumRequired : InteractionResponseType(10) + internal object Serializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("dev.kord.common.entity.InteractionResponseType", @@ -115,6 +120,7 @@ public sealed class InteractionResponseType( UpdateMessage, ApplicationCommandAutoCompleteResult, Modal, + PremiumRequired, ) } @@ -131,6 +137,7 @@ public sealed class InteractionResponseType( 7 -> UpdateMessage 8 -> ApplicationCommandAutoCompleteResult 9 -> Modal + 10 -> PremiumRequired else -> Unknown(type, null) } } diff --git a/common/src/commonMain/kotlin/entity/Entitlements.kt b/common/src/commonMain/kotlin/entity/Entitlements.kt new file mode 100644 index 000000000000..c235d4844b64 --- /dev/null +++ b/common/src/commonMain/kotlin/entity/Entitlements.kt @@ -0,0 +1,48 @@ +@file:Generate( + Generate.EntityType.INT_KORD_ENUM, name = "EntitlementType", + docUrl = "https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types", + entries = [ + Generate.Entry("ApplicationSubscription", intValue = 8, kDoc = "Entitlement was purchased as an app subscription.") + ] +) + +@file:Generate( + Generate.EntityType.INT_KORD_ENUM, name = "EntitlementOwnerType", + docUrl = "https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement", + unknownConstructorWasPublic = false, + entries = [ + Generate.Entry("User", intValue = 1, kDoc = "Entitlement is owned by a user."), + Generate.Entry("Guild", intValue = 2, kDoc = "Entitlement is owned by a guild.") + ] +) + +package dev.kord.common.entity + +import dev.kord.common.entity.optional.Optional +import dev.kord.common.entity.optional.OptionalSnowflake +import dev.kord.ksp.Generate +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +/** + * https://discord.com/developers/docs/monetization/entitlements#entitlement-object + */ +@Serializable +public data class DiscordEntitlement( + val id: Snowflake, + @SerialName("sku_id") + val skuId: Snowflake, + @SerialName("application_id") + val applicationId: Snowflake, + @SerialName("user_id") + val userId: OptionalSnowflake = OptionalSnowflake.Missing, + val type: EntitlementType, + val deleted: Boolean, + @SerialName("starts_at") + val startsAt: Optional, + @SerialName("ends_at") + val endsAt: Optional, + @SerialName("guild_Id") + val guildId: OptionalSnowflake = OptionalSnowflake.Missing, +) \ No newline at end of file diff --git a/common/src/commonMain/kotlin/entity/Interactions.kt b/common/src/commonMain/kotlin/entity/Interactions.kt index c537524d5728..72e20caa7490 100644 --- a/common/src/commonMain/kotlin/entity/Interactions.kt +++ b/common/src/commonMain/kotlin/entity/Interactions.kt @@ -62,6 +62,7 @@ kDoc = "Respond to an autocomplete interaction with suggested choices.", ), Entry("Modal", intValue = 9, kDoc = "Respond to an interaction with a popup modal."), + Entry("PremiumRequired", intValue = 10, kDoc = "Respond to interactions with ") ], ) @@ -282,6 +283,7 @@ public data class DiscordInteraction( val locale: Optional = Optional.Missing(), @SerialName("guild_locale") val guildLocale: Optional = Optional.Missing(), + val entitlements: Optional = Optional.Missing() ) { /** diff --git a/gateway/src/commonMain/kotlin/Event.kt b/gateway/src/commonMain/kotlin/Event.kt index 18021d8a9ea4..46f03a48fd6d 100644 --- a/gateway/src/commonMain/kotlin/Event.kt +++ b/gateway/src/commonMain/kotlin/Event.kt @@ -488,6 +488,18 @@ public sealed class Event { ), sequence ) + "ENTITLEMENT_CREATE" -> EntitlementCreate( + decoder.decodeSerializableElement(descriptor, index, DiscordEntitlement.serializer()), + sequence + ) + "ENTITLEMENT_DELETE" -> EntitlementDelete( + decoder.decodeSerializableElement(descriptor, index, DiscordEntitlement.serializer()), + sequence + ) + "ENTITLEMENT_UPDATE" -> EntitlementUpdate( + decoder.decodeSerializableElement(descriptor, index, DiscordEntitlement.serializer()), + sequence + ) else -> { @@ -881,3 +893,12 @@ public data class DiscordThreadMembersUpdate( @SerialName("removed_member_ids") val removedMemberIds: Optional> = Optional.Missing() ) + +@Serializable +public data class EntitlementCreate(val entitlement: DiscordEntitlement, override val sequence: Int?) : DispatchEvent() + +@Serializable +public data class EntitlementUpdate(val entitlement: DiscordEntitlement, override val sequence: Int?) : DispatchEvent() + +@Serializable +public data class EntitlementDelete(val entitlement: DiscordEntitlement, override val sequence: Int?) : DispatchEvent() diff --git a/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt new file mode 100644 index 000000000000..90812bf7a8ff --- /dev/null +++ b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt @@ -0,0 +1,26 @@ +package dev.kord.rest.json.request + +import dev.kord.common.entity.EntitlementOwnerType +import dev.kord.common.entity.Snowflake +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +public data class EntitlementsListRequest( + val userId: Snowflake? = null, + val skuIds: List = emptyList(), + val before: Snowflake? = null, + val after: Snowflake? = null, + val limit: Int? = null, + val guildId: Snowflake? = null, + val excludeEnded: Boolean? = null, +) + +@Serializable +public data class TestEntitlementCreateRequest( + @SerialName("sku_id") + val skuId: String, + @SerialName("owner_id") + val ownerId: Snowflake, + @SerialName("owner_type") + val ownerType: EntitlementOwnerType, +) diff --git a/rest/src/commonMain/kotlin/route/Route.kt b/rest/src/commonMain/kotlin/route/Route.kt index d861a485263b..5cc1ec020caf 100644 --- a/rest/src/commonMain/kotlin/route/Route.kt +++ b/rest/src/commonMain/kotlin/route/Route.kt @@ -74,6 +74,7 @@ public sealed class Route( public object WebhookId : Key("{webhook.id}", true) public object WebhookToken : Key("{webhook.token}") public object TemplateCode : Key("{template.code}") + public object EntitlementId : Key("{entitlement.id}") public object ApplicationId : Key("{application.id}", true) public object CommandId : Key("{command.id}", true) public object InteractionId : Key("{interaction.id}", true) @@ -737,6 +738,43 @@ public sealed class Route( public object CurrentApplicationInfo : Route(HttpMethod.Get, "/oauth2/applications/@me", DiscordApplication.serializer()) + /* + * Entitlements: + * https://discord.com/developers/docs/monetization/entitlements + */ + + public object EntitlementsGet : + Route>( + HttpMethod.Get, + "/applications/$ApplicationId/entitlements", + ListSerializer(DiscordEntitlement.serializer()) + ) + + public object TestEntitlementPost : + Route( + HttpMethod.Post, + "/applications/$ApplicationId/entitlements", + DiscordEntitlement.serializer() + ) + + public object TestEntitlementDelete : + Route( + HttpMethod.Delete, + "/applications/$ApplicationId/entitlements/$EntitlementId", + NoStrategy + ) + + /* + * SKUs: + * https://discord.com/developers/docs/monetization/skus + */ + + public object SkusGet : + Route>( + HttpMethod.Get, + "/applications/$ApplicationId/skus", + ListSerializer(DiscordSKU.serializer()) + ) /* * Guild Template: diff --git a/rest/src/commonMain/kotlin/service/EntitlementService.kt b/rest/src/commonMain/kotlin/service/EntitlementService.kt new file mode 100644 index 000000000000..23cef358d58f --- /dev/null +++ b/rest/src/commonMain/kotlin/service/EntitlementService.kt @@ -0,0 +1,43 @@ +package dev.kord.rest.service + +import dev.kord.common.entity.DiscordEntitlement +import dev.kord.common.entity.Snowflake +import dev.kord.rest.json.request.TestEntitlementCreateRequest +import dev.kord.rest.json.request.EntitlementsListRequest +import dev.kord.rest.request.RequestHandler +import dev.kord.rest.route.Route + +public class EntitlementService(handler: RequestHandler) : RestService(handler) { + + public suspend fun getEntitlements( + applicationId: Snowflake, + request: EntitlementsListRequest, + ): List = call(Route.EntitlementsGet) { + keys[Route.ApplicationId] = applicationId + request.userId?.let { parameter("user_id", it) } + request.skuIds.joinToString(",").ifBlank { null } + ?.let { parameter("sku_ids", it) } + request.before?.let { parameter("before", it) } + request.after?.let { parameter("after", it) } + request.limit?.let { parameter("limit", it) } + request.guildId?.let { parameter("guild_id", it) } + request.excludeEnded?.let { parameter("exclude_ended", it) } + } + + public suspend fun createTestEntitlement( + applicationId: Snowflake, + request: TestEntitlementCreateRequest, + ): DiscordEntitlement = call(Route.TestEntitlementPost) { + keys[Route.ApplicationId] = applicationId + body(TestEntitlementCreateRequest.serializer(), request) + } + + public suspend fun deleteTestEntitlement( + applicationId: Snowflake, + entitlementId: Snowflake, + ): Unit = call(Route.TestEntitlementDelete) { + keys[Route.ApplicationId] = applicationId + keys[Route.EntitlementId] = entitlementId + } + +} diff --git a/rest/src/commonMain/kotlin/service/RestClient.kt b/rest/src/commonMain/kotlin/service/RestClient.kt index 66f82abf8db1..9d6bc5c9f84c 100644 --- a/rest/src/commonMain/kotlin/service/RestClient.kt +++ b/rest/src/commonMain/kotlin/service/RestClient.kt @@ -35,6 +35,9 @@ public class RestClient(requestHandler: RequestHandler) : RestService(requestHan // topics public val application: ApplicationService = ApplicationService(requestHandler) + // monetization + public val entitlement: EntitlementService = EntitlementService(requestHandler) + /** * Sends a request to the given [route]. This function exposes a direct call to the Discord api and allows * the user to send a custom [RequestBuilder.body]. From c2a4cb76adc8080515b1d655a8837bd871383fdd Mon Sep 17 00:00:00 2001 From: viztea Date: Mon, 8 Apr 2024 13:46:46 -0700 Subject: [PATCH 02/30] feat: skus --- .../kotlin/dev/kord/common/entity/SkuFlag.kt | 331 ++++++++++++++++++ .../kotlin/dev/kord/common/entity/SkuType.kt | 96 +++++ common/src/commonMain/kotlin/entity/Skus.kt | 40 +++ .../commonMain/kotlin/service/RestClient.kt | 1 + .../commonMain/kotlin/service/SkuService.kt | 11 + 5 files changed, 479 insertions(+) create mode 100644 common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt create mode 100644 common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt create mode 100644 common/src/commonMain/kotlin/entity/Skus.kt create mode 100644 rest/src/commonMain/kotlin/service/SkuService.kt diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt new file mode 100644 index 000000000000..596ef145759a --- /dev/null +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt @@ -0,0 +1,331 @@ +// THIS FILE IS AUTO-GENERATED, DO NOT EDIT! +@file:Suppress(names = arrayOf("IncorrectFormatting", "ReplaceArrayOfWithLiteral", + "SpellCheckingInspection", "GrazieInspection")) + +package dev.kord.common.entity + +import kotlin.LazyThreadSafetyMode.PUBLICATION +import kotlin.contracts.InvocationKind.EXACTLY_ONCE +import kotlin.contracts.contract +import kotlin.jvm.JvmName +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +/** + * See [SkuFlag]s in the + * [Discord Developer Documentation](https://discord.com/developers/docs/monetization/skus#sku-object-sku-flags). + */ +public sealed class SkuFlag( + /** + * The position of the bit that is set in this [SkuFlag]. This is always in 0..30. + */ + public val shift: Int, +) { + init { + require(shift in 0..30) { """shift has to be in 0..30 but was $shift""" } + } + + /** + * The raw value used by Discord. + */ + public val `value`: Int + get() = 1 shl shift + + /** + * Returns an instance of [SkuFlags] that has all bits set that are set in `this` and [flag]. + */ + public operator fun plus(flag: SkuFlag): SkuFlags = SkuFlags(this.value or flag.value) + + /** + * Returns an instance of [SkuFlags] that has all bits set that are set in `this` and [flags]. + */ + public operator fun plus(flags: SkuFlags): SkuFlags = SkuFlags(this.value or flags.value) + + final override fun equals(other: Any?): Boolean = this === other || + (other is SkuFlag && this.shift == other.shift) + + final override fun hashCode(): Int = shift.hashCode() + + final override fun toString(): String = if (this is Unknown) "SkuFlag.Unknown(shift=$shift)" + else "SkuFlag.${this::class.simpleName}" + + /** + * An unknown [SkuFlag]. + * + * This is used as a fallback for [SkuFlag]s that haven't been added to Kord yet. + */ + public class Unknown internal constructor( + shift: Int, + ) : SkuFlag(shift) + + /** + * SKU is available for purchase + */ + public object Available : SkuFlag(2) + + /** + * Recurring SKU that can be purchased by a user and applied to a single server. Grants access + * to every user in that server. + */ + public object GuildSubscription : SkuFlag(7) + + /** + * Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in + * every server. + */ + public object UserSubscription : SkuFlag(8) + + public companion object { + /** + * A [List] of all known [SkuFlag]s. + */ + public val entries: List by lazy(mode = PUBLICATION) { + listOf( + Available, + GuildSubscription, + UserSubscription, + ) + } + + + /** + * Returns an instance of [SkuFlag] with [SkuFlag.shift] equal to the specified [shift]. + * + * @throws IllegalArgumentException if [shift] is not in 0..30. + */ + public fun fromShift(shift: Int): SkuFlag = when (shift) { + 2 -> Available + 7 -> GuildSubscription + 8 -> UserSubscription + else -> Unknown(shift) + } + } +} + +/** + * A collection of multiple [SkuFlag]s. + * + * ## Creating an instance of [SkuFlags] + * + * You can create an instance of [SkuFlags] using the following methods: + * ```kotlin + * // from individual SkuFlags + * val skuFlags1 = SkuFlags(SkuFlag.Available, SkuFlag.GuildSubscription) + * + * // from an Iterable + * val iterable: Iterable = TODO() + * val skuFlags2 = SkuFlags(iterable) + * + * // using a builder + * val skuFlags3 = SkuFlags { + * +skuFlags2 + * +SkuFlag.Available + * -SkuFlag.GuildSubscription + * } + * ``` + * + * ## Modifying an existing instance of [SkuFlags] + * + * You can create a modified copy of an existing instance of [SkuFlags] using the [copy] method: + * ```kotlin + * skuFlags.copy { + * +SkuFlag.Available + * } + * ``` + * + * ## Mathematical operators + * + * All [SkuFlags] objects can use `+`/`-` operators: + * ```kotlin + * val skuFlags1 = skuFlags + SkuFlag.Available + * val skuFlags2 = skuFlags - SkuFlag.GuildSubscription + * val skuFlags3 = skuFlags1 + skuFlags2 + * ``` + * + * ## Checking for [SkuFlag]s + * + * You can use the [contains] operator to check whether an instance of [SkuFlags] contains specific + * [SkuFlag]s: + * ```kotlin + * val hasSkuFlag = SkuFlag.Available in skuFlags + * val hasSkuFlags = SkuFlags(SkuFlag.Available, SkuFlag.GuildSubscription) in skuFlags + * ``` + * + * ## Unknown [SkuFlag]s + * + * Whenever [SkuFlag]s haven't been added to Kord yet, they will be deserialized as instances of + * [SkuFlag.Unknown]. + * + * You can also use [SkuFlag.fromShift] to check for [unknown][SkuFlag.Unknown] [SkuFlag]s. + * ```kotlin + * val hasUnknownSkuFlag = SkuFlag.fromShift(23) in skuFlags + * ``` + * + * @see SkuFlag + * @see SkuFlags.Builder + */ +@Serializable(with = SkuFlags.Serializer::class) +public class SkuFlags internal constructor( + /** + * The raw value used by Discord. + */ + public val `value`: Int, +) { + /** + * A [Set] of all [SkuFlag]s contained in this instance of [SkuFlags]. + */ + public val values: Set + get() = buildSet { + var remaining = value + var shift = 0 + while (remaining != 0) { + if ((remaining and 1) != 0) add(SkuFlag.fromShift(shift)) + remaining = remaining ushr 1 + shift++ + } + } + + /** + * Checks if this instance of [SkuFlags] has all bits set that are set in [flag]. + */ + public operator fun contains(flag: SkuFlag): Boolean = this.value and flag.value == flag.value + + /** + * Checks if this instance of [SkuFlags] has all bits set that are set in [flags]. + */ + public operator fun contains(flags: SkuFlags): Boolean = + this.value and flags.value == flags.value + + /** + * Returns an instance of [SkuFlags] that has all bits set that are set in `this` and [flag]. + */ + public operator fun plus(flag: SkuFlag): SkuFlags = SkuFlags(this.value or flag.value) + + /** + * Returns an instance of [SkuFlags] that has all bits set that are set in `this` and [flags]. + */ + public operator fun plus(flags: SkuFlags): SkuFlags = SkuFlags(this.value or flags.value) + + /** + * Returns an instance of [SkuFlags] that has all bits set that are set in `this` except the + * bits that are set in [flag]. + */ + public operator fun minus(flag: SkuFlag): SkuFlags = SkuFlags(this.value and flag.value.inv()) + + /** + * Returns an instance of [SkuFlags] that has all bits set that are set in `this` except the + * bits that are set in [flags]. + */ + public operator fun minus(flags: SkuFlags): SkuFlags = + SkuFlags(this.value and flags.value.inv()) + + /** + * Returns a copy of this instance of [SkuFlags] modified with [builder]. + */ + public inline fun copy(builder: Builder.() -> Unit): SkuFlags { + contract { callsInPlace(builder, EXACTLY_ONCE) } + return Builder(value).apply(builder).build() + } + + override fun equals(other: Any?): Boolean = this === other || + (other is SkuFlags && this.value == other.value) + + override fun hashCode(): Int = value.hashCode() + + override fun toString(): String = "SkuFlags(values=$values)" + + public class Builder( + private var `value`: Int = 0, + ) { + /** + * Sets all bits in the [Builder] that are set in this [SkuFlag]. + */ + public operator fun SkuFlag.unaryPlus() { + this@Builder.value = this@Builder.value or this.value + } + + /** + * Sets all bits in the [Builder] that are set in this [SkuFlags]. + */ + public operator fun SkuFlags.unaryPlus() { + this@Builder.value = this@Builder.value or this.value + } + + /** + * Unsets all bits in the [Builder] that are set in this [SkuFlag]. + */ + public operator fun SkuFlag.unaryMinus() { + this@Builder.value = this@Builder.value and this.value.inv() + } + + /** + * Unsets all bits in the [Builder] that are set in this [SkuFlags]. + */ + public operator fun SkuFlags.unaryMinus() { + this@Builder.value = this@Builder.value and this.value.inv() + } + + /** + * Returns an instance of [SkuFlags] that has all bits set that are currently set in this + * [Builder]. + */ + public fun build(): SkuFlags = SkuFlags(value) + } + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("dev.kord.common.entity.SkuFlags", PrimitiveKind.INT) + + private val `delegate`: KSerializer = Int.serializer() + + override fun serialize(encoder: Encoder, `value`: SkuFlags) { + encoder.encodeSerializableValue(delegate, value.value) + } + + override fun deserialize(decoder: Decoder): SkuFlags = + SkuFlags(decoder.decodeSerializableValue(delegate)) + } +} + +/** + * Returns an instance of [SkuFlags] built with [SkuFlags.Builder]. + */ +public inline fun SkuFlags(builder: SkuFlags.Builder.() -> Unit = {}): SkuFlags { + contract { callsInPlace(builder, EXACTLY_ONCE) } + return SkuFlags.Builder().apply(builder).build() +} + +/** + * Returns an instance of [SkuFlags] that has all bits set that are set in any element of [flags]. + */ +public fun SkuFlags(vararg flags: SkuFlag): SkuFlags = SkuFlags { + flags.forEach { +it } +} + +/** + * Returns an instance of [SkuFlags] that has all bits set that are set in any element of [flags]. + */ +public fun SkuFlags(vararg flags: SkuFlags): SkuFlags = SkuFlags { + flags.forEach { +it } +} + +/** + * Returns an instance of [SkuFlags] that has all bits set that are set in any element of [flags]. + */ +public fun SkuFlags(flags: Iterable): SkuFlags = SkuFlags { + flags.forEach { +it } +} + +/** + * Returns an instance of [SkuFlags] that has all bits set that are set in any element of [flags]. + */ +@JvmName("SkuFlags0") +public fun SkuFlags(flags: Iterable): SkuFlags = SkuFlags { + flags.forEach { +it } +} diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt new file mode 100644 index 000000000000..995380f112d5 --- /dev/null +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt @@ -0,0 +1,96 @@ +// THIS FILE IS AUTO-GENERATED, DO NOT EDIT! +@file:Suppress(names = arrayOf("IncorrectFormatting", "ReplaceArrayOfWithLiteral", + "SpellCheckingInspection", "GrazieInspection")) + +package dev.kord.common.entity + +import kotlin.LazyThreadSafetyMode.PUBLICATION +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +/** + * See [SkuType]s in the + * [Discord Developer Documentation](https://discord.com/developers/docs/monetization/skus#sku-object-sku-types). + */ +@Serializable(with = SkuType.Serializer::class) +public sealed class SkuType( + /** + * The raw value used by Discord. + */ + public val `value`: Int, +) { + final override fun equals(other: Any?): Boolean = this === other || + (other is SkuType && this.value == other.value) + + final override fun hashCode(): Int = value.hashCode() + + final override fun toString(): String = if (this is Unknown) "SkuType.Unknown(value=$value)" + else "SkuType.${this::class.simpleName}" + + /** + * An unknown [SkuType]. + * + * This is used as a fallback for [SkuType]s that haven't been added to Kord yet. + */ + public class Unknown internal constructor( + `value`: Int, + @Suppress(names = arrayOf("UNUSED_PARAMETER")) + unused: Nothing?, + ) : SkuType(value) { + @Deprecated( + level = DeprecationLevel.HIDDEN, + message = "Replaced by 'SkuType.from()'.", + replaceWith = ReplaceWith(expression = "SkuType.from(value)", imports = + arrayOf("dev.kord.common.entity.SkuType")), + ) + public constructor(`value`: Int) : this(value, null) + } + + /** + * Represents a recurring subscription + */ + public object Subscription : SkuType(5) + + /** + * System-generated group for each [Subscription] SKU created + */ + public object SubscriptionGroup : SkuType(6) + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("dev.kord.common.entity.SkuType", PrimitiveKind.INT) + + override fun serialize(encoder: Encoder, `value`: SkuType) { + encoder.encodeInt(value.value) + } + + override fun deserialize(decoder: Decoder): SkuType = from(decoder.decodeInt()) + } + + public companion object { + /** + * A [List] of all known [SkuType]s. + */ + public val entries: List by lazy(mode = PUBLICATION) { + listOf( + Subscription, + SubscriptionGroup, + ) + } + + + /** + * Returns an instance of [SkuType] with [SkuType.value] equal to the specified [value]. + */ + public fun from(`value`: Int): SkuType = when (value) { + 5 -> Subscription + 6 -> SubscriptionGroup + else -> Unknown(value, null) + } + } +} diff --git a/common/src/commonMain/kotlin/entity/Skus.kt b/common/src/commonMain/kotlin/entity/Skus.kt new file mode 100644 index 000000000000..14d7c1d8b989 --- /dev/null +++ b/common/src/commonMain/kotlin/entity/Skus.kt @@ -0,0 +1,40 @@ +@file:Generate( + Generate.EntityType.INT_KORD_ENUM, name = "SkuType", + docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-types", + entries = [ + Generate.Entry("Subscription", intValue = 5, + kDoc = "Represents a recurring subscription"), + Generate.Entry("SubscriptionGroup", intValue = 6, + kDoc = "System-generated group for each [Subscription] SKU created") + ] +) + +@file:Generate( + Generate.EntityType.INT_FLAGS, name = "SkuFlag", + docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-flags", + entries = [ + Generate.Entry("Available", shift = 2, + kDoc = "SKU is available for purchase"), + Generate.Entry("GuildSubscription", shift = 7, + kDoc = "Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server."), + Generate.Entry("UserSubscription", shift = 8, + kDoc = "Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in every server."), + ] +) + +package dev.kord.common.entity + +import dev.kord.ksp.Generate +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +public data class DiscordSKU( + val id: Snowflake, + val type: SkuType, + @SerialName("application_id") + val applicationId: Snowflake, + val name: String, + val slug: String, + val flags: SkuFlags, +) diff --git a/rest/src/commonMain/kotlin/service/RestClient.kt b/rest/src/commonMain/kotlin/service/RestClient.kt index 9d6bc5c9f84c..2227146a008f 100644 --- a/rest/src/commonMain/kotlin/service/RestClient.kt +++ b/rest/src/commonMain/kotlin/service/RestClient.kt @@ -37,6 +37,7 @@ public class RestClient(requestHandler: RequestHandler) : RestService(requestHan // monetization public val entitlement: EntitlementService = EntitlementService(requestHandler) + public val skus: SkuService = SkuService(requestHandler) /** * Sends a request to the given [route]. This function exposes a direct call to the Discord api and allows diff --git a/rest/src/commonMain/kotlin/service/SkuService.kt b/rest/src/commonMain/kotlin/service/SkuService.kt new file mode 100644 index 000000000000..a19588c6a475 --- /dev/null +++ b/rest/src/commonMain/kotlin/service/SkuService.kt @@ -0,0 +1,11 @@ +package dev.kord.rest.service + +import dev.kord.common.entity.DiscordSKU +import dev.kord.rest.request.RequestHandler +import dev.kord.rest.route.Route + +public class SkuService(handler: RequestHandler) : RestService(handler) { + + public suspend fun getSkus(): List = call(Route.SkusGet) + +} \ No newline at end of file From 50f0f230a69145ed880919cc2f326721d975e783 Mon Sep 17 00:00:00 2001 From: viztea Date: Mon, 8 Apr 2024 15:04:48 -0700 Subject: [PATCH 03/30] feat: core api & fixes --- common/api/common.api | 246 +++++++++++++++++- .../common/entity/EntitlementOwnerType.kt | 14 +- .../kotlin/annotation/Annotations.kt | 11 + .../commonMain/kotlin/entity/Entitlements.kt | 8 +- core/api/core.api | 181 +++++++++++++ core/src/commonMain/kotlin/Kord.kt | 51 ++++ .../kotlin/behavior/EntitlementBehavior.kt | 60 +++++ .../kotlin/cache/data/EntitlementData.kt | 30 +++ .../commonMain/kotlin/cache/data/SkuData.kt | 21 ++ .../commonMain/kotlin/entity/Entitlement.kt | 64 +++++ core/src/commonMain/kotlin/entity/SKU.kt | 53 ++++ .../kotlin/event/entitlement/Events.kt | 45 ++++ .../exception/EntityNotFoundException.kt | 4 + .../handler/DefaultGatewayEventInterceptor.kt | 1 + .../handler/EntitlementEventHandler.kt | 59 +++++ .../kotlin/supplier/CacheEntitySupplier.kt | 28 ++ .../kotlin/supplier/EntitySupplier.kt | 29 +++ .../kotlin/supplier/FallbackEntitySupplier.kt | 11 + .../kotlin/supplier/RestEntitySupplier.kt | 39 ++- .../kotlin/supplier/StoreEntitySupplier.kt | 12 + gateway/api/gateway.api | 87 +++++++ rest/api/rest.api | 96 +++++++ .../json/request/EntitlementRequests.kt | 2 +- rest/src/commonMain/kotlin/route/Route.kt | 8 + .../kotlin/service/EntitlementService.kt | 32 ++- .../commonMain/kotlin/service/SkuService.kt | 5 +- 26 files changed, 1167 insertions(+), 30 deletions(-) create mode 100644 core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt create mode 100644 core/src/commonMain/kotlin/cache/data/EntitlementData.kt create mode 100644 core/src/commonMain/kotlin/cache/data/SkuData.kt create mode 100644 core/src/commonMain/kotlin/entity/Entitlement.kt create mode 100644 core/src/commonMain/kotlin/entity/SKU.kt create mode 100644 core/src/commonMain/kotlin/event/entitlement/Events.kt create mode 100644 core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt diff --git a/common/api/common.api b/common/api/common.api index e1f58056afae..ad9c1289e845 100644 --- a/common/api/common.api +++ b/common/api/common.api @@ -187,6 +187,9 @@ public abstract interface annotation class dev/kord/common/annotation/KordUnsafe public abstract interface annotation class dev/kord/common/annotation/KordVoice : java/lang/annotation/Annotation { } +public abstract interface annotation class dev/kord/common/annotation/RequiresMonetization : java/lang/annotation/Annotation { +} + public abstract class dev/kord/common/entity/ActivityFlag { public static final field Companion Ldev/kord/common/entity/ActivityFlag$Companion; public static final field Instance Ldev/kord/common/entity/ActivityFlag; @@ -3733,6 +3736,50 @@ public final class dev/kord/common/entity/DiscordEmoji$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/common/entity/DiscordEntitlement { + public static final field Companion Ldev/kord/common/entity/DiscordEntitlement$Companion; + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component2 ()Ldev/kord/common/entity/Snowflake; + public final fun component3 ()Ldev/kord/common/entity/Snowflake; + public final fun component4 ()Ldev/kord/common/entity/optional/OptionalSnowflake; + public final fun component5 ()Ldev/kord/common/entity/EntitlementType; + public final fun component6 ()Z + 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/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;)Ldev/kord/common/entity/DiscordEntitlement; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordEntitlement;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordEntitlement; + public fun equals (Ljava/lang/Object;)Z + public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getDeleted ()Z + public final fun getEndsAt ()Ldev/kord/common/entity/optional/Optional; + public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; + public final fun getId ()Ldev/kord/common/entity/Snowflake; + public final fun getSkuId ()Ldev/kord/common/entity/Snowflake; + public final fun getStartsAt ()Ldev/kord/common/entity/optional/Optional; + public final fun getType ()Ldev/kord/common/entity/EntitlementType; + public final fun getUserId ()Ldev/kord/common/entity/optional/OptionalSnowflake; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/DiscordEntitlement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/common/entity/DiscordEntitlement$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordEntitlement; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordEntitlement;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/common/entity/DiscordEntitlement$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + public final class dev/kord/common/entity/DiscordGuild { public static final field Companion Ldev/kord/common/entity/DiscordGuild$Companion; public synthetic fun (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;JLdev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/VerificationLevel;Ldev/kord/common/entity/DefaultMessageNotificationLevel;Ldev/kord/common/entity/ExplicitContentFilter;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ldev/kord/common/entity/MFALevel;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SystemChannelFlags;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalInt;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/PremiumTier;Ldev/kord/common/entity/optional/OptionalInt;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/NsfwLevel;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ZLdev/kord/common/entity/Snowflake;IILkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -4383,8 +4430,8 @@ public final class dev/kord/common/entity/DiscordIntegrationsAccount$Companion { public final class dev/kord/common/entity/DiscordInteraction { public static final field Companion Ldev/kord/common/entity/DiscordInteraction$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component10 ()Ljava/lang/String; public final fun component11 ()I @@ -4392,6 +4439,7 @@ public final class dev/kord/common/entity/DiscordInteraction { public final fun component13 ()Ldev/kord/common/entity/optional/Optional; public final fun component14 ()Ldev/kord/common/entity/optional/Optional; 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/Snowflake; public final fun component3 ()Ldev/kord/common/entity/InteractionType; public final fun component4 ()Ldev/kord/common/entity/InteractionCallbackData; @@ -4400,14 +4448,15 @@ public final class dev/kord/common/entity/DiscordInteraction { public final fun component7 ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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/DiscordInteraction; - public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordInteraction;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordInteraction; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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/DiscordInteraction; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordInteraction;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordInteraction; public fun equals (Ljava/lang/Object;)Z public final fun getAppPermissions ()Ldev/kord/common/entity/optional/Optional; public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getChannel ()Ldev/kord/common/entity/optional/Optional; public final fun getChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getData ()Ldev/kord/common/entity/InteractionCallbackData; + public final fun getEntitlements ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getGuildLocale ()Ldev/kord/common/entity/optional/Optional; public final fun getId ()Ldev/kord/common/entity/Snowflake; @@ -5554,6 +5603,43 @@ public final class dev/kord/common/entity/DiscordRoleTags$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/common/entity/DiscordSKU { + public static final field Companion Ldev/kord/common/entity/DiscordSKU$Companion; + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)V + public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component2 ()Ldev/kord/common/entity/SkuType; + public final fun component3 ()Ldev/kord/common/entity/Snowflake; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ldev/kord/common/entity/SkuFlags; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)Ldev/kord/common/entity/DiscordSKU; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordSKU;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordSKU; + public fun equals (Ljava/lang/Object;)Z + public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; + public final fun getId ()Ldev/kord/common/entity/Snowflake; + public final fun getName ()Ljava/lang/String; + public final fun getSlug ()Ljava/lang/String; + public final fun getType ()Ldev/kord/common/entity/SkuType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/DiscordSKU$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/common/entity/DiscordSKU$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordSKU; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordSKU;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/common/entity/DiscordSKU$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + public final class dev/kord/common/entity/DiscordSelectDefaultValue { public static final field Companion Ldev/kord/common/entity/DiscordSelectDefaultValue$Companion; public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SelectDefaultValueType;)V @@ -6507,6 +6593,55 @@ public final class dev/kord/common/entity/EmbedType$Video : dev/kord/common/enti public static final field INSTANCE Ldev/kord/common/entity/EmbedType$Video; } +public abstract class dev/kord/common/entity/EntitlementOwnerType { + public static final field Companion Ldev/kord/common/entity/EntitlementOwnerType$Companion; + public synthetic fun (ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun equals (Ljava/lang/Object;)Z + public final fun getValue ()I + public final fun hashCode ()I + public final fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/EntitlementOwnerType$Companion { + public final fun from (I)Ldev/kord/common/entity/EntitlementOwnerType; + public final fun getEntries ()Ljava/util/List; + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/common/entity/EntitlementOwnerType$Guild : dev/kord/common/entity/EntitlementOwnerType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementOwnerType$Guild; +} + +public final class dev/kord/common/entity/EntitlementOwnerType$Unknown : dev/kord/common/entity/EntitlementOwnerType { +} + +public final class dev/kord/common/entity/EntitlementOwnerType$User : dev/kord/common/entity/EntitlementOwnerType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementOwnerType$User; +} + +public abstract class dev/kord/common/entity/EntitlementType { + public static final field Companion Ldev/kord/common/entity/EntitlementType$Companion; + public synthetic fun (ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun equals (Ljava/lang/Object;)Z + public final fun getValue ()I + public final fun hashCode ()I + public final fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/EntitlementType$ApplicationSubscription : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$ApplicationSubscription; +} + +public final class dev/kord/common/entity/EntitlementType$Companion { + public final fun from (I)Ldev/kord/common/entity/EntitlementType; + public final fun getEntries ()Ljava/util/List; + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/common/entity/EntitlementType$Unknown : dev/kord/common/entity/EntitlementType { + public synthetic fun (I)V +} + public abstract class dev/kord/common/entity/ExplicitContentFilter { public static final field Companion Ldev/kord/common/entity/ExplicitContentFilter$Companion; public synthetic fun (ILkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -7090,6 +7225,10 @@ public final class dev/kord/common/entity/InteractionResponseType$Pong : dev/kor public static final field INSTANCE Ldev/kord/common/entity/InteractionResponseType$Pong; } +public final class dev/kord/common/entity/InteractionResponseType$PremiumRequired : dev/kord/common/entity/InteractionResponseType { + public static final field INSTANCE Ldev/kord/common/entity/InteractionResponseType$PremiumRequired; +} + public final class dev/kord/common/entity/InteractionResponseType$Unknown : dev/kord/common/entity/InteractionResponseType { public synthetic fun (I)V } @@ -8430,6 +8569,105 @@ public final class dev/kord/common/entity/SelectDefaultValueType$User : dev/kord public static final field INSTANCE Ldev/kord/common/entity/SelectDefaultValueType$User; } +public abstract class dev/kord/common/entity/SkuFlag { + public static final field Companion Ldev/kord/common/entity/SkuFlag$Companion; + public synthetic fun (ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun equals (Ljava/lang/Object;)Z + public final fun getShift ()I + public final fun getValue ()I + public final fun hashCode ()I + public final fun plus (Ldev/kord/common/entity/SkuFlag;)Ldev/kord/common/entity/SkuFlags; + public final fun plus (Ldev/kord/common/entity/SkuFlags;)Ldev/kord/common/entity/SkuFlags; + public final fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/SkuFlag$Available : dev/kord/common/entity/SkuFlag { + public static final field INSTANCE Ldev/kord/common/entity/SkuFlag$Available; +} + +public final class dev/kord/common/entity/SkuFlag$Companion { + public final fun fromShift (I)Ldev/kord/common/entity/SkuFlag; + public final fun getEntries ()Ljava/util/List; +} + +public final class dev/kord/common/entity/SkuFlag$GuildSubscription : dev/kord/common/entity/SkuFlag { + public static final field INSTANCE Ldev/kord/common/entity/SkuFlag$GuildSubscription; +} + +public final class dev/kord/common/entity/SkuFlag$Unknown : dev/kord/common/entity/SkuFlag { +} + +public final class dev/kord/common/entity/SkuFlag$UserSubscription : dev/kord/common/entity/SkuFlag { + public static final field INSTANCE Ldev/kord/common/entity/SkuFlag$UserSubscription; +} + +public final class dev/kord/common/entity/SkuFlagKt { + public static final fun SkuFlags (Ljava/lang/Iterable;)Ldev/kord/common/entity/SkuFlags; + public static final fun SkuFlags (Lkotlin/jvm/functions/Function1;)Ldev/kord/common/entity/SkuFlags; + public static final fun SkuFlags ([Ldev/kord/common/entity/SkuFlag;)Ldev/kord/common/entity/SkuFlags; + public static final fun SkuFlags ([Ldev/kord/common/entity/SkuFlags;)Ldev/kord/common/entity/SkuFlags; + public static synthetic fun SkuFlags$default (Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ldev/kord/common/entity/SkuFlags; + public static final fun SkuFlags0 (Ljava/lang/Iterable;)Ldev/kord/common/entity/SkuFlags; +} + +public final class dev/kord/common/entity/SkuFlags { + public static final field Companion Ldev/kord/common/entity/SkuFlags$Companion; + public final fun contains (Ldev/kord/common/entity/SkuFlag;)Z + public final fun contains (Ldev/kord/common/entity/SkuFlags;)Z + public final fun copy (Lkotlin/jvm/functions/Function1;)Ldev/kord/common/entity/SkuFlags; + public fun equals (Ljava/lang/Object;)Z + public final fun getValue ()I + public final fun getValues ()Ljava/util/Set; + public fun hashCode ()I + public final fun minus (Ldev/kord/common/entity/SkuFlag;)Ldev/kord/common/entity/SkuFlags; + public final fun minus (Ldev/kord/common/entity/SkuFlags;)Ldev/kord/common/entity/SkuFlags; + public final fun plus (Ldev/kord/common/entity/SkuFlag;)Ldev/kord/common/entity/SkuFlags; + public final fun plus (Ldev/kord/common/entity/SkuFlags;)Ldev/kord/common/entity/SkuFlags; + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/SkuFlags$Builder { + public fun ()V + public fun (I)V + public synthetic fun (IILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun build ()Ldev/kord/common/entity/SkuFlags; + public final fun unaryMinus (Ldev/kord/common/entity/SkuFlag;)V + public final fun unaryMinus (Ldev/kord/common/entity/SkuFlags;)V + public final fun unaryPlus (Ldev/kord/common/entity/SkuFlag;)V + public final fun unaryPlus (Ldev/kord/common/entity/SkuFlags;)V +} + +public final class dev/kord/common/entity/SkuFlags$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public abstract class dev/kord/common/entity/SkuType { + public static final field Companion Ldev/kord/common/entity/SkuType$Companion; + public synthetic fun (ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun equals (Ljava/lang/Object;)Z + public final fun getValue ()I + public final fun hashCode ()I + public final fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/SkuType$Companion { + public final fun from (I)Ldev/kord/common/entity/SkuType; + public final fun getEntries ()Ljava/util/List; + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/common/entity/SkuType$Subscription : dev/kord/common/entity/SkuType { + public static final field INSTANCE Ldev/kord/common/entity/SkuType$Subscription; +} + +public final class dev/kord/common/entity/SkuType$SubscriptionGroup : dev/kord/common/entity/SkuType { + public static final field INSTANCE Ldev/kord/common/entity/SkuType$SubscriptionGroup; +} + +public final class dev/kord/common/entity/SkuType$Unknown : dev/kord/common/entity/SkuType { + public synthetic fun (I)V +} + public final class dev/kord/common/entity/Snowflake : java/lang/Comparable { public static final field Companion Ldev/kord/common/entity/Snowflake$Companion; public synthetic fun (JLkotlin/jvm/internal/DefaultConstructorMarker;)V diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt index cb0b061fd412..c298dfcaa52a 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt @@ -43,14 +43,14 @@ public sealed class EntitlementOwnerType( ) : EntitlementOwnerType(value) /** - * Entitlement is owned by a user. + * Entitlement is owned by a guild. */ - public object User : EntitlementOwnerType(1) + public object Guild : EntitlementOwnerType(1) /** - * Entitlement is owned by a guild. + * Entitlement is owned by a user. */ - public object Guild : EntitlementOwnerType(2) + public object User : EntitlementOwnerType(2) internal object Serializer : KSerializer { override val descriptor: SerialDescriptor = @@ -70,8 +70,8 @@ public sealed class EntitlementOwnerType( */ public val entries: List by lazy(mode = PUBLICATION) { listOf( - User, Guild, + User, ) } @@ -81,8 +81,8 @@ public sealed class EntitlementOwnerType( * the specified [value]. */ public fun from(`value`: Int): EntitlementOwnerType = when (value) { - 1 -> User - 2 -> Guild + 1 -> Guild + 2 -> User else -> Unknown(value) } } diff --git a/common/src/commonMain/kotlin/annotation/Annotations.kt b/common/src/commonMain/kotlin/annotation/Annotations.kt index c3355c01d84c..c2f12969848d 100644 --- a/common/src/commonMain/kotlin/annotation/Annotations.kt +++ b/common/src/commonMain/kotlin/annotation/Annotations.kt @@ -55,6 +55,17 @@ public annotation class KordExperimental @Target(CLASS, PROPERTY, FUNCTION, TYPEALIAS) public annotation class KordVoice +/** + * Marks a Kord-related API that requires your application to have monetization enabled. + * + * Not all applications are eligible for monetization, and this annotation marks functionality that requires it. + */ +@MustBeDocumented +@RequiresOptIn(level = WARNING) +@Retention(BINARY) +@Target(CLASS, PROPERTY, FUNCTION, TYPEALIAS) +public annotation class RequiresMonetization + /** * Marks a Kord-related API as potentially unsafe. * diff --git a/common/src/commonMain/kotlin/entity/Entitlements.kt b/common/src/commonMain/kotlin/entity/Entitlements.kt index c235d4844b64..919f2a24cedc 100644 --- a/common/src/commonMain/kotlin/entity/Entitlements.kt +++ b/common/src/commonMain/kotlin/entity/Entitlements.kt @@ -11,8 +11,8 @@ docUrl = "https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement", unknownConstructorWasPublic = false, entries = [ - Generate.Entry("User", intValue = 1, kDoc = "Entitlement is owned by a user."), - Generate.Entry("Guild", intValue = 2, kDoc = "Entitlement is owned by a guild.") + Generate.Entry("Guild", intValue = 1, kDoc = "Entitlement is owned by a guild."), + Generate.Entry("User", intValue = 2, kDoc = "Entitlement is owned by a user."), ] ) @@ -40,9 +40,9 @@ public data class DiscordEntitlement( val type: EntitlementType, val deleted: Boolean, @SerialName("starts_at") - val startsAt: Optional, + val startsAt: Optional = Optional.Missing(), @SerialName("ends_at") - val endsAt: Optional, + val endsAt: Optional = Optional.Missing(), @SerialName("guild_Id") val guildId: OptionalSnowflake = OptionalSnowflake.Missing, ) \ No newline at end of file diff --git a/core/api/core.api b/core/api/core.api index 0a2cc7e9ba7a..d17b26ba1dd4 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -27,6 +27,9 @@ public final class dev/kord/core/Kord : kotlinx/coroutines/CoroutineScope { public static synthetic fun createGuildMessageCommand$default (Ldev/kord/core/Kord;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun createGuildUserCommand (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun createGuildUserCommand$default (Ldev/kord/core/Kord;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun createTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementOwnerType;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun createTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/core/behavior/GuildBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun createTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/core/behavior/UserBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun editPresence (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun editSelf (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun equals (Ljava/lang/Object;)Z @@ -37,6 +40,8 @@ public final class dev/kord/core/Kord : kotlinx/coroutines/CoroutineScope { public static synthetic fun getChannel$default (Ldev/kord/core/Kord;Ldev/kord/common/entity/Snowflake;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public fun getCoroutineContext ()Lkotlin/coroutines/CoroutineContext; public final fun getDefaultSupplier ()Ldev/kord/core/supplier/EntitySupplier; + public final fun getEntitlement (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getEvents ()Lkotlinx/coroutines/flow/SharedFlow; public final fun getGateway ()Ldev/kord/core/gateway/MasterGateway; public final fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -69,6 +74,7 @@ public final class dev/kord/core/Kord : kotlinx/coroutines/CoroutineScope { public final fun getSelf (Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun getSelf$default (Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun getSelfId ()Ldev/kord/common/entity/Snowflake; + public final fun getSkus (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getSticker (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getUnsafe ()Ldev/kord/core/Unsafe; public final fun getUser (Ldev/kord/common/entity/Snowflake;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -177,6 +183,24 @@ public final class dev/kord/core/behavior/ChatInputCommandBehavior$DefaultImpls public static fun compareTo (Ldev/kord/core/behavior/ChatInputCommandBehavior;Ldev/kord/core/entity/Entity;)I } +public abstract interface class dev/kord/core/behavior/EntitlementBehavior : dev/kord/core/entity/KordEntity, dev/kord/core/entity/Strategizable { + public abstract fun asEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun asEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun fetchEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun fetchEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun getApplicationId ()Ldev/kord/common/entity/Snowflake; +} + +public final class dev/kord/core/behavior/EntitlementBehavior$DefaultImpls { + public static fun asEntitlement (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun asEntitlementOrNull (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun compareTo (Ldev/kord/core/behavior/EntitlementBehavior;Ldev/kord/core/entity/Entity;)I + public static fun delete (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun fetchEntitlement (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun fetchEntitlementOrNull (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public abstract interface class dev/kord/core/behavior/GlobalApplicationCommandBehavior : dev/kord/core/behavior/ApplicationCommandBehavior { public abstract fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -3527,6 +3551,46 @@ public final class dev/kord/core/cache/data/EmojiDataKt { public static final fun toData (Ldev/kord/common/entity/DiscordEmoji;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;)Ldev/kord/core/cache/data/EmojiData; } +public final class dev/kord/core/cache/data/EntitlementData { + public static final field Companion Ldev/kord/core/cache/data/EntitlementData$Companion; + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component2 ()Ldev/kord/common/entity/Snowflake; + public final fun component3 ()Ldev/kord/common/entity/EntitlementType; + public final fun component4 ()Ldev/kord/common/entity/Snowflake; + public final fun component5 ()Ldev/kord/common/entity/optional/OptionalSnowflake; + public final fun component6 ()Ldev/kord/common/entity/optional/OptionalSnowflake; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;)Ldev/kord/core/cache/data/EntitlementData; + public static synthetic fun copy$default (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ILjava/lang/Object;)Ldev/kord/core/cache/data/EntitlementData; + public fun equals (Ljava/lang/Object;)Z + public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; + public final fun getId ()Ldev/kord/common/entity/Snowflake; + public final fun getSkuId ()Ldev/kord/common/entity/Snowflake; + public final fun getType ()Ldev/kord/common/entity/EntitlementType; + public final fun getUserId ()Ldev/kord/common/entity/optional/OptionalSnowflake; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/core/cache/data/EntitlementData$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/core/cache/data/EntitlementData$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/core/cache/data/EntitlementData; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/core/cache/data/EntitlementData;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/core/cache/data/EntitlementData$Companion { + public final fun from (Ldev/kord/common/entity/DiscordEntitlement;)Ldev/kord/core/cache/data/EntitlementData; + public final fun getDescription ()Ldev/kord/cache/api/data/DataDescription; + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + public final class dev/kord/core/cache/data/GuildApplicationCommandPermissionData { public static final field Companion Ldev/kord/core/cache/data/GuildApplicationCommandPermissionData$Companion; public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/ApplicationCommandPermissionType;Z)V @@ -4967,6 +5031,32 @@ public final class dev/kord/core/cache/data/SelectOptionData$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/core/cache/data/SkuData { + public static final field Companion Ldev/kord/core/cache/data/SkuData$Companion; + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)V + public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component2 ()Ldev/kord/common/entity/Snowflake; + public final fun component3 ()Ldev/kord/common/entity/SkuType; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ldev/kord/common/entity/SkuFlags; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)Ldev/kord/core/cache/data/SkuData; + public static synthetic fun copy$default (Ldev/kord/core/cache/data/SkuData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;ILjava/lang/Object;)Ldev/kord/core/cache/data/SkuData; + public fun equals (Ljava/lang/Object;)Z + public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; + public final fun getId ()Ldev/kord/common/entity/Snowflake; + public final fun getName ()Ljava/lang/String; + public final fun getSlug ()Ljava/lang/String; + public final fun getType ()Ldev/kord/common/entity/SkuType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/core/cache/data/SkuData$Companion { + public final fun from (Ldev/kord/common/entity/DiscordSKU;)Ldev/kord/core/cache/data/SkuData; +} + public final class dev/kord/core/cache/data/StageInstanceData { public static final field Companion Ldev/kord/core/cache/data/StageInstanceData$Companion; public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/StageInstancePrivacyLevel;Ldev/kord/common/entity/Snowflake;)V @@ -6036,6 +6126,32 @@ public abstract interface class dev/kord/core/entity/Emoji { public abstract fun getName ()Ljava/lang/String; } +public final class dev/kord/core/entity/Entitlement : dev/kord/core/behavior/EntitlementBehavior { + public fun (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V + public synthetic fun (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun asEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun asEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun compareTo (Ldev/kord/core/entity/Entity;)I + public synthetic fun compareTo (Ljava/lang/Object;)I + public fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun fetchEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun fetchEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getData ()Ldev/kord/core/cache/data/EntitlementData; + public final fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; + public final fun getGuildId ()Ldev/kord/common/entity/Snowflake; + public fun getId ()Ldev/kord/common/entity/Snowflake; + public fun getKord ()Ldev/kord/core/Kord; + public final fun getSkuId ()Ldev/kord/common/entity/Snowflake; + public fun getSupplier ()Ldev/kord/core/supplier/EntitySupplier; + public final fun getType ()Ldev/kord/common/entity/EntitlementType; + public final fun getUser ()Ldev/kord/core/behavior/UserBehavior; + public final fun getUserId ()Ldev/kord/common/entity/Snowflake; + public fun toString ()Ljava/lang/String; + public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Entitlement; + public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; +} + public abstract interface class dev/kord/core/entity/Entity : java/lang/Comparable { public static final field Companion Ldev/kord/core/entity/Entity$Companion; public abstract fun compareTo (Ldev/kord/core/entity/Entity;)I @@ -6942,6 +7058,25 @@ public final class dev/kord/core/entity/RoleTags : dev/kord/core/KordObject, dev public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; } +public final class dev/kord/core/entity/SKU : dev/kord/core/entity/KordEntity, dev/kord/core/entity/Strategizable { + public fun (Ldev/kord/core/cache/data/SkuData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V + public synthetic fun (Ldev/kord/core/cache/data/SkuData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun compareTo (Ldev/kord/core/entity/Entity;)I + public synthetic fun compareTo (Ljava/lang/Object;)I + public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getData ()Ldev/kord/core/cache/data/SkuData; + public final fun getEntitlements (Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun getEntitlements$default (Ldev/kord/core/entity/SKU;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; + public fun getId ()Ldev/kord/common/entity/Snowflake; + public fun getKord ()Ldev/kord/core/Kord; + public final fun getName ()Ljava/lang/String; + public final fun getSlug ()Ljava/lang/String; + public fun getSupplier ()Ldev/kord/core/supplier/EntitySupplier; + public final fun getType ()Ldev/kord/common/entity/SkuType; + public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; +} + public final class dev/kord/core/entity/StageInstance : dev/kord/core/behavior/StageInstanceBehavior { public fun (Ldev/kord/core/cache/data/StageInstanceData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V public synthetic fun (Ldev/kord/core/cache/data/StageInstanceData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -11589,6 +11724,36 @@ public final class dev/kord/core/event/channel/thread/UnknownChannelThreadUpdate public fun toString ()Ljava/lang/String; } +public final class dev/kord/core/event/entitlement/EntitlementCreateEvent : dev/kord/core/event/Event { + public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;)V + public fun getCustomContext ()Ljava/lang/Object; + public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; + public fun getGateway ()Ldev/kord/gateway/Gateway; + public fun getKord ()Ldev/kord/core/Kord; + public fun getShard ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/core/event/entitlement/EntitlementDeleteEvent : dev/kord/core/event/Event { + public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;)V + public fun getCustomContext ()Ljava/lang/Object; + public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; + public fun getGateway ()Ldev/kord/gateway/Gateway; + public fun getKord ()Ldev/kord/core/Kord; + public fun getShard ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/core/event/entitlement/EntitlementUpdateEvent : dev/kord/core/event/Event { + public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;)V + public fun getCustomContext ()Ljava/lang/Object; + public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; + public fun getGateway ()Ldev/kord/gateway/Gateway; + public fun getKord ()Ldev/kord/core/Kord; + public fun getShard ()I + public fun toString ()Ljava/lang/String; +} + public final class dev/kord/core/event/gateway/ConnectEvent : dev/kord/core/event/gateway/GatewayEvent { public fun (Ldev/kord/core/Kord;ILjava/lang/Object;)V public fun getCustomContext ()Ljava/lang/Object; @@ -13044,6 +13209,7 @@ public final class dev/kord/core/exception/EntityNotFoundException$Companion { public final fun autoModerationRuleNotFound (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;)Ljava/lang/Void; public final fun banNotFound (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;)Ljava/lang/Void; public final fun emojiNotFound (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;)Ljava/lang/Void; + public final fun entitlementNotFound (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;)Ljava/lang/Void; public final fun entityNotFound (Ljava/lang/String;Ldev/kord/common/entity/Snowflake;)Ljava/lang/Void; public final fun followupMessageNotFound (Ljava/lang/String;Ldev/kord/common/entity/Snowflake;)Ljava/lang/Void; public final fun guildEntityNotFound (Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;)Ljava/lang/Void; @@ -13459,6 +13625,9 @@ public final class dev/kord/core/supplier/CacheEntitySupplier : dev/kord/core/su public fun getEmoji (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEmojiOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; + public fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -13549,6 +13718,9 @@ public abstract interface class dev/kord/core/supplier/EntitySupplier { public abstract fun getEmoji (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getEmojiOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; + public abstract fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -13625,6 +13797,8 @@ public final class dev/kord/core/supplier/EntitySupplier$DefaultImpls { public static fun getChannel (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun getCurrentUserGuilds$default (Ldev/kord/core/supplier/EntitySupplier;Ljava/lang/Integer;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; public static fun getEmoji (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlement (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun getEntitlements$default (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static fun getFollowupMessage (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getGlobalApplicationCommand (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun getGlobalApplicationCommands$default (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; @@ -13705,6 +13879,9 @@ public final class dev/kord/core/supplier/RestEntitySupplier : dev/kord/core/sup public fun getEmoji (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEmojiOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; + public fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -13767,6 +13944,7 @@ public final class dev/kord/core/supplier/RestEntitySupplier : dev/kord/core/sup public fun getRegions ()Lkotlinx/coroutines/flow/Flow; public fun getRole (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getRoleOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getSKUs (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getSelf (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getSelfOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getStageInstance (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -13804,6 +13982,9 @@ public final class dev/kord/core/supplier/StoreEntitySupplier : dev/kord/core/su public fun getEmoji (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEmojiOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; + public fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/core/src/commonMain/kotlin/Kord.kt b/core/src/commonMain/kotlin/Kord.kt index ae299b660e23..8c7a80a5b70e 100644 --- a/core/src/commonMain/kotlin/Kord.kt +++ b/core/src/commonMain/kotlin/Kord.kt @@ -4,24 +4,30 @@ import dev.kord.cache.api.DataCache import dev.kord.common.annotation.KordExperimental import dev.kord.common.annotation.KordUnsafe import dev.kord.common.entity.DiscordShard +import dev.kord.common.entity.EntitlementOwnerType import dev.kord.common.entity.Snowflake import dev.kord.common.exception.RequestException +import dev.kord.core.behavior.GuildBehavior +import dev.kord.core.behavior.UserBehavior import dev.kord.core.builder.kord.KordBuilder import dev.kord.core.builder.kord.KordProxyBuilder import dev.kord.core.builder.kord.KordRestOnlyBuilder import dev.kord.core.cache.data.ApplicationCommandData +import dev.kord.core.cache.data.EntitlementData import dev.kord.core.cache.data.GuildData import dev.kord.core.cache.data.UserData import dev.kord.core.entity.* import dev.kord.core.entity.application.* import dev.kord.core.entity.channel.Channel import dev.kord.core.event.Event +import dev.kord.core.event.entitlement.EntitlementCreateEvent import dev.kord.core.exception.EntityNotFoundException import dev.kord.core.exception.KordInitializationException import dev.kord.core.gateway.MasterGateway import dev.kord.core.gateway.handler.GatewayEventInterceptor import dev.kord.core.gateway.start import dev.kord.core.supplier.* +import dev.kord.gateway.EntitlementCreate import dev.kord.gateway.Gateway import dev.kord.gateway.builder.LoginBuilder import dev.kord.gateway.builder.PresenceBuilder @@ -29,6 +35,7 @@ import dev.kord.rest.builder.application.ApplicationRoleConnectionMetadataRecord import dev.kord.rest.builder.guild.GuildCreateBuilder import dev.kord.rest.builder.interaction.* import dev.kord.rest.builder.user.CurrentUserModifyBuilder +import dev.kord.rest.json.request.TestEntitlementCreateRequest import dev.kord.rest.request.RestRequestException import dev.kord.rest.service.RestClient import kotlinx.coroutines.* @@ -360,6 +367,50 @@ public class Kord( scheduledEventId: Snowflake? = null, ): Invite? = with(EntitySupplyStrategy.rest).getInviteOrNull(code, withCounts, withExpiration, scheduledEventId) + /** + * Requests to get all [SKU]s for this application. + * + * @throws [RequestException] if anything went wrong during the request. + */ + public suspend fun getSkus(): List = with(EntitySupplyStrategy.rest).getSKUs(selfId) + + /** + * Requests to get the [Entitlement] with the given [id] + * + * @throws [RequestException] if anything went wrong during the request. + * @throws [EntityNotFoundException] if the entitlement wasn't present. + */ + public suspend fun getEntitlement(id: Snowflake): Entitlement = defaultSupplier.getEntitlement(selfId, id) + + /** + * Requests to get the [Entitlement] with the given [id]. + * returns null if it wasn't present. + * + * @throws [RequestException] if anything went wrong during the request. + */ + public suspend fun getEntitlementOrNull(id: Snowflake): Entitlement? = defaultSupplier.getEntitlementOrNull(selfId, id) + + /** + * Requests to create a new [test entitlement][Entitlement] with the given [skuId], [ownerId] and [ownerType]. + * + * @throws [RequestException] if anything went wrong during the request. + */ + public suspend fun createTestEntitlement( + skuId: Snowflake, + ownerId: Snowflake, + ownerType: EntitlementOwnerType, + ): Entitlement { + val response = rest.entitlement.createTestEntitlement(selfId, TestEntitlementCreateRequest(skuId, ownerId, ownerType)) + val data = EntitlementData.from(response) + + return Entitlement(data, this) + } + + public suspend fun createTestEntitlement(skuId: Snowflake, user: UserBehavior): Entitlement = + createTestEntitlement(skuId, user.id, EntitlementOwnerType.User) + + public suspend fun createTestEntitlement(skuId: Snowflake, guild: GuildBehavior): Entitlement = + createTestEntitlement(skuId, guild.id, EntitlementOwnerType.Guild) public suspend fun getSticker(id: Snowflake): Sticker = defaultSupplier.getSticker(id) diff --git a/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt b/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt new file mode 100644 index 000000000000..9825f8a6b68e --- /dev/null +++ b/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt @@ -0,0 +1,60 @@ +package dev.kord.core.behavior + +import dev.kord.common.entity.Snowflake +import dev.kord.common.exception.RequestException +import dev.kord.core.entity.Entitlement +import dev.kord.core.entity.KordEntity +import dev.kord.core.entity.Strategizable +import dev.kord.core.exception.EntityNotFoundException +import dev.kord.core.supplier.EntitySupplier +import dev.kord.rest.request.RestRequestException + +/** + * The behavior of a [Discord Test Entitlement](https://discord.com/developers/docs/monetization/entitlements) + */ +public interface EntitlementBehavior : KordEntity, Strategizable { + public val applicationId: Snowflake + + /** + * Requests to get this value as an [Entitlement]. + * + * @throws [RequestException] if anything went wrong during the request. + * @throws [EntityNotFoundException] if the entitlement wasn't present. + */ + public suspend fun asEntitlement(): Entitlement = supplier.getEntitlement(applicationId, id) + + /** + * Requests to get this value as an [Entitlement]. + * returns null if this entitlement isn't present. + * + * @throws [RequestException] if anything went wrong during the request. + */ + public suspend fun asEntitlementOrNull(): Entitlement? = supplier.getEntitlementOrNull(applicationId, id) + + /** + * Retrieve the [Entitlement] associated with this behavior from the provided [EntitySupplier] + * + * @throws [RequestException] if anything went wrong during the request. + * @throws [EntityNotFoundException] if the entitlement wasn't present. + */ + public suspend fun fetchEntitlement(): Entitlement = supplier.getEntitlement(applicationId, id) + + /** + * Retrieve the [Entitlement] associated with this behavior from the provided [EntitySupplier] + * returns null if this entitlement isn't present. + * + * @throws [RequestException] if anything went wrong during the request. + */ + public suspend fun fetchEntitlementOrNull(): Entitlement? = supplier.getEntitlementOrNull(applicationId, id) + + /** + * Requests to delete this entitlement. + * This request fill fail if this is not a test entitlement. + * + * @throws [RestRequestException] if something went wrong during the request. + */ + public suspend fun delete() { + kord.rest.entitlement.deleteTestEntitlement(applicationId, id) + } + +} diff --git a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt new file mode 100644 index 000000000000..9c600b5b375c --- /dev/null +++ b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt @@ -0,0 +1,30 @@ +package dev.kord.core.cache.data + +import dev.kord.cache.api.data.DataDescription +import dev.kord.cache.api.data.description +import dev.kord.common.entity.DiscordEntitlement +import dev.kord.common.entity.EntitlementType +import dev.kord.common.entity.Snowflake +import dev.kord.common.entity.optional.OptionalSnowflake +import kotlinx.serialization.Serializable + +@Serializable +public data class EntitlementData( + val id: Snowflake, + val applicationId: Snowflake, + val type: EntitlementType, + val skuId: Snowflake, + val guildId: OptionalSnowflake = OptionalSnowflake.Missing, + val userId: OptionalSnowflake = OptionalSnowflake.Missing +) { + public companion object { + public val description: DataDescription = description(EntitlementData::id) { + link(EntitlementData::guildId to GuildData::id) + link(EntitlementData::userId to UserData::id) + } + + public fun from(entity: DiscordEntitlement): EntitlementData = with(entity) { + EntitlementData(id, applicationId, type, skuId, guildId, userId) + } + } +} diff --git a/core/src/commonMain/kotlin/cache/data/SkuData.kt b/core/src/commonMain/kotlin/cache/data/SkuData.kt new file mode 100644 index 000000000000..0ce9f51615d4 --- /dev/null +++ b/core/src/commonMain/kotlin/cache/data/SkuData.kt @@ -0,0 +1,21 @@ +package dev.kord.core.cache.data + +import dev.kord.common.entity.DiscordSKU +import dev.kord.common.entity.SkuFlags +import dev.kord.common.entity.SkuType +import dev.kord.common.entity.Snowflake + +public data class SkuData( + val id: Snowflake, + val applicationId: Snowflake, + val type: SkuType, + val name: String, + val slug: String, + val flags: SkuFlags, +) { + public companion object { + public fun from(entity: DiscordSKU): SkuData = with (entity) { + SkuData(id, applicationId, type, name, slug, flags) + } + } +} \ No newline at end of file diff --git a/core/src/commonMain/kotlin/entity/Entitlement.kt b/core/src/commonMain/kotlin/entity/Entitlement.kt new file mode 100644 index 000000000000..7c6228c7fba2 --- /dev/null +++ b/core/src/commonMain/kotlin/entity/Entitlement.kt @@ -0,0 +1,64 @@ +package dev.kord.core.entity + +import dev.kord.common.entity.EntitlementType +import dev.kord.common.entity.Snowflake +import dev.kord.core.Kord +import dev.kord.core.behavior.EntitlementBehavior +import dev.kord.core.behavior.GuildBehavior +import dev.kord.core.behavior.UserBehavior +import dev.kord.core.cache.data.EntitlementData +import dev.kord.core.supplier.EntitySupplier +import dev.kord.core.supplier.EntitySupplyStrategy + +public class Entitlement( + public val data: EntitlementData, + override val kord: Kord, + override val supplier: EntitySupplier = kord.defaultSupplier, +) : EntitlementBehavior { + override val applicationId: Snowflake + get() = data.applicationId + + override val id: Snowflake + get() = data.id + + /** + * The type of entitlement. + */ + public val type: EntitlementType + get() = data.type + + /** + * The ID of the sku this entitlement is for. + */ + public val skuId: Snowflake + get() = data.skuId + + /** + * The ID of the guild this entitlement's sku is granted to. + */ + public val guildId: Snowflake? + get() = data.guildId.value + + public val guild: GuildBehavior? + get() = guildId?.let { GuildBehavior(it, kord) } + + /** + * The ID of the user this entitlement's sku is granted to. + */ + public val userId: Snowflake? + get() = data.userId.value + + public val user: UserBehavior? + get() = userId?.let { UserBehavior(it, kord) } + + override suspend fun asEntitlement(): Entitlement = this + + override suspend fun asEntitlementOrNull(): Entitlement = this + + override fun withStrategy(strategy: EntitySupplyStrategy<*>): Entitlement = + Entitlement(data, kord, strategy.supply(kord)) + + override fun toString(): String { + return "Entitlement(data=$data, kord=$kord, supplier=$supplier)" + } +} diff --git a/core/src/commonMain/kotlin/entity/SKU.kt b/core/src/commonMain/kotlin/entity/SKU.kt new file mode 100644 index 000000000000..68429bc5a843 --- /dev/null +++ b/core/src/commonMain/kotlin/entity/SKU.kt @@ -0,0 +1,53 @@ +package dev.kord.core.entity + +import dev.kord.common.entity.SkuFlags +import dev.kord.common.entity.SkuType +import dev.kord.common.exception.RequestException +import dev.kord.common.entity.Snowflake +import dev.kord.core.Kord +import dev.kord.core.cache.data.SkuData +import dev.kord.core.supplier.EntitySupplier +import dev.kord.core.supplier.EntitySupplyStrategy +import kotlinx.coroutines.flow.Flow + +public class SKU( + public val data: SkuData, + override val kord: Kord, + override val supplier: EntitySupplier = kord.defaultSupplier, +) : KordEntity, Strategizable { + override val id: Snowflake + get() = data.id + + public val applicationId: Snowflake get() = data.applicationId + + public val type: SkuType get() = data.type + + /** + * Customer-facing name of the premium offering. + */ + public val name: String get() = data.name + + /** + * System-generated URL slug based on the SKU's name + */ + public val slug: String get() = data.slug + + public val flags: SkuFlags get() = data.flags + + /** + * Requests to get the entitlements for this SKU. + * + * @param limit The maximum number of entitlements to return. Default is 100. + * @param userId The ID of the user to get entitlements for. If not provided, the current user is assumed. + * @param guildId The ID of the guild to get entitlements for. If not provided, entitlements for all guilds are returned. + * + * @throws [RequestException] if anything went wrong during the request. + */ + public suspend fun getEntitlements( + limit: Int? = null, + userId: Snowflake? = null, + guildId: Snowflake? = null, + ): Flow = supplier.getEntitlements(applicationId, id, limit, userId, guildId) + + override fun withStrategy(strategy: EntitySupplyStrategy<*>): Strategizable = SKU(data, kord, strategy.supply(kord)) +} \ No newline at end of file diff --git a/core/src/commonMain/kotlin/event/entitlement/Events.kt b/core/src/commonMain/kotlin/event/entitlement/Events.kt new file mode 100644 index 000000000000..1619c3118fb4 --- /dev/null +++ b/core/src/commonMain/kotlin/event/entitlement/Events.kt @@ -0,0 +1,45 @@ +package dev.kord.core.event.entitlement + +import dev.kord.core.Kord +import dev.kord.core.entity.Entitlement +import dev.kord.core.event.Event + +public class EntitlementCreateEvent( + public val entitlement: Entitlement, + override val shard: Int, + override val customContext: Any? +) : Event { + + override val kord: Kord get() = entitlement.kord + + override fun toString(): String { + return "EntitlementCreateEvent(entitlement=$entitlement, shard=$shard)" + } + +} + +public class EntitlementUpdateEvent( + public val entitlement: Entitlement, + override val shard: Int, + override val customContext: Any? +) : Event { + + override val kord: Kord get() = entitlement.kord + + override fun toString(): String { + return "EntitlementUpdateEvent(entitlement=$entitlement, shard=$shard)" + } + +} + +public class EntitlementDeleteEvent( + public val entitlement: Entitlement, + override val shard: Int, + override val customContext: Any? +) : Event { + override val kord: Kord get() = entitlement.kord + + override fun toString(): String { + return "EntitlementDeleteEvent(entitlement=$entitlement, shard=$shard)" + } +} diff --git a/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt b/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt index a145d0956a23..e1fe0ff03657 100644 --- a/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt +++ b/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt @@ -1,6 +1,7 @@ package dev.kord.core.exception import dev.kord.common.entity.Snowflake +import dev.kord.core.entity.Entity import dev.kord.core.entity.application.ApplicationCommand import dev.kord.core.entity.channel.Channel @@ -104,5 +105,8 @@ public class EntityNotFoundException : Exception { public inline fun autoModerationRuleNotFound(guildId: Snowflake, ruleId: Snowflake): Nothing = guildEntityNotFound("Auto Moderation Rule", guildId, ruleId) + + public inline fun entitlementNotFound(applicationId: Snowflake, entitlementId: Snowflake): Nothing = + throw EntityNotFoundException("Entitlement with id $entitlementId in application $applicationId was not found.") } } diff --git a/core/src/commonMain/kotlin/gateway/handler/DefaultGatewayEventInterceptor.kt b/core/src/commonMain/kotlin/gateway/handler/DefaultGatewayEventInterceptor.kt index 8725cfa03012..c44dfafb69ce 100644 --- a/core/src/commonMain/kotlin/gateway/handler/DefaultGatewayEventInterceptor.kt +++ b/core/src/commonMain/kotlin/gateway/handler/DefaultGatewayEventInterceptor.kt @@ -46,6 +46,7 @@ public class DefaultGatewayEventInterceptor @KordPreview public constructor( UserEventHandler(), VoiceEventHandler(), WebhookEventHandler(), + EntitlementEventHandler() ) override suspend fun handle(event: ShardEvent, kord: Kord): CoreEvent? { diff --git a/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt new file mode 100644 index 000000000000..d18516a5b24b --- /dev/null +++ b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt @@ -0,0 +1,59 @@ +package dev.kord.core.gateway.handler + +import dev.kord.cache.api.put +import dev.kord.cache.api.remove +import dev.kord.common.entity.DiscordEntitlement +import dev.kord.core.Kord +import dev.kord.core.cache.data.EntitlementData +import dev.kord.core.cache.idEq +import dev.kord.core.entity.Entitlement +import dev.kord.core.event.entitlement.EntitlementCreateEvent +import dev.kord.core.event.entitlement.EntitlementDeleteEvent +import dev.kord.core.event.entitlement.EntitlementUpdateEvent +import dev.kord.gateway.EntitlementCreate +import dev.kord.gateway.EntitlementDelete +import dev.kord.gateway.EntitlementUpdate +import dev.kord.gateway.Event + +internal class EntitlementEventHandler : BaseGatewayEventHandler() { + override suspend fun handle( + event: Event, + shard: Int, + kord: Kord, + context: LazyContext?, + ): dev.kord.core.event.Event? = when (event) { + is EntitlementCreate -> EntitlementCreateEvent( + entitlement = handleEntitlement(event.entitlement, kord), + shard = shard, + customContext = context?.get(), + ) + + is EntitlementUpdate -> EntitlementUpdateEvent( + entitlement = handleEntitlement(event.entitlement, kord), + shard = shard, + customContext = context?.get(), + ) + + is EntitlementDelete -> EntitlementDeleteEvent( + entitlement = handleEntitlement(event.entitlement, kord, delete = true), + shard = shard, + customContext = context?.get(), + ) + + else -> null + } + + private suspend fun handleEntitlement( + entity: DiscordEntitlement, + kord: Kord, + delete: Boolean = false + ): Entitlement { + val entitlement = Entitlement(EntitlementData.from(entity), kord) + if (delete) kord.cache.remove { + idEq(EntitlementData::id, entitlement.id) + idEq(EntitlementData::userId, entitlement.userId) + } else kord.cache.put(entitlement) + + return entitlement + } +} \ No newline at end of file diff --git a/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt index 6f782fd40cce..772e9eb381e3 100644 --- a/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt @@ -599,6 +599,34 @@ public class CacheEntitySupplier(private val kord: Kord) : EntitySupplier { .singleOrNull() ?.let { AutoModerationRule(it, kord) } + override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? = + cache + .query { + idEq(EntitlementData::id, entitlementId) + idEq(EntitlementData::applicationId, applicationId) + } + .singleOrNull() + ?.let { Entitlement(it, kord) } + + override suspend fun getEntitlements( + applicationId: Snowflake, + skuId: Snowflake, + limit: Int?, + userId: Snowflake?, + guildId: Snowflake? + ): Flow { + checkLimit(limit) + return cache + .query { + idEq(EntitlementData::applicationId, applicationId) + idEq(EntitlementData::skuId, skuId) + userId?.let { idEq(EntitlementData::userId, it) } + guildId?.let { idEq(EntitlementData::guildId, it) } + } + .asFlow() + .map { Entitlement(it, kord) } + .limit(limit) + } override fun toString(): String = "CacheEntitySupplier(cache=$cache)" } diff --git a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt index 153ad6190d75..5c5611a312de 100644 --- a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt @@ -642,6 +642,35 @@ public interface EntitySupplier { public suspend fun getAutoModerationRule(guildId: Snowflake, ruleId: Snowflake): AutoModerationRule = getAutoModerationRuleOrNull(guildId, ruleId) ?: EntityNotFoundException.autoModerationRuleNotFound(guildId, ruleId) + + /** + * Requests an [Entitlement] by its [id][entitlementId]. Returns `null` if it wasn't found. + * + * @throws RequestException if something went wrong during the request. + */ + public suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? + + /** + * Requests an [Entitlement] by its [id][entitlementId]. + * + * @throws RequestException if something went wrong during the request. + * @throws EntityNotFoundException if the [Entitlement] wasn't found. + */ + public suspend fun getEntitlement(applicationId: Snowflake, entitlementId: Snowflake): Entitlement = + getEntitlementOrNull(applicationId, entitlementId) + ?: EntityNotFoundException.entitlementNotFound(applicationId, entitlementId) + + /** + * Requests all [Entitlement]s for the [Application] with the given [applicationId]. + */ + public suspend fun getEntitlements( + applicationId: Snowflake, + skuId: Snowflake, + limit: Int? = null, + userId: Snowflake? = null, + guildId: Snowflake? = null + ): Flow + } diff --git a/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt index 73e532554b93..7297f7f51b22 100644 --- a/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt @@ -277,6 +277,17 @@ private class FallbackEntitySupplier(val first: EntitySupplier, val second: Enti override suspend fun getAutoModerationRuleOrNull(guildId: Snowflake, ruleId: Snowflake): AutoModerationRule? = first.getAutoModerationRuleOrNull(guildId, ruleId) ?: second.getAutoModerationRuleOrNull(guildId, ruleId) + override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? = + first.getEntitlementOrNull(applicationId, entitlementId) ?: second.getEntitlementOrNull(applicationId, entitlementId) + + override suspend fun getEntitlements( + applicationId: Snowflake, + skuId: Snowflake, + limit: Int?, + userId: Snowflake?, + guildId: Snowflake? + ): Flow = first.getEntitlements(applicationId, skuId, limit, userId, guildId) + .switchIfEmpty(second.getEntitlements(applicationId, skuId, limit, userId, guildId)) override fun toString(): String = "FallbackEntitySupplier(first=$first, second=$second)" } diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index 479e6aaf93ad..7a9ec3844654 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -18,10 +18,7 @@ import dev.kord.core.entity.channel.thread.ThreadMember import dev.kord.core.entity.interaction.followup.FollowupMessage import dev.kord.core.exception.EntityNotFoundException import dev.kord.rest.builder.auditlog.AuditLogGetRequestBuilder -import dev.kord.rest.json.request.AuditLogGetRequest -import dev.kord.rest.json.request.GuildScheduledEventUsersResponse -import dev.kord.rest.json.request.ListThreadsBySnowflakeRequest -import dev.kord.rest.json.request.ListThreadsByTimestampRequest +import dev.kord.rest.json.request.* import dev.kord.rest.request.RestRequestException import dev.kord.rest.route.Position import dev.kord.rest.service.RestClient @@ -64,6 +61,10 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { // topics private inline val application get() = kord.rest.application + // monetization + private inline val entitlements get() = kord.rest.entitlement + private inline val skus get() = kord.rest.skus + // max batchSize/limit: see https://discord.com/developers/docs/resources/user#get-current-user-guilds override val guilds: Flow @@ -647,6 +648,36 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { GuildApplicationCommand(data, interaction) } + override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? = catchNotFound { + val response = entitlements.getEntitlement(applicationId, entitlementId) + val data = EntitlementData.from(response) + Entitlement(data, kord) + } + + override suspend fun getEntitlements( + applicationId: Snowflake, + skuId: Snowflake, + limit: Int?, + userId: Snowflake?, + guildId: Snowflake? + ): Flow = limitedPagination(limit, maxBatchSize = 100) { batchSize -> + paginateForwards(batchSize, idSelector = { it.id }) { position -> + entitlements.getEntitlements( + applicationId = applicationId, + position = position, + limit = batchSize, + skuIDs = listOf(skuId), + userId = userId, + guildId = guildId + ) + }.map { + val data = EntitlementData.from(it) + Entitlement(data, kord) + } + } + + public suspend fun getSKUs(applicationId: Snowflake): List = + skus.getSkus(applicationId).map { SKU(SkuData.from(it), kord) } override fun toString(): String = "RestEntitySupplier(rest=${kord.rest})" } diff --git a/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt index 0c53ee6adad4..850679937145 100644 --- a/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt @@ -312,6 +312,18 @@ public class StoreEntitySupplier( } } + override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? { + return storeAndReturn(supplier.getEntitlementOrNull(applicationId, entitlementId)) { it.data } + } + + override suspend fun getEntitlements( + applicationId: Snowflake, + skuId: Snowflake, + limit: Int?, + userId: Snowflake?, + guildId: Snowflake? + ): Flow = storeOnEach(supplier.getEntitlements(applicationId, skuId, limit, userId, guildId)) { it.data } + private suspend inline fun storeAndReturn(value: T?, transform: (T) -> R): T? { if (value == null) return null cache.put(transform(value)) diff --git a/gateway/api/gateway.api b/gateway/api/gateway.api index a1353511dfd8..b4bd79e85959 100644 --- a/gateway/api/gateway.api +++ b/gateway/api/gateway.api @@ -581,6 +581,93 @@ public abstract class dev/kord/gateway/DispatchEvent : dev/kord/gateway/Event { public abstract fun getSequence ()Ljava/lang/Integer; } +public final class dev/kord/gateway/EntitlementCreate : dev/kord/gateway/DispatchEvent { + public static final field Companion Ldev/kord/gateway/EntitlementCreate$Companion; + public fun (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)V + public final fun component1 ()Ldev/kord/common/entity/DiscordEntitlement; + public final fun component2 ()Ljava/lang/Integer; + public final fun copy (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)Ldev/kord/gateway/EntitlementCreate; + public static synthetic fun copy$default (Ldev/kord/gateway/EntitlementCreate;Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;ILjava/lang/Object;)Ldev/kord/gateway/EntitlementCreate; + public fun equals (Ljava/lang/Object;)Z + public final fun getEntitlement ()Ldev/kord/common/entity/DiscordEntitlement; + public fun getSequence ()Ljava/lang/Integer; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/gateway/EntitlementCreate$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/gateway/EntitlementCreate$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/gateway/EntitlementCreate; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/gateway/EntitlementCreate;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/gateway/EntitlementCreate$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/gateway/EntitlementDelete : dev/kord/gateway/DispatchEvent { + public static final field Companion Ldev/kord/gateway/EntitlementDelete$Companion; + public fun (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)V + public final fun component1 ()Ldev/kord/common/entity/DiscordEntitlement; + public final fun component2 ()Ljava/lang/Integer; + public final fun copy (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)Ldev/kord/gateway/EntitlementDelete; + public static synthetic fun copy$default (Ldev/kord/gateway/EntitlementDelete;Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;ILjava/lang/Object;)Ldev/kord/gateway/EntitlementDelete; + public fun equals (Ljava/lang/Object;)Z + public final fun getEntitlement ()Ldev/kord/common/entity/DiscordEntitlement; + public fun getSequence ()Ljava/lang/Integer; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/gateway/EntitlementDelete$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/gateway/EntitlementDelete$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/gateway/EntitlementDelete; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/gateway/EntitlementDelete;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/gateway/EntitlementDelete$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/gateway/EntitlementUpdate : dev/kord/gateway/DispatchEvent { + public static final field Companion Ldev/kord/gateway/EntitlementUpdate$Companion; + public fun (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)V + public final fun component1 ()Ldev/kord/common/entity/DiscordEntitlement; + public final fun component2 ()Ljava/lang/Integer; + public final fun copy (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)Ldev/kord/gateway/EntitlementUpdate; + public static synthetic fun copy$default (Ldev/kord/gateway/EntitlementUpdate;Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;ILjava/lang/Object;)Ldev/kord/gateway/EntitlementUpdate; + public fun equals (Ljava/lang/Object;)Z + public final fun getEntitlement ()Ldev/kord/common/entity/DiscordEntitlement; + public fun getSequence ()Ljava/lang/Integer; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/gateway/EntitlementUpdate$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/gateway/EntitlementUpdate$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/gateway/EntitlementUpdate; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/gateway/EntitlementUpdate;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/gateway/EntitlementUpdate$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + public abstract class dev/kord/gateway/Event { } diff --git a/rest/api/rest.api b/rest/api/rest.api index 4864ceb4ebdf..5e67adf0379c 100644 --- a/rest/api/rest.api +++ b/rest/api/rest.api @@ -3604,6 +3604,31 @@ public final class dev/kord/rest/json/request/EmojiModifyRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/rest/json/request/EntitlementsListRequest { + public fun ()V + public fun (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Ldev/kord/common/entity/Snowflake; + public final fun component4 ()Ldev/kord/common/entity/Snowflake; + public final fun component5 ()Ljava/lang/Integer; + public final fun component6 ()Ldev/kord/common/entity/Snowflake; + public final fun component7 ()Ljava/lang/Boolean; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;)Ldev/kord/rest/json/request/EntitlementsListRequest; + public static synthetic fun copy$default (Ldev/kord/rest/json/request/EntitlementsListRequest;Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILjava/lang/Object;)Ldev/kord/rest/json/request/EntitlementsListRequest; + public fun equals (Ljava/lang/Object;)Z + public final fun getAfter ()Ldev/kord/common/entity/Snowflake; + public final fun getBefore ()Ldev/kord/common/entity/Snowflake; + public final fun getExcludeEnded ()Ljava/lang/Boolean; + public final fun getGuildId ()Ldev/kord/common/entity/Snowflake; + public final fun getLimit ()Ljava/lang/Integer; + public final fun getSkuIds ()Ljava/util/List; + public final fun getUserId ()Ldev/kord/common/entity/Snowflake; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + public final class dev/kord/rest/json/request/FollowupMessageCreateRequest { public static final field Companion Ldev/kord/rest/json/request/FollowupMessageCreateRequest$Companion; public fun ()V @@ -5279,6 +5304,37 @@ public final class dev/kord/rest/json/request/StartThreadRequest$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/rest/json/request/TestEntitlementCreateRequest { + public static final field Companion Ldev/kord/rest/json/request/TestEntitlementCreateRequest$Companion; + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementOwnerType;)V + public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component2 ()Ldev/kord/common/entity/Snowflake; + public final fun component3 ()Ldev/kord/common/entity/EntitlementOwnerType; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementOwnerType;)Ldev/kord/rest/json/request/TestEntitlementCreateRequest; + public static synthetic fun copy$default (Ldev/kord/rest/json/request/TestEntitlementCreateRequest;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementOwnerType;ILjava/lang/Object;)Ldev/kord/rest/json/request/TestEntitlementCreateRequest; + public fun equals (Ljava/lang/Object;)Z + public final fun getOwnerId ()Ldev/kord/common/entity/Snowflake; + public final fun getOwnerType ()Ldev/kord/common/entity/EntitlementOwnerType; + public final fun getSkuId ()Ldev/kord/common/entity/Snowflake; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/rest/json/request/TestEntitlementCreateRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/rest/json/request/TestEntitlementCreateRequest$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/rest/json/request/TestEntitlementCreateRequest; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/rest/json/request/TestEntitlementCreateRequest;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/rest/json/request/TestEntitlementCreateRequest$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + public final class dev/kord/rest/json/request/UserAddDMRequest { public static final field Companion Ldev/kord/rest/json/request/UserAddDMRequest$Companion; public fun (Ljava/lang/String;Ljava/lang/String;)V @@ -6486,6 +6542,18 @@ public final class dev/kord/rest/route/Route$EmojiId : dev/kord/rest/route/Route public static final field INSTANCE Ldev/kord/rest/route/Route$EmojiId; } +public final class dev/kord/rest/route/Route$EntitlementGet : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementGet; +} + +public final class dev/kord/rest/route/Route$EntitlementId : dev/kord/rest/route/Route$Key { + public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementId; +} + +public final class dev/kord/rest/route/Route$EntitlementsGet : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementsGet; +} + public final class dev/kord/rest/route/Route$ExecuteGithubWebhookPost : dev/kord/rest/route/Route { public static final field INSTANCE Ldev/kord/rest/route/Route$ExecuteGithubWebhookPost; } @@ -7010,6 +7078,10 @@ public final class dev/kord/rest/route/Route$SelfVoiceStatePatch : dev/kord/rest public static final field INSTANCE Ldev/kord/rest/route/Route$SelfVoiceStatePatch; } +public final class dev/kord/rest/route/Route$SkusGet : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$SkusGet; +} + public final class dev/kord/rest/route/Route$StageInstanceDelete : dev/kord/rest/route/Route { public static final field INSTANCE Ldev/kord/rest/route/Route$StageInstanceDelete; } @@ -7062,6 +7134,14 @@ public final class dev/kord/rest/route/Route$TemplateSyncPut : dev/kord/rest/rou public static final field INSTANCE Ldev/kord/rest/route/Route$TemplateSyncPut; } +public final class dev/kord/rest/route/Route$TestEntitlementDelete : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$TestEntitlementDelete; +} + +public final class dev/kord/rest/route/Route$TestEntitlementPost : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$TestEntitlementPost; +} + public final class dev/kord/rest/route/Route$ThreadMembersGet : dev/kord/rest/route/Route { public static final field INSTANCE Ldev/kord/rest/route/Route$ThreadMembersGet; } @@ -7255,6 +7335,15 @@ public final class dev/kord/rest/service/EmojiService : dev/kord/rest/service/Re public final fun modifyEmoji (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } +public final class dev/kord/rest/service/EntitlementService : dev/kord/rest/service/RestService { + public fun (Ldev/kord/rest/request/RequestHandler;)V + public final fun createTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/TestEntitlementCreateRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun deleteTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/route/Position;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ljava/lang/Boolean;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun getEntitlements$default (Ldev/kord/rest/service/EntitlementService;Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/route/Position;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ljava/lang/Boolean;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +} + public final class dev/kord/rest/service/GuildService : dev/kord/rest/service/RestService { public fun (Ldev/kord/rest/request/RequestHandler;)V public final fun addGuildBan (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -7444,9 +7533,11 @@ public final class dev/kord/rest/service/RestClient : dev/kord/rest/service/Rest public final fun getAutoModeration ()Ldev/kord/rest/service/AutoModerationService; public final fun getChannel ()Ldev/kord/rest/service/ChannelService; public final fun getEmoji ()Ldev/kord/rest/service/EmojiService; + public final fun getEntitlement ()Ldev/kord/rest/service/EntitlementService; public final fun getGuild ()Ldev/kord/rest/service/GuildService; public final fun getInteraction ()Ldev/kord/rest/service/InteractionService; public final fun getInvite ()Ldev/kord/rest/service/InviteService; + public final fun getSkus ()Ldev/kord/rest/service/SkuService; public final fun getStageInstance ()Ldev/kord/rest/service/StageInstanceService; public final fun getSticker ()Ldev/kord/rest/service/StickerService; public final fun getTemplate ()Ldev/kord/rest/service/TemplateService; @@ -7467,6 +7558,11 @@ public abstract class dev/kord/rest/service/RestService { public final fun getRequestHandler ()Ldev/kord/rest/request/RequestHandler; } +public final class dev/kord/rest/service/SkuService : dev/kord/rest/service/RestService { + public fun (Ldev/kord/rest/request/RequestHandler;)V + public final fun getSkus (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public final class dev/kord/rest/service/StageInstanceService : dev/kord/rest/service/RestService { public fun (Ldev/kord/rest/request/RequestHandler;)V public final fun createStageInstance (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt index 90812bf7a8ff..40059b1f1ebb 100644 --- a/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt +++ b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt @@ -18,7 +18,7 @@ public data class EntitlementsListRequest( @Serializable public data class TestEntitlementCreateRequest( @SerialName("sku_id") - val skuId: String, + val skuId: Snowflake, @SerialName("owner_id") val ownerId: Snowflake, @SerialName("owner_type") diff --git a/rest/src/commonMain/kotlin/route/Route.kt b/rest/src/commonMain/kotlin/route/Route.kt index 5cc1ec020caf..0a7343b39ae5 100644 --- a/rest/src/commonMain/kotlin/route/Route.kt +++ b/rest/src/commonMain/kotlin/route/Route.kt @@ -10,6 +10,7 @@ import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.InternalSerializationApi import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.builtins.nullable import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.StructureKind import kotlinx.serialization.descriptors.buildSerialDescriptor @@ -750,6 +751,13 @@ public sealed class Route( ListSerializer(DiscordEntitlement.serializer()) ) + public object EntitlementGet : + Route( + HttpMethod.Get, + "/applications/$ApplicationId/entitlements/$EntitlementId", + DiscordEntitlement.serializer() + ) + public object TestEntitlementPost : Route( HttpMethod.Post, diff --git a/rest/src/commonMain/kotlin/service/EntitlementService.kt b/rest/src/commonMain/kotlin/service/EntitlementService.kt index 23cef358d58f..d9940de7b41b 100644 --- a/rest/src/commonMain/kotlin/service/EntitlementService.kt +++ b/rest/src/commonMain/kotlin/service/EntitlementService.kt @@ -3,25 +3,39 @@ package dev.kord.rest.service import dev.kord.common.entity.DiscordEntitlement import dev.kord.common.entity.Snowflake import dev.kord.rest.json.request.TestEntitlementCreateRequest -import dev.kord.rest.json.request.EntitlementsListRequest import dev.kord.rest.request.RequestHandler +import dev.kord.rest.route.Position import dev.kord.rest.route.Route public class EntitlementService(handler: RequestHandler) : RestService(handler) { public suspend fun getEntitlements( applicationId: Snowflake, - request: EntitlementsListRequest, + position: Position? = null, + limit: Int? = null, + guildId: Snowflake? = null, + userId: Snowflake? = null, + skuIDs: List? = null, + excludeEnded: Boolean? = null, ): List = call(Route.EntitlementsGet) { keys[Route.ApplicationId] = applicationId - request.userId?.let { parameter("user_id", it) } - request.skuIds.joinToString(",").ifBlank { null } + userId?.let { parameter("user_id", it) } + skuIDs + ?.joinToString(",") + ?.ifBlank { null } ?.let { parameter("sku_ids", it) } - request.before?.let { parameter("before", it) } - request.after?.let { parameter("after", it) } - request.limit?.let { parameter("limit", it) } - request.guildId?.let { parameter("guild_id", it) } - request.excludeEnded?.let { parameter("exclude_ended", it) } + limit?.let { parameter("limit", it) } + guildId?.let { parameter("guild_id", it) } + excludeEnded?.let { parameter("exclude_ended", it) } + position?.let { parameter(it.key, it.value) } + } + + public suspend fun getEntitlement( + applicationId: Snowflake, + entitlementId: Snowflake, + ): DiscordEntitlement = call(Route.EntitlementGet) { + keys[Route.ApplicationId] = applicationId + keys[Route.EntitlementId] = entitlementId } public suspend fun createTestEntitlement( diff --git a/rest/src/commonMain/kotlin/service/SkuService.kt b/rest/src/commonMain/kotlin/service/SkuService.kt index a19588c6a475..7ff2a25944d4 100644 --- a/rest/src/commonMain/kotlin/service/SkuService.kt +++ b/rest/src/commonMain/kotlin/service/SkuService.kt @@ -1,11 +1,14 @@ package dev.kord.rest.service import dev.kord.common.entity.DiscordSKU +import dev.kord.common.entity.Snowflake import dev.kord.rest.request.RequestHandler import dev.kord.rest.route.Route public class SkuService(handler: RequestHandler) : RestService(handler) { - public suspend fun getSkus(): List = call(Route.SkusGet) + public suspend fun getSkus(applicationId: Snowflake): List = call(Route.SkusGet) { + keys[Route.ApplicationId] = applicationId + } } \ No newline at end of file From 9ed85628a0fafd1930f31c6e75374865d021833d Mon Sep 17 00:00:00 2001 From: viztea Date: Mon, 8 Apr 2024 15:14:00 -0700 Subject: [PATCH 04/30] chore: remove RequiresMonetization annotation --- .../src/commonMain/kotlin/annotation/Annotations.kt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/common/src/commonMain/kotlin/annotation/Annotations.kt b/common/src/commonMain/kotlin/annotation/Annotations.kt index c2f12969848d..c3355c01d84c 100644 --- a/common/src/commonMain/kotlin/annotation/Annotations.kt +++ b/common/src/commonMain/kotlin/annotation/Annotations.kt @@ -55,17 +55,6 @@ public annotation class KordExperimental @Target(CLASS, PROPERTY, FUNCTION, TYPEALIAS) public annotation class KordVoice -/** - * Marks a Kord-related API that requires your application to have monetization enabled. - * - * Not all applications are eligible for monetization, and this annotation marks functionality that requires it. - */ -@MustBeDocumented -@RequiresOptIn(level = WARNING) -@Retention(BINARY) -@Target(CLASS, PROPERTY, FUNCTION, TYPEALIAS) -public annotation class RequiresMonetization - /** * Marks a Kord-related API as potentially unsafe. * From f4eab0165a44d9ee2c378abadaf28437d7e0f3b2 Mon Sep 17 00:00:00 2001 From: viztea Date: Mon, 8 Apr 2024 15:14:20 -0700 Subject: [PATCH 05/30] chore: api dump --- common/api/common.api | 3 --- 1 file changed, 3 deletions(-) diff --git a/common/api/common.api b/common/api/common.api index 043e0146f8fe..ed91cab8857f 100644 --- a/common/api/common.api +++ b/common/api/common.api @@ -185,9 +185,6 @@ public abstract interface annotation class dev/kord/common/annotation/KordUnsafe public abstract interface annotation class dev/kord/common/annotation/KordVoice : java/lang/annotation/Annotation { } -public abstract interface annotation class dev/kord/common/annotation/RequiresMonetization : java/lang/annotation/Annotation { -} - public abstract class dev/kord/common/entity/ActivityFlag { public static final field Companion Ldev/kord/common/entity/ActivityFlag$Companion; public synthetic fun (ILkotlin/jvm/internal/DefaultConstructorMarker;)V From 2d3e2b1b028409589d92a59b06297f560df8afea Mon Sep 17 00:00:00 2001 From: viztea Date: Mon, 8 Apr 2024 15:47:54 -0700 Subject: [PATCH 06/30] feat: respond premium required, getEntitlements, fix model bugs --- .../commonMain/kotlin/entity/Interactions.kt | 2 +- core/api/core.api | 75 ++++++++++++++++++- core/src/commonMain/kotlin/Kord.kt | 13 ++++ .../interaction/ActionInteractionBehavior.kt | 21 +++++- .../kotlin/cache/data/InteractionData.kt | 6 +- .../kotlin/entity/interaction/Interaction.kt | 6 ++ .../kotlin/supplier/CacheEntitySupplier.kt | 4 +- .../kotlin/supplier/EntitySupplier.kt | 2 +- .../kotlin/supplier/FallbackEntitySupplier.kt | 2 +- .../kotlin/supplier/RestEntitySupplier.kt | 4 +- .../kotlin/supplier/StoreEntitySupplier.kt | 2 +- 11 files changed, 122 insertions(+), 15 deletions(-) diff --git a/common/src/commonMain/kotlin/entity/Interactions.kt b/common/src/commonMain/kotlin/entity/Interactions.kt index c89786c4795f..fe2874f2cfa7 100644 --- a/common/src/commonMain/kotlin/entity/Interactions.kt +++ b/common/src/commonMain/kotlin/entity/Interactions.kt @@ -261,7 +261,7 @@ public data class DiscordInteraction( val locale: Optional = Optional.Missing(), @SerialName("guild_locale") val guildLocale: Optional = Optional.Missing(), - val entitlements: Optional = Optional.Missing() + val entitlements: Optional> = Optional.Missing() ) { /** diff --git a/core/api/core.api b/core/api/core.api index 66db29fd478b..8f9d52c13ebc 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -42,6 +42,8 @@ public final class dev/kord/core/Kord : kotlinx/coroutines/CoroutineScope { public final fun getDefaultSupplier ()Ldev/kord/core/supplier/EntitySupplier; public final fun getEntitlement (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getEntitlements (Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun getEntitlements$default (Ldev/kord/core/Kord;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun getEvents ()Lkotlinx/coroutines/flow/SharedFlow; public final fun getGateway ()Ldev/kord/core/gateway/MasterGateway; public final fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -1744,6 +1746,7 @@ public abstract interface class dev/kord/core/behavior/interaction/ActionInterac public abstract fun deferPublicResponseUnsafe (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getOriginalInteractionResponse (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getOriginalInteractionResponseOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; } @@ -1758,6 +1761,7 @@ public final class dev/kord/core/behavior/interaction/ActionInteractionBehavior$ public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; } @@ -1783,6 +1787,7 @@ public final class dev/kord/core/behavior/interaction/ApplicationCommandInteract public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; } @@ -1823,6 +1828,7 @@ public final class dev/kord/core/behavior/interaction/ComponentInteractionBehavi public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; } @@ -1914,6 +1920,7 @@ public final class dev/kord/core/behavior/interaction/ModalParentInteractionBeha public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/behavior/interaction/ModalParentInteractionBehaviorKt { @@ -3972,8 +3979,8 @@ public final class dev/kord/core/cache/data/IntegrationsAccountData$Companion { public final class dev/kord/core/cache/data/InteractionData { public static final field Companion Ldev/kord/core/cache/data/InteractionData$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component10 ()Ljava/lang/String; public final fun component11 ()Ldev/kord/common/entity/optional/Optional; @@ -3982,6 +3989,7 @@ public final class dev/kord/core/cache/data/InteractionData { public final fun component14 ()Ldev/kord/common/entity/optional/Optional; public final fun component15 ()Ldev/kord/common/entity/optional/Optional; public final fun component16 ()Ldev/kord/common/entity/optional/Optional; + public final fun component17 ()Ldev/kord/common/entity/optional/Optional; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/InteractionType; public final fun component4 ()Ldev/kord/core/cache/data/ApplicationInteractionData; @@ -3990,14 +3998,15 @@ public final class dev/kord/core/cache/data/InteractionData { public final fun component7 ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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/core/cache/data/InteractionData; - public static synthetic fun copy$default (Ldev/kord/core/cache/data/InteractionData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/core/cache/data/InteractionData; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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/core/cache/data/InteractionData; + public static synthetic fun copy$default (Ldev/kord/core/cache/data/InteractionData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;ILjava/lang/Object;)Ldev/kord/core/cache/data/InteractionData; public fun equals (Ljava/lang/Object;)Z public final fun getAppPermissions ()Ldev/kord/common/entity/optional/Optional; public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getChannel ()Ldev/kord/common/entity/optional/Optional; public final fun getChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getData ()Ldev/kord/core/cache/data/ApplicationInteractionData; + public final fun getEntitlements ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getGuildLocale ()Ldev/kord/common/entity/optional/Optional; public final fun getId ()Ldev/kord/common/entity/Snowflake; @@ -9243,6 +9252,7 @@ public final class dev/kord/core/entity/interaction/ActionInteraction$DefaultImp public static fun getChannel (Ldev/kord/core/entity/interaction/ActionInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/ActionInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/ActionInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/ActionInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/ActionInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/ActionInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/ActionInteraction;)Ldev/kord/common/Locale; @@ -9251,6 +9261,7 @@ public final class dev/kord/core/entity/interaction/ActionInteraction$DefaultImp public static fun getToken (Ldev/kord/core/entity/interaction/ActionInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ActionInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ActionInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ActionInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ApplicationCommandInteraction : dev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -9273,6 +9284,7 @@ public final class dev/kord/core/entity/interaction/ApplicationCommandInteractio public static fun getChannel (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getInvokedCommandGuildId (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; @@ -9286,6 +9298,7 @@ public final class dev/kord/core/entity/interaction/ApplicationCommandInteractio public static fun getToken (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ApplicationCommandInteractionKt { @@ -9319,6 +9332,7 @@ public final class dev/kord/core/entity/interaction/AutoCompleteInteraction$Defa public static fun getChannelId (Ldev/kord/core/entity/interaction/AutoCompleteInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/AutoCompleteInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getCommand (Ldev/kord/core/entity/interaction/AutoCompleteInteraction;)Ldev/kord/core/entity/interaction/InteractionCommand; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/AutoCompleteInteraction;)Ljava/util/List; public static fun getFocusedOption (Ldev/kord/core/entity/interaction/AutoCompleteInteraction;)Ldev/kord/core/entity/interaction/StringOptionValue; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/AutoCompleteInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/AutoCompleteInteraction;)Ldev/kord/common/entity/Snowflake; @@ -9357,6 +9371,7 @@ public final class dev/kord/core/entity/interaction/ButtonInteraction$DefaultImp public static fun getComponent (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/core/entity/component/ButtonComponent; public static fun getComponentId (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ljava/lang/String; public static fun getComponentType (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/common/entity/ComponentType; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/common/Locale; @@ -9366,6 +9381,7 @@ public final class dev/kord/core/entity/interaction/ButtonInteraction$DefaultImp public static fun getToken (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ButtonInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ButtonInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ChannelOptionValue : dev/kord/core/entity/interaction/ResolvableOptionValue { @@ -9395,6 +9411,7 @@ public final class dev/kord/core/entity/interaction/ChatInputCommandInteraction$ public static fun getChannelId (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getCommand (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/core/entity/interaction/InteractionCommand; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getInvokedCommandGuildId (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/common/entity/Snowflake; @@ -9408,6 +9425,7 @@ public final class dev/kord/core/entity/interaction/ChatInputCommandInteraction$ public static fun getToken (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ComponentInteraction : dev/kord/core/behavior/interaction/ComponentInteractionBehavior, dev/kord/core/behavior/interaction/ModalParentInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -9433,6 +9451,7 @@ public final class dev/kord/core/entity/interaction/ComponentInteraction$Default public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/ComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getComponentId (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ljava/lang/String; public static fun getComponentType (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ldev/kord/common/entity/ComponentType; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ldev/kord/common/Locale; @@ -9442,6 +9461,7 @@ public final class dev/kord/core/entity/interaction/ComponentInteraction$Default public static fun getToken (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ComponentInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ComponentInteractionKt { @@ -9460,6 +9480,7 @@ public final class dev/kord/core/entity/interaction/DataInteraction$DefaultImpls public static fun getChannel (Ldev/kord/core/entity/interaction/DataInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/DataInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/DataInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/DataInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/DataInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/DataInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/DataInteraction;)Ldev/kord/common/Locale; @@ -9483,6 +9504,7 @@ public final class dev/kord/core/entity/interaction/GlobalApplicationCommandInte public static fun getChannel (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getInvokedCommandGuildId (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; @@ -9497,6 +9519,7 @@ public final class dev/kord/core/entity/interaction/GlobalApplicationCommandInte public static fun getType (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/core/entity/User; public static fun getVersion (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction; } @@ -9513,6 +9536,7 @@ public final class dev/kord/core/entity/interaction/GlobalAutoCompleteInteractio public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getCommand ()Ldev/kord/core/entity/interaction/InteractionCommand; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getFocusedOption ()Ldev/kord/core/entity/interaction/StringOptionValue; public fun getGuildLocale ()Ldev/kord/common/Locale; public fun getId ()Ldev/kord/common/entity/Snowflake; @@ -9558,6 +9582,7 @@ public final class dev/kord/core/entity/interaction/GlobalButtonInteraction : de public fun getComponentId ()Ljava/lang/String; public fun getComponentType ()Ldev/kord/common/entity/ComponentType; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuildLocale ()Ldev/kord/common/Locale; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getKord ()Ldev/kord/core/Kord; @@ -9571,6 +9596,7 @@ public final class dev/kord/core/entity/interaction/GlobalButtonInteraction : de public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9603,6 +9629,7 @@ public final class dev/kord/core/entity/interaction/GlobalChatInputCommandIntera public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getCommand ()Ldev/kord/core/entity/interaction/InteractionCommand; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuildLocale ()Ldev/kord/common/Locale; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getInvokedCommandGuildId ()Ldev/kord/common/entity/Snowflake; @@ -9620,6 +9647,7 @@ public final class dev/kord/core/entity/interaction/GlobalChatInputCommandIntera public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9655,6 +9683,7 @@ public final class dev/kord/core/entity/interaction/GlobalComponentInteraction$D public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getComponentId (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ljava/lang/String; public static fun getComponentType (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/common/entity/ComponentType; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/common/Locale; @@ -9665,6 +9694,7 @@ public final class dev/kord/core/entity/interaction/GlobalComponentInteraction$D public static fun getType (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/core/entity/User; public static fun getVersion (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/GlobalInteraction : dev/kord/core/behavior/interaction/GlobalInteractionBehavior, dev/kord/core/entity/interaction/Interaction { @@ -9679,6 +9709,7 @@ public final class dev/kord/core/entity/interaction/GlobalInteraction$DefaultImp public static fun getChannel (Ldev/kord/core/entity/interaction/GlobalInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/GlobalInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/GlobalInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/GlobalInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/GlobalInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/GlobalInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/GlobalInteraction;)Ldev/kord/common/Locale; @@ -9703,6 +9734,7 @@ public final class dev/kord/core/entity/interaction/GlobalMessageCommandInteract public fun getChannelId ()Ldev/kord/common/entity/Snowflake; public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuildLocale ()Ldev/kord/common/Locale; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getInvokedCommandGuildId ()Ldev/kord/common/entity/Snowflake; @@ -9725,6 +9757,7 @@ public final class dev/kord/core/entity/interaction/GlobalMessageCommandInteract public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9760,6 +9793,7 @@ public final class dev/kord/core/entity/interaction/GlobalModalSubmitInteraction public fun getChannelId ()Ldev/kord/common/entity/Snowflake; public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuildLocale ()Ldev/kord/common/Locale; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getKord ()Ldev/kord/core/Kord; @@ -9775,6 +9809,7 @@ public final class dev/kord/core/entity/interaction/GlobalModalSubmitInteraction public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9809,6 +9844,7 @@ public final class dev/kord/core/entity/interaction/GlobalSelectMenuInteraction public fun getComponentId ()Ljava/lang/String; public fun getComponentType ()Ldev/kord/common/entity/ComponentType; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuildLocale ()Ldev/kord/common/Locale; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getKord ()Ldev/kord/core/Kord; @@ -9824,6 +9860,7 @@ public final class dev/kord/core/entity/interaction/GlobalSelectMenuInteraction public fun getValues ()Ljava/util/List; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9855,6 +9892,7 @@ public final class dev/kord/core/entity/interaction/GlobalUserCommandInteraction public fun getChannelId ()Ldev/kord/common/entity/Snowflake; public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuildLocale ()Ldev/kord/common/Locale; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getInvokedCommandGuildId ()Ldev/kord/common/entity/Snowflake; @@ -9877,6 +9915,7 @@ public final class dev/kord/core/entity/interaction/GlobalUserCommandInteraction public fun getUsers ()Ljava/util/Map; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9931,6 +9970,7 @@ public final class dev/kord/core/entity/interaction/GuildApplicationCommandInter public static fun getChannel (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ljava/util/List; public static fun getGuild (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/core/behavior/GuildBehavior; public static fun getGuild (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getGuildId (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/common/entity/Snowflake; @@ -9950,6 +9990,7 @@ public final class dev/kord/core/entity/interaction/GuildApplicationCommandInter public static fun getType (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/core/entity/Member; public static fun getVersion (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction; } @@ -9968,6 +10009,7 @@ public final class dev/kord/core/entity/interaction/GuildAutoCompleteInteraction public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getCommand ()Ldev/kord/core/entity/interaction/InteractionCommand; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getFocusedOption ()Ldev/kord/core/entity/interaction/StringOptionValue; public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -10021,6 +10063,7 @@ public final class dev/kord/core/entity/interaction/GuildButtonInteraction : dev public fun getComponentId ()Ljava/lang/String; public fun getComponentType ()Ldev/kord/common/entity/ComponentType; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGuildId ()Ldev/kord/common/entity/Snowflake; @@ -10040,6 +10083,7 @@ public final class dev/kord/core/entity/interaction/GuildButtonInteraction : dev public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10074,6 +10118,7 @@ public final class dev/kord/core/entity/interaction/GuildChatInputCommandInterac public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getCommand ()Ldev/kord/core/entity/interaction/InteractionCommand; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGuildId ()Ldev/kord/common/entity/Snowflake; @@ -10097,6 +10142,7 @@ public final class dev/kord/core/entity/interaction/GuildChatInputCommandInterac public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10133,6 +10179,7 @@ public final class dev/kord/core/entity/interaction/GuildComponentInteraction$De public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/GuildComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getComponentId (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ljava/lang/String; public static fun getComponentType (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/common/entity/ComponentType; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ljava/util/List; public static fun getGuild (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/core/behavior/GuildBehavior; public static fun getGuild (Ldev/kord/core/entity/interaction/GuildComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getGuildId (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/common/entity/Snowflake; @@ -10148,6 +10195,7 @@ public final class dev/kord/core/entity/interaction/GuildComponentInteraction$De public static fun getType (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/core/entity/Member; public static fun getVersion (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GuildComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/GuildInteraction : dev/kord/core/behavior/interaction/GuildInteractionBehavior, dev/kord/core/entity/interaction/Interaction { @@ -10166,6 +10214,7 @@ public final class dev/kord/core/entity/interaction/GuildInteraction$DefaultImpl public static fun getChannel (Ldev/kord/core/entity/interaction/GuildInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/GuildInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/GuildInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/GuildInteraction;)Ljava/util/List; public static fun getGuild (Ldev/kord/core/entity/interaction/GuildInteraction;)Ldev/kord/core/behavior/GuildBehavior; public static fun getGuild (Ldev/kord/core/entity/interaction/GuildInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getGuildId (Ldev/kord/core/entity/interaction/GuildInteraction;)Ldev/kord/common/entity/Snowflake; @@ -10197,6 +10246,7 @@ public final class dev/kord/core/entity/interaction/GuildMessageCommandInteracti public fun getChannelId ()Ldev/kord/common/entity/Snowflake; public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGuildId ()Ldev/kord/common/entity/Snowflake; @@ -10225,6 +10275,7 @@ public final class dev/kord/core/entity/interaction/GuildMessageCommandInteracti public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10262,6 +10313,7 @@ public final class dev/kord/core/entity/interaction/GuildModalSubmitInteraction public fun getChannelId ()Ldev/kord/common/entity/Snowflake; public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGuildId ()Ldev/kord/common/entity/Snowflake; @@ -10283,6 +10335,7 @@ public final class dev/kord/core/entity/interaction/GuildModalSubmitInteraction public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10319,6 +10372,7 @@ public final class dev/kord/core/entity/interaction/GuildSelectMenuInteraction : public fun getComponentId ()Ljava/lang/String; public fun getComponentType ()Ldev/kord/common/entity/ComponentType; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGuildId ()Ldev/kord/common/entity/Snowflake; @@ -10340,6 +10394,7 @@ public final class dev/kord/core/entity/interaction/GuildSelectMenuInteraction : public fun getValues ()Ljava/util/List; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10373,6 +10428,7 @@ public final class dev/kord/core/entity/interaction/GuildUserCommandInteraction public fun getChannelId ()Ldev/kord/common/entity/Snowflake; public fun getChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getData ()Ldev/kord/core/cache/data/InteractionData; + public fun getEntitlements ()Ljava/util/List; public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGuildId ()Ldev/kord/common/entity/Snowflake; @@ -10401,6 +10457,7 @@ public final class dev/kord/core/entity/interaction/GuildUserCommandInteraction public fun getUsers ()Ljava/util/Map; public fun getVersion ()I public fun hashCode ()I + public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10430,6 +10487,7 @@ public abstract interface class dev/kord/core/entity/interaction/Interaction : d public abstract fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public abstract fun getChannelId ()Ldev/kord/common/entity/Snowflake; public abstract fun getData ()Ldev/kord/core/cache/data/InteractionData; + public abstract fun getEntitlements ()Ljava/util/List; public abstract fun getGuildLocale ()Ldev/kord/common/Locale; public abstract fun getId ()Ldev/kord/common/entity/Snowflake; public abstract fun getLocale ()Ldev/kord/common/Locale; @@ -10452,6 +10510,7 @@ public final class dev/kord/core/entity/interaction/Interaction$DefaultImpls { public static fun getChannel (Ldev/kord/core/entity/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/Interaction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/Interaction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/Interaction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/Interaction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/Interaction;)Ldev/kord/common/Locale; @@ -10535,6 +10594,7 @@ public final class dev/kord/core/entity/interaction/MessageCommandInteraction$De public static fun getChannel (Ldev/kord/core/entity/interaction/MessageCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/MessageCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getInvokedCommandGuildId (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ldev/kord/common/entity/Snowflake; @@ -10553,6 +10613,7 @@ public final class dev/kord/core/entity/interaction/MessageCommandInteraction$De public static fun getToken (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/MessageCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ModalSubmitInteraction : dev/kord/core/behavior/interaction/ComponentInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -10577,6 +10638,7 @@ public final class dev/kord/core/entity/interaction/ModalSubmitInteraction$Defau public static fun getChannel (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ldev/kord/common/Locale; @@ -10588,6 +10650,7 @@ public final class dev/kord/core/entity/interaction/ModalSubmitInteraction$Defau public static fun getToken (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ModalSubmitInteractionKt { @@ -10683,6 +10746,7 @@ public final class dev/kord/core/entity/interaction/SelectMenuInteraction$Defaul public static fun getComponent (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/core/entity/component/SelectMenuComponent; public static fun getComponentId (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ljava/lang/String; public static fun getComponentType (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/common/entity/ComponentType; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getLocale (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/common/Locale; @@ -10694,6 +10758,7 @@ public final class dev/kord/core/entity/interaction/SelectMenuInteraction$Defaul public static fun getType (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getValues (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ljava/util/List; public static fun getVersion (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/SelectMenuInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/StringOptionValue : dev/kord/core/entity/interaction/OptionValue { @@ -10745,6 +10810,7 @@ public final class dev/kord/core/entity/interaction/UserCommandInteraction$Defau public static fun getChannel (Ldev/kord/core/entity/interaction/UserCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getChannelId (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getChannelOrNull (Ldev/kord/core/entity/interaction/UserCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun getEntitlements (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ljava/util/List; public static fun getGuildLocale (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ldev/kord/common/Locale; public static fun getId (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ldev/kord/common/entity/Snowflake; public static fun getInvokedCommandGuildId (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ldev/kord/common/entity/Snowflake; @@ -10763,6 +10829,7 @@ public final class dev/kord/core/entity/interaction/UserCommandInteraction$Defau public static fun getType (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUsers (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ljava/util/Map; public static fun getVersion (Ldev/kord/core/entity/interaction/UserCommandInteraction;)I + public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/UserCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public class dev/kord/core/entity/interaction/UserOptionValue : dev/kord/core/entity/interaction/ResolvableOptionValue { diff --git a/core/src/commonMain/kotlin/Kord.kt b/core/src/commonMain/kotlin/Kord.kt index 4d9b235b221a..1ab486f621bb 100644 --- a/core/src/commonMain/kotlin/Kord.kt +++ b/core/src/commonMain/kotlin/Kord.kt @@ -379,6 +379,19 @@ public class Kord( */ public suspend fun getSkus(): List = with(EntitySupplyStrategy.rest).getSKUs(selfId) + /** + * Requests to get a list of [Entitlement]s with the given [skuId], [userId], or [guildId]. + * + * @throws [RequestException] if anything went wrong during the request. + */ + public suspend fun getEntitlements( + limit: Int? = null, + skuId: Snowflake? = null, + userId: Snowflake? = null, + guildId: Snowflake? = null, + strategy: EntitySupplyStrategy<*> = resources.defaultStrategy, + ): Flow = strategy.supply(this).getEntitlements(selfId, skuId, limit, userId, guildId) + /** * Requests to get the [Entitlement] with the given [id] * diff --git a/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt b/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt index 7824364035b3..203d02429fd5 100644 --- a/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt +++ b/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt @@ -1,8 +1,10 @@ package dev.kord.core.behavior.interaction import dev.kord.common.annotation.KordUnsafe +import dev.kord.common.entity.InteractionResponseType import dev.kord.common.entity.MessageFlag import dev.kord.common.entity.Snowflake +import dev.kord.common.entity.optional.Optional import dev.kord.core.Kord import dev.kord.core.behavior.interaction.response.* import dev.kord.core.entity.Message @@ -13,6 +15,8 @@ import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import dev.kord.core.supplier.EntitySupplyStrategy.Companion.rest import dev.kord.rest.builder.message.create.InteractionResponseCreateBuilder +import dev.kord.rest.json.request.InteractionApplicationCommandCallbackData +import dev.kord.rest.json.request.InteractionResponseCreateRequest import dev.kord.rest.request.RestRequestException import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -20,6 +24,22 @@ import kotlin.contracts.contract /** The behavior of an [ActionInteraction]. */ public interface ActionInteractionBehavior : InteractionBehavior { + /** + * Responds to the interaction with an ephemeral message. + * + * There will be a message that explains that the [user][Interaction.user] is required to have premium to get access + * to features, there's a button that opens an in-app purchase flow. + * + * @throws RestRequestException if something went wrong during the request. + */ + public suspend fun respondPremiumRequired() { + kord.rest.interaction.createInteractionResponse( + id, + token, + InteractionResponseCreateRequest(InteractionResponseType.PremiumRequired) + ) + } + /** * Acknowledges the interaction with the intent of responding with an [ephemeral][MessageFlag.Ephemeral] message * later by calling [edit][EphemeralMessageInteractionResponseBehavior.edit] on the returned object. @@ -105,7 +125,6 @@ public interface ActionInteractionBehavior : InteractionBehavior { ActionInteractionBehavior(id, channelId, token, applicationId, kord, strategy) } - /** * Responds to the interaction with a public message. * diff --git a/core/src/commonMain/kotlin/cache/data/InteractionData.kt b/core/src/commonMain/kotlin/cache/data/InteractionData.kt index c162309d0236..80a2dc4ccdbb 100644 --- a/core/src/commonMain/kotlin/cache/data/InteractionData.kt +++ b/core/src/commonMain/kotlin/cache/data/InteractionData.kt @@ -28,7 +28,8 @@ public data class InteractionData( val message: Optional = Optional.Missing(), val appPermissions: Optional = Optional.Missing(), val locale: Optional = Optional.Missing(), - val guildLocale: Optional = Optional.Missing() + val guildLocale: Optional = Optional.Missing(), + val entitlements: Optional> = Optional.Missing() ) { public companion object { public fun from(interaction: DiscordInteraction): InteractionData { @@ -52,7 +53,8 @@ public data class InteractionData( }, appPermissions, locale, - guildLocale + guildLocale, + entitlements.mapList { EntitlementData.from(it) } ) } } diff --git a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt index b61dcad51675..225fd0ca71e1 100644 --- a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt +++ b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt @@ -4,9 +4,12 @@ import dev.kord.common.Locale import dev.kord.common.entity.InteractionType import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.OptionalSnowflake +import dev.kord.common.entity.optional.mapList +import dev.kord.common.entity.optional.orEmpty import dev.kord.core.Kord import dev.kord.core.behavior.interaction.InteractionBehavior import dev.kord.core.cache.data.InteractionData +import dev.kord.core.entity.Entitlement import dev.kord.core.entity.User import dev.kord.core.supplier.EntitySupplyStrategy @@ -28,6 +31,9 @@ public sealed interface Interaction : InteractionBehavior { override val token: String get() = data.token + public val entitlements: List + get() = data.entitlements.mapList { Entitlement(it, kord) }.orEmpty() + /** * The type of the interaction. */ diff --git a/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt index 772e9eb381e3..d8da61aa4855 100644 --- a/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt @@ -610,7 +610,7 @@ public class CacheEntitySupplier(private val kord: Kord) : EntitySupplier { override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake, + skuId: Snowflake?, limit: Int?, userId: Snowflake?, guildId: Snowflake? @@ -619,7 +619,7 @@ public class CacheEntitySupplier(private val kord: Kord) : EntitySupplier { return cache .query { idEq(EntitlementData::applicationId, applicationId) - idEq(EntitlementData::skuId, skuId) + skuId?.let { idEq(EntitlementData::skuId, it) } userId?.let { idEq(EntitlementData::userId, it) } guildId?.let { idEq(EntitlementData::guildId, it) } } diff --git a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt index 5c5611a312de..8866cc419e7d 100644 --- a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt @@ -665,7 +665,7 @@ public interface EntitySupplier { */ public suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake, + skuId: Snowflake? = null, limit: Int? = null, userId: Snowflake? = null, guildId: Snowflake? = null diff --git a/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt index 7297f7f51b22..1998efcca90c 100644 --- a/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt @@ -282,7 +282,7 @@ private class FallbackEntitySupplier(val first: EntitySupplier, val second: Enti override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake, + skuId: Snowflake?, limit: Int?, userId: Snowflake?, guildId: Snowflake? diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index 7a9ec3844654..fe5edcfcbba5 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -656,7 +656,7 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake, + skuId: Snowflake?, limit: Int?, userId: Snowflake?, guildId: Snowflake? @@ -666,7 +666,7 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { applicationId = applicationId, position = position, limit = batchSize, - skuIDs = listOf(skuId), + skuIDs = listOfNotNull(skuId), userId = userId, guildId = guildId ) diff --git a/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt index 850679937145..8a10df397b65 100644 --- a/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt @@ -318,7 +318,7 @@ public class StoreEntitySupplier( override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake, + skuId: Snowflake?, limit: Int?, userId: Snowflake?, guildId: Snowflake? From 2f0153d61b47da82147de94f0f4966f8f1fa4040 Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 02:44:08 -0700 Subject: [PATCH 07/30] feat(rest): monetization error codes --- rest/src/commonMain/kotlin/json/JsonErrorCode.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rest/src/commonMain/kotlin/json/JsonErrorCode.kt b/rest/src/commonMain/kotlin/json/JsonErrorCode.kt index c57cacb517e8..297647e32d57 100644 --- a/rest/src/commonMain/kotlin/json/JsonErrorCode.kt +++ b/rest/src/commonMain/kotlin/json/JsonErrorCode.kt @@ -337,6 +337,9 @@ public enum class JsonErrorCode(public val code: Int) { /** A tag is required to create a forum post in this channel. */ TagRequired(40067), + /** An entitlement has already been granted for this resource. */ + ResourceHasEntitlement(40074), + /** Missing access. */ MissingAccess(50001), @@ -447,6 +450,9 @@ public enum class JsonErrorCode(public val code: Int) { /** Invalid Guild. */ InvalidGuild(50055), + /** Invalid Sku. */ + InvalidSku(50057), + /** Invalid request origin. */ InvalidRequestOrigin(50067), From ef283ac1b2bff369f66547069618c6357491e8cd Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 02:45:16 -0700 Subject: [PATCH 08/30] chore: implement requested changes --- common/api/common.api | 86 +++++++++---------- .../kotlin/dev/kord/common/entity/SkuType.kt | 4 +- .../commonMain/kotlin/entity/Entitlements.kt | 14 +-- .../commonMain/kotlin/entity/Interactions.kt | 2 +- common/src/commonMain/kotlin/entity/Skus.kt | 19 ++-- core/api/core.api | 18 ++-- core/src/commonMain/kotlin/Kord.kt | 6 +- .../kotlin/cache/data/InteractionData.kt | 4 +- .../commonMain/kotlin/cache/data/SkuData.kt | 4 +- .../kotlin/entity/{SKU.kt => Sku.kt} | 4 +- .../kotlin/entity/interaction/Interaction.kt | 2 +- .../kotlin/supplier/RestEntitySupplier.kt | 4 +- gateway/api/gateway.api | 48 ----------- gateway/src/commonMain/kotlin/Event.kt | 10 +-- rest/api/rest.api | 2 + rest/src/commonMain/kotlin/route/Route.kt | 5 +- .../commonMain/kotlin/service/SkuService.kt | 4 +- 17 files changed, 92 insertions(+), 144 deletions(-) rename core/src/commonMain/kotlin/entity/{SKU.kt => Sku.kt} (95%) diff --git a/common/api/common.api b/common/api/common.api index ed91cab8857f..90a8589c4875 100644 --- a/common/api/common.api +++ b/common/api/common.api @@ -4342,8 +4342,8 @@ public final class dev/kord/common/entity/DiscordIntegrationsAccount$Companion { public final class dev/kord/common/entity/DiscordInteraction { public static final field Companion Ldev/kord/common/entity/DiscordInteraction$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component10 ()Ljava/lang/String; public final fun component11 ()I @@ -4351,7 +4351,7 @@ public final class dev/kord/common/entity/DiscordInteraction { public final fun component13 ()Ldev/kord/common/entity/optional/Optional; public final fun component14 ()Ldev/kord/common/entity/optional/Optional; public final fun component15 ()Ldev/kord/common/entity/optional/Optional; - public final fun component16 ()Ldev/kord/common/entity/optional/Optional; + public final fun component16 ()Ljava/util/List; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/InteractionType; public final fun component4 ()Ldev/kord/common/entity/InteractionCallbackData; @@ -4360,15 +4360,15 @@ public final class dev/kord/common/entity/DiscordInteraction { public final fun component7 ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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/DiscordInteraction; - public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordInteraction;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordInteraction; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)Ldev/kord/common/entity/DiscordInteraction; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordInteraction;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordInteraction; public fun equals (Ljava/lang/Object;)Z public final fun getAppPermissions ()Ldev/kord/common/entity/optional/Optional; public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getChannel ()Ldev/kord/common/entity/optional/Optional; public final fun getChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getData ()Ldev/kord/common/entity/InteractionCallbackData; - public final fun getEntitlements ()Ldev/kord/common/entity/optional/Optional; + public final fun getEntitlements ()Ljava/util/List; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getGuildLocale ()Ldev/kord/common/entity/optional/Optional; public final fun getId ()Ldev/kord/common/entity/Snowflake; @@ -5507,43 +5507,6 @@ public final class dev/kord/common/entity/DiscordRoleTags$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class dev/kord/common/entity/DiscordSKU { - public static final field Companion Ldev/kord/common/entity/DiscordSKU$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)V - public final fun component1 ()Ldev/kord/common/entity/Snowflake; - public final fun component2 ()Ldev/kord/common/entity/SkuType; - public final fun component3 ()Ldev/kord/common/entity/Snowflake; - public final fun component4 ()Ljava/lang/String; - public final fun component5 ()Ljava/lang/String; - public final fun component6 ()Ldev/kord/common/entity/SkuFlags; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)Ldev/kord/common/entity/DiscordSKU; - public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordSKU;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordSKU; - public fun equals (Ljava/lang/Object;)Z - public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; - public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; - public final fun getId ()Ldev/kord/common/entity/Snowflake; - public final fun getName ()Ljava/lang/String; - public final fun getSlug ()Ljava/lang/String; - public final fun getType ()Ldev/kord/common/entity/SkuType; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class dev/kord/common/entity/DiscordSKU$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Ldev/kord/common/entity/DiscordSKU$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordSKU; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordSKU;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; -} - -public final class dev/kord/common/entity/DiscordSKU$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - public final class dev/kord/common/entity/DiscordSelectDefaultValue { public static final field Companion Ldev/kord/common/entity/DiscordSelectDefaultValue$Companion; public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SelectDefaultValueType;)V @@ -5632,6 +5595,43 @@ public final class dev/kord/common/entity/DiscordShard$NewCompanion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/common/entity/DiscordSku { + public static final field Companion Ldev/kord/common/entity/DiscordSku$Companion; + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)V + public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component2 ()Ldev/kord/common/entity/SkuType; + public final fun component3 ()Ldev/kord/common/entity/Snowflake; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ldev/kord/common/entity/SkuFlags; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)Ldev/kord/common/entity/DiscordSku; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordSku;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordSku; + public fun equals (Ljava/lang/Object;)Z + public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; + public final fun getId ()Ldev/kord/common/entity/Snowflake; + public final fun getName ()Ljava/lang/String; + public final fun getSlug ()Ljava/lang/String; + public final fun getType ()Ldev/kord/common/entity/SkuType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/kord/common/entity/DiscordSku$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/kord/common/entity/DiscordSku$$serializer; + public fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordSku; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordSku;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/kord/common/entity/DiscordSku$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + public final class dev/kord/common/entity/DiscordStageInstance { public static final field Companion Ldev/kord/common/entity/DiscordStageInstance$Companion; public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/StageInstancePrivacyLevel;ZLdev/kord/common/entity/Snowflake;)V diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt index 83f7f3290d7f..c42698943d2e 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt @@ -42,12 +42,12 @@ public sealed class SkuType( ) : SkuType(value) /** - * Represents a recurring subscription + * Represents a recurring subscription. */ public object Subscription : SkuType(5) /** - * System-generated group for each [Subscription] SKU created + * System-generated group for each [Subscription] SKU created. */ public object SubscriptionGroup : SkuType(6) diff --git a/common/src/commonMain/kotlin/entity/Entitlements.kt b/common/src/commonMain/kotlin/entity/Entitlements.kt index ff10992b0b83..28d97348c42e 100644 --- a/common/src/commonMain/kotlin/entity/Entitlements.kt +++ b/common/src/commonMain/kotlin/entity/Entitlements.kt @@ -1,17 +1,17 @@ @file:Generate( - Generate.EntityType.INT_KORD_ENUM, name = "EntitlementType", + INT_KORD_ENUM, name = "EntitlementType", docUrl = "https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types", entries = [ - Generate.Entry("ApplicationSubscription", intValue = 8, kDoc = "Entitlement was purchased as an app subscription.") + Entry("ApplicationSubscription", intValue = 8, kDoc = "Entitlement was purchased as an app subscription.") ] ) @file:Generate( - Generate.EntityType.INT_KORD_ENUM, name = "EntitlementOwnerType", + INT_KORD_ENUM, name = "EntitlementOwnerType", docUrl = "https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement", entries = [ - Generate.Entry("Guild", intValue = 1, kDoc = "Entitlement is owned by a guild."), - Generate.Entry("User", intValue = 2, kDoc = "Entitlement is owned by a user."), + Entry("Guild", intValue = 1, kDoc = "Entitlement is owned by a guild."), + Entry("User", intValue = 2, kDoc = "Entitlement is owned by a user."), ] ) @@ -20,12 +20,14 @@ package dev.kord.common.entity import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.OptionalSnowflake import dev.kord.ksp.Generate +import dev.kord.ksp.Generate.EntityType.INT_KORD_ENUM +import dev.kord.ksp.Generate.Entry import kotlinx.datetime.Instant import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable /** - * https://discord.com/developers/docs/monetization/entitlements#entitlement-object + * An instance of a [Discord Entitlement](https://discord.com/developers/docs/monetization/entitlements#entitlement-object) */ @Serializable public data class DiscordEntitlement( diff --git a/common/src/commonMain/kotlin/entity/Interactions.kt b/common/src/commonMain/kotlin/entity/Interactions.kt index fe2874f2cfa7..90c7b9f13603 100644 --- a/common/src/commonMain/kotlin/entity/Interactions.kt +++ b/common/src/commonMain/kotlin/entity/Interactions.kt @@ -261,7 +261,7 @@ public data class DiscordInteraction( val locale: Optional = Optional.Missing(), @SerialName("guild_locale") val guildLocale: Optional = Optional.Missing(), - val entitlements: Optional> = Optional.Missing() + val entitlements: List ) { /** diff --git a/common/src/commonMain/kotlin/entity/Skus.kt b/common/src/commonMain/kotlin/entity/Skus.kt index 14d7c1d8b989..7ee80f1a3521 100644 --- a/common/src/commonMain/kotlin/entity/Skus.kt +++ b/common/src/commonMain/kotlin/entity/Skus.kt @@ -2,22 +2,19 @@ Generate.EntityType.INT_KORD_ENUM, name = "SkuType", docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-types", entries = [ - Generate.Entry("Subscription", intValue = 5, - kDoc = "Represents a recurring subscription"), - Generate.Entry("SubscriptionGroup", intValue = 6, - kDoc = "System-generated group for each [Subscription] SKU created") + Entry("Subscription", intValue = 5, kDoc = "Represents a recurring subscription."), + Entry("SubscriptionGroup", intValue = 6, kDoc = "System-generated group for each [Subscription] SKU created.") ] ) @file:Generate( - Generate.EntityType.INT_FLAGS, name = "SkuFlag", + INT_FLAGS, name = "SkuFlag", docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-flags", entries = [ - Generate.Entry("Available", shift = 2, - kDoc = "SKU is available for purchase"), - Generate.Entry("GuildSubscription", shift = 7, + Entry("Available", shift = 2, kDoc = "SKU is available for purchase"), + Entry("GuildSubscription", shift = 7, kDoc = "Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server."), - Generate.Entry("UserSubscription", shift = 8, + Entry("UserSubscription", shift = 8, kDoc = "Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in every server."), ] ) @@ -25,11 +22,13 @@ package dev.kord.common.entity import dev.kord.ksp.Generate +import dev.kord.ksp.Generate.EntityType.INT_FLAGS +import dev.kord.ksp.Generate.Entry import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -public data class DiscordSKU( +public data class DiscordSku( val id: Snowflake, val type: SkuType, @SerialName("application_id") diff --git a/core/api/core.api b/core/api/core.api index 8f9d52c13ebc..afa2861600c1 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -3979,8 +3979,8 @@ public final class dev/kord/core/cache/data/IntegrationsAccountData$Companion { public final class dev/kord/core/cache/data/InteractionData { public static final field Companion Ldev/kord/core/cache/data/InteractionData$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component10 ()Ljava/lang/String; public final fun component11 ()Ldev/kord/common/entity/optional/Optional; @@ -3989,7 +3989,7 @@ public final class dev/kord/core/cache/data/InteractionData { public final fun component14 ()Ldev/kord/common/entity/optional/Optional; public final fun component15 ()Ldev/kord/common/entity/optional/Optional; public final fun component16 ()Ldev/kord/common/entity/optional/Optional; - public final fun component17 ()Ldev/kord/common/entity/optional/Optional; + public final fun component17 ()Ljava/util/List; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/InteractionType; public final fun component4 ()Ldev/kord/core/cache/data/ApplicationInteractionData; @@ -3998,15 +3998,15 @@ public final class dev/kord/core/cache/data/InteractionData { public final fun component7 ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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/core/cache/data/InteractionData; - public static synthetic fun copy$default (Ldev/kord/core/cache/data/InteractionData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;ILjava/lang/Object;)Ldev/kord/core/cache/data/InteractionData; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)Ldev/kord/core/cache/data/InteractionData; + public static synthetic fun copy$default (Ldev/kord/core/cache/data/InteractionData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILjava/lang/Object;)Ldev/kord/core/cache/data/InteractionData; public fun equals (Ljava/lang/Object;)Z public final fun getAppPermissions ()Ldev/kord/common/entity/optional/Optional; public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getChannel ()Ldev/kord/common/entity/optional/Optional; public final fun getChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getData ()Ldev/kord/core/cache/data/ApplicationInteractionData; - public final fun getEntitlements ()Ldev/kord/common/entity/optional/Optional; + public final fun getEntitlements ()Ljava/util/List; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getGuildLocale ()Ldev/kord/common/entity/optional/Optional; public final fun getId ()Ldev/kord/common/entity/Snowflake; @@ -5058,7 +5058,7 @@ public final class dev/kord/core/cache/data/SkuData { } public final class dev/kord/core/cache/data/SkuData$Companion { - public final fun from (Ldev/kord/common/entity/DiscordSKU;)Ldev/kord/core/cache/data/SkuData; + public final fun from (Ldev/kord/common/entity/DiscordSku;)Ldev/kord/core/cache/data/SkuData; } public final class dev/kord/core/cache/data/StageInstanceData { @@ -7061,7 +7061,7 @@ public final class dev/kord/core/entity/RoleTags : dev/kord/core/KordObject, dev public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; } -public final class dev/kord/core/entity/SKU : dev/kord/core/entity/KordEntity, dev/kord/core/entity/Strategizable { +public final class dev/kord/core/entity/Sku : dev/kord/core/entity/KordEntity, dev/kord/core/entity/Strategizable { public fun (Ldev/kord/core/cache/data/SkuData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V public synthetic fun (Ldev/kord/core/cache/data/SkuData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun compareTo (Ldev/kord/core/entity/Entity;)I @@ -7069,7 +7069,7 @@ public final class dev/kord/core/entity/SKU : dev/kord/core/entity/KordEntity, d public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getData ()Ldev/kord/core/cache/data/SkuData; public final fun getEntitlements (Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun getEntitlements$default (Ldev/kord/core/entity/SKU;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public static synthetic fun getEntitlements$default (Ldev/kord/core/entity/Sku;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getKord ()Ldev/kord/core/Kord; diff --git a/core/src/commonMain/kotlin/Kord.kt b/core/src/commonMain/kotlin/Kord.kt index 1ab486f621bb..4373f19e3957 100644 --- a/core/src/commonMain/kotlin/Kord.kt +++ b/core/src/commonMain/kotlin/Kord.kt @@ -20,14 +20,12 @@ import dev.kord.core.entity.* import dev.kord.core.entity.application.* import dev.kord.core.entity.channel.Channel import dev.kord.core.event.Event -import dev.kord.core.event.entitlement.EntitlementCreateEvent import dev.kord.core.exception.EntityNotFoundException import dev.kord.core.exception.KordInitializationException import dev.kord.core.gateway.MasterGateway import dev.kord.core.gateway.handler.GatewayEventInterceptor import dev.kord.core.gateway.start import dev.kord.core.supplier.* -import dev.kord.gateway.EntitlementCreate import dev.kord.gateway.Gateway import dev.kord.gateway.builder.LoginBuilder import dev.kord.gateway.builder.PresenceBuilder @@ -373,11 +371,11 @@ public class Kord( ): Invite? = with(EntitySupplyStrategy.rest).getInviteOrNull(code, withCounts, withExpiration, scheduledEventId) /** - * Requests to get all [SKU]s for this application. + * Requests to get all [Sku]s for this application. * * @throws [RequestException] if anything went wrong during the request. */ - public suspend fun getSkus(): List = with(EntitySupplyStrategy.rest).getSKUs(selfId) + public suspend fun getSkus(): List = with(EntitySupplyStrategy.rest).getSKUs(selfId) /** * Requests to get a list of [Entitlement]s with the given [skuId], [userId], or [guildId]. diff --git a/core/src/commonMain/kotlin/cache/data/InteractionData.kt b/core/src/commonMain/kotlin/cache/data/InteractionData.kt index 80a2dc4ccdbb..a6049f5ea637 100644 --- a/core/src/commonMain/kotlin/cache/data/InteractionData.kt +++ b/core/src/commonMain/kotlin/cache/data/InteractionData.kt @@ -29,7 +29,7 @@ public data class InteractionData( val appPermissions: Optional = Optional.Missing(), val locale: Optional = Optional.Missing(), val guildLocale: Optional = Optional.Missing(), - val entitlements: Optional> = Optional.Missing() + val entitlements: List ) { public companion object { public fun from(interaction: DiscordInteraction): InteractionData { @@ -54,7 +54,7 @@ public data class InteractionData( appPermissions, locale, guildLocale, - entitlements.mapList { EntitlementData.from(it) } + entitlements.map { EntitlementData.from(it) } ) } } diff --git a/core/src/commonMain/kotlin/cache/data/SkuData.kt b/core/src/commonMain/kotlin/cache/data/SkuData.kt index 0ce9f51615d4..4f354e37164c 100644 --- a/core/src/commonMain/kotlin/cache/data/SkuData.kt +++ b/core/src/commonMain/kotlin/cache/data/SkuData.kt @@ -1,6 +1,6 @@ package dev.kord.core.cache.data -import dev.kord.common.entity.DiscordSKU +import dev.kord.common.entity.DiscordSku import dev.kord.common.entity.SkuFlags import dev.kord.common.entity.SkuType import dev.kord.common.entity.Snowflake @@ -14,7 +14,7 @@ public data class SkuData( val flags: SkuFlags, ) { public companion object { - public fun from(entity: DiscordSKU): SkuData = with (entity) { + public fun from(entity: DiscordSku): SkuData = with (entity) { SkuData(id, applicationId, type, name, slug, flags) } } diff --git a/core/src/commonMain/kotlin/entity/SKU.kt b/core/src/commonMain/kotlin/entity/Sku.kt similarity index 95% rename from core/src/commonMain/kotlin/entity/SKU.kt rename to core/src/commonMain/kotlin/entity/Sku.kt index 68429bc5a843..9111e402fb1c 100644 --- a/core/src/commonMain/kotlin/entity/SKU.kt +++ b/core/src/commonMain/kotlin/entity/Sku.kt @@ -10,7 +10,7 @@ import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import kotlinx.coroutines.flow.Flow -public class SKU( +public class Sku( public val data: SkuData, override val kord: Kord, override val supplier: EntitySupplier = kord.defaultSupplier, @@ -49,5 +49,5 @@ public class SKU( guildId: Snowflake? = null, ): Flow = supplier.getEntitlements(applicationId, id, limit, userId, guildId) - override fun withStrategy(strategy: EntitySupplyStrategy<*>): Strategizable = SKU(data, kord, strategy.supply(kord)) + override fun withStrategy(strategy: EntitySupplyStrategy<*>): Strategizable = Sku(data, kord, strategy.supply(kord)) } \ No newline at end of file diff --git a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt index 225fd0ca71e1..090e9d342c5f 100644 --- a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt +++ b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt @@ -32,7 +32,7 @@ public sealed interface Interaction : InteractionBehavior { override val token: String get() = data.token public val entitlements: List - get() = data.entitlements.mapList { Entitlement(it, kord) }.orEmpty() + get() = data.entitlements.map { Entitlement(it, kord) } /** * The type of the interaction. diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index fe5edcfcbba5..3766dc60e21c 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -676,8 +676,8 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { } } - public suspend fun getSKUs(applicationId: Snowflake): List = - skus.getSkus(applicationId).map { SKU(SkuData.from(it), kord) } + public suspend fun getSKUs(applicationId: Snowflake): List = + skus.getSkus(applicationId).map { Sku(SkuData.from(it), kord) } override fun toString(): String = "RestEntitySupplier(rest=${kord.rest})" } diff --git a/gateway/api/gateway.api b/gateway/api/gateway.api index 587428474bf0..4d66d9ebb014 100644 --- a/gateway/api/gateway.api +++ b/gateway/api/gateway.api @@ -582,7 +582,6 @@ public abstract class dev/kord/gateway/DispatchEvent : dev/kord/gateway/Event { } public final class dev/kord/gateway/EntitlementCreate : dev/kord/gateway/DispatchEvent { - public static final field Companion Ldev/kord/gateway/EntitlementCreate$Companion; public fun (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)V public final fun component1 ()Ldev/kord/common/entity/DiscordEntitlement; public final fun component2 ()Ljava/lang/Integer; @@ -595,23 +594,7 @@ public final class dev/kord/gateway/EntitlementCreate : dev/kord/gateway/Dispatc public fun toString ()Ljava/lang/String; } -public final class dev/kord/gateway/EntitlementCreate$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Ldev/kord/gateway/EntitlementCreate$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/gateway/EntitlementCreate; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/gateway/EntitlementCreate;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; -} - -public final class dev/kord/gateway/EntitlementCreate$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - public final class dev/kord/gateway/EntitlementDelete : dev/kord/gateway/DispatchEvent { - public static final field Companion Ldev/kord/gateway/EntitlementDelete$Companion; public fun (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)V public final fun component1 ()Ldev/kord/common/entity/DiscordEntitlement; public final fun component2 ()Ljava/lang/Integer; @@ -624,23 +607,7 @@ public final class dev/kord/gateway/EntitlementDelete : dev/kord/gateway/Dispatc public fun toString ()Ljava/lang/String; } -public final class dev/kord/gateway/EntitlementDelete$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Ldev/kord/gateway/EntitlementDelete$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/gateway/EntitlementDelete; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/gateway/EntitlementDelete;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; -} - -public final class dev/kord/gateway/EntitlementDelete$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - public final class dev/kord/gateway/EntitlementUpdate : dev/kord/gateway/DispatchEvent { - public static final field Companion Ldev/kord/gateway/EntitlementUpdate$Companion; public fun (Ldev/kord/common/entity/DiscordEntitlement;Ljava/lang/Integer;)V public final fun component1 ()Ldev/kord/common/entity/DiscordEntitlement; public final fun component2 ()Ljava/lang/Integer; @@ -653,21 +620,6 @@ public final class dev/kord/gateway/EntitlementUpdate : dev/kord/gateway/Dispatc public fun toString ()Ljava/lang/String; } -public final class dev/kord/gateway/EntitlementUpdate$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Ldev/kord/gateway/EntitlementUpdate$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/gateway/EntitlementUpdate; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/gateway/EntitlementUpdate;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V - public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; -} - -public final class dev/kord/gateway/EntitlementUpdate$Companion { - public final fun serializer ()Lkotlinx/serialization/KSerializer; -} - public abstract class dev/kord/gateway/Event { } diff --git a/gateway/src/commonMain/kotlin/Event.kt b/gateway/src/commonMain/kotlin/Event.kt index 49c814df8531..11c68b1def38 100644 --- a/gateway/src/commonMain/kotlin/Event.kt +++ b/gateway/src/commonMain/kotlin/Event.kt @@ -132,7 +132,9 @@ public sealed class Event { "THREAD_MEMBER_UPDATE" -> ThreadMemberUpdate(decode(DiscordThreadMember.serializer()), sequence) "THREAD_MEMBERS_UPDATE" -> ThreadMembersUpdate(decode(DiscordThreadMembersUpdate.serializer()), sequence) - // Missing: Entitlement Create, Entitlement Update, Entitlement Delete + "ENTITLEMENT_CREATE" -> EntitlementCreate(decode(DiscordEntitlement.serializer()), sequence) + "ENTITLEMENT_UPDATE" -> EntitlementUpdate(decode(DiscordEntitlement.serializer()), sequence) + "ENTITLEMENT_DELETE" -> EntitlementDelete(decode(DiscordEntitlement.serializer()), sequence) "GUILD_CREATE" -> GuildCreate(decode(DiscordGuild.serializer()), sequence) "GUILD_UPDATE" -> GuildUpdate(decode(DiscordGuild.serializer()), sequence) "GUILD_DELETE" -> GuildDelete(decode(DiscordUnavailableGuild.serializer()), sequence) @@ -197,9 +199,6 @@ public sealed class Event { "APPLICATION_COMMAND_DELETE" -> @Suppress("DEPRECATION") ApplicationCommandDelete(decode(DiscordApplicationCommand.serializer()), sequence) - "ENTITLEMENT_CREATE" -> EntitlementCreate(decode(DiscordEntitlement.serializer()), sequence) - "ENTITLEMENT_UPDATE" -> EntitlementUpdate(decode(DiscordEntitlement.serializer()), sequence) - "ENTITLEMENT_DELETE" -> EntitlementDelete(decode(DiscordEntitlement.serializer()), sequence) else -> { jsonLogger.debug { "Unknown gateway event name: $eventName" } UnknownDispatchEvent(eventName, eventData, sequence) @@ -604,11 +603,8 @@ public data class DiscordThreadMembersUpdate( val removedMemberIds: Optional> = Optional.Missing() ) -@Serializable public data class EntitlementCreate(val entitlement: DiscordEntitlement, override val sequence: Int?) : DispatchEvent() -@Serializable public data class EntitlementUpdate(val entitlement: DiscordEntitlement, override val sequence: Int?) : DispatchEvent() -@Serializable public data class EntitlementDelete(val entitlement: DiscordEntitlement, override val sequence: Int?) : DispatchEvent() diff --git a/rest/api/rest.api b/rest/api/rest.api index 85ef412c2de4..73e20be42a8d 100644 --- a/rest/api/rest.api +++ b/rest/api/rest.api @@ -2595,6 +2595,7 @@ public final class dev/kord/rest/json/JsonErrorCode : java/lang/Enum { public static final field InvalidRecipients Ldev/kord/rest/json/JsonErrorCode; public static final field InvalidRequestOrigin Ldev/kord/rest/json/JsonErrorCode; public static final field InvalidRole Ldev/kord/rest/json/JsonErrorCode; + public static final field InvalidSku Ldev/kord/rest/json/JsonErrorCode; public static final field InvalidStickerFrameRate Ldev/kord/rest/json/JsonErrorCode; public static final field InvalidStickerSent Ldev/kord/rest/json/JsonErrorCode; public static final field InvalidThreadNotificationSettings Ldev/kord/rest/json/JsonErrorCode; @@ -2657,6 +2658,7 @@ public final class dev/kord/rest/json/JsonErrorCode : java/lang/Enum { public static final field ReactionBlocked Ldev/kord/rest/json/JsonErrorCode; public static final field RequestEntityTooLarge Ldev/kord/rest/json/JsonErrorCode; public static final field Require2FA Ldev/kord/rest/json/JsonErrorCode; + public static final field ResourceHasEntitlement Ldev/kord/rest/json/JsonErrorCode; public static final field ResourceIsRateLimited Ldev/kord/rest/json/JsonErrorCode; public static final field SendMessagesTemporarilyDisabled Ldev/kord/rest/json/JsonErrorCode; public static final field ServerNeedsMonetizationEnabled Ldev/kord/rest/json/JsonErrorCode; diff --git a/rest/src/commonMain/kotlin/route/Route.kt b/rest/src/commonMain/kotlin/route/Route.kt index 0a7343b39ae5..1fb7ce55780d 100644 --- a/rest/src/commonMain/kotlin/route/Route.kt +++ b/rest/src/commonMain/kotlin/route/Route.kt @@ -10,7 +10,6 @@ import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.InternalSerializationApi import kotlinx.serialization.builtins.ListSerializer -import kotlinx.serialization.builtins.nullable import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.StructureKind import kotlinx.serialization.descriptors.buildSerialDescriptor @@ -778,10 +777,10 @@ public sealed class Route( */ public object SkusGet : - Route>( + Route>( HttpMethod.Get, "/applications/$ApplicationId/skus", - ListSerializer(DiscordSKU.serializer()) + ListSerializer(DiscordSku.serializer()) ) /* diff --git a/rest/src/commonMain/kotlin/service/SkuService.kt b/rest/src/commonMain/kotlin/service/SkuService.kt index 7ff2a25944d4..475c1c4838ee 100644 --- a/rest/src/commonMain/kotlin/service/SkuService.kt +++ b/rest/src/commonMain/kotlin/service/SkuService.kt @@ -1,13 +1,13 @@ package dev.kord.rest.service -import dev.kord.common.entity.DiscordSKU +import dev.kord.common.entity.DiscordSku import dev.kord.common.entity.Snowflake import dev.kord.rest.request.RequestHandler import dev.kord.rest.route.Route public class SkuService(handler: RequestHandler) : RestService(handler) { - public suspend fun getSkus(applicationId: Snowflake): List = call(Route.SkusGet) { + public suspend fun getSkus(applicationId: Snowflake): List = call(Route.SkusGet) { keys[Route.ApplicationId] = applicationId } From eb1fa32614f8e2b92c64750c7d547e2cab3323ba Mon Sep 17 00:00:00 2001 From: viztea <44017640+viztea@users.noreply.github.com> Date: Tue, 9 Apr 2024 02:47:31 -0700 Subject: [PATCH 09/30] fix(common): premium required kdoc Co-authored-by: Luca Kellermann --- common/src/commonMain/kotlin/entity/Interactions.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/src/commonMain/kotlin/entity/Interactions.kt b/common/src/commonMain/kotlin/entity/Interactions.kt index 90c7b9f13603..51343c72af41 100644 --- a/common/src/commonMain/kotlin/entity/Interactions.kt +++ b/common/src/commonMain/kotlin/entity/Interactions.kt @@ -62,7 +62,10 @@ kDoc = "Respond to an autocomplete interaction with suggested choices.", ), Entry("Modal", intValue = 9, kDoc = "Respond to an interaction with a popup modal."), - Entry("PremiumRequired", intValue = 10, kDoc = "Respond to interactions with ") + Entry( + "PremiumRequired", intValue = 10, + kDoc = "Respond to an interaction with an upgrade button, only available for apps with monetization enabled." + ), ], ) From d4d9bef0ff850335d902f0eae24044d39a3721a2 Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 02:48:45 -0700 Subject: [PATCH 10/30] chore: ksp --- .../kotlin/dev/kord/common/entity/InteractionResponseType.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt index 4ebd459d78f2..83c957c159fb 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt @@ -80,7 +80,8 @@ public sealed class InteractionResponseType( public object Modal : InteractionResponseType(9) /** - * Respond to interactions with + * Respond to an interaction with an upgrade button, only available for apps with monetization + * enabled. */ public object PremiumRequired : InteractionResponseType(10) From 14267aa1055ae2c86e5cf45da61802107a86b8e6 Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 02:53:21 -0700 Subject: [PATCH 11/30] fix(core): only match against entitlement id --- .../kotlin/gateway/handler/EntitlementEventHandler.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt index d18516a5b24b..6c2aea81ead0 100644 --- a/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt +++ b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt @@ -49,10 +49,11 @@ internal class EntitlementEventHandler : BaseGatewayEventHandler() { delete: Boolean = false ): Entitlement { val entitlement = Entitlement(EntitlementData.from(entity), kord) - if (delete) kord.cache.remove { - idEq(EntitlementData::id, entitlement.id) - idEq(EntitlementData::userId, entitlement.userId) - } else kord.cache.put(entitlement) + if (delete) { + kord.cache.remove { idEq(EntitlementData::id, entitlement.id) } + } else { + kord.cache.put(entitlement) + } return entitlement } From 29e0a01a753b7ccb91c66a389636256336b825e0 Mon Sep 17 00:00:00 2001 From: viztea <44017640+viztea@users.noreply.github.com> Date: Tue, 9 Apr 2024 18:11:03 -0700 Subject: [PATCH 12/30] chore: apply simple suggestions via github Co-authored-by: Luca Kellermann --- common/src/commonMain/kotlin/entity/Skus.kt | 2 +- rest/src/commonMain/kotlin/json/JsonErrorCode.kt | 2 +- rest/src/commonMain/kotlin/route/Route.kt | 2 ++ rest/src/commonMain/kotlin/service/EntitlementService.kt | 2 +- rest/src/commonMain/kotlin/service/SkuService.kt | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/common/src/commonMain/kotlin/entity/Skus.kt b/common/src/commonMain/kotlin/entity/Skus.kt index 7ee80f1a3521..bb64f27d43f5 100644 --- a/common/src/commonMain/kotlin/entity/Skus.kt +++ b/common/src/commonMain/kotlin/entity/Skus.kt @@ -11,7 +11,7 @@ INT_FLAGS, name = "SkuFlag", docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-flags", entries = [ - Entry("Available", shift = 2, kDoc = "SKU is available for purchase"), + Entry("Available", shift = 2, kDoc = "SKU is available for purchase."), Entry("GuildSubscription", shift = 7, kDoc = "Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server."), Entry("UserSubscription", shift = 8, diff --git a/rest/src/commonMain/kotlin/json/JsonErrorCode.kt b/rest/src/commonMain/kotlin/json/JsonErrorCode.kt index 297647e32d57..fc59a8c55399 100644 --- a/rest/src/commonMain/kotlin/json/JsonErrorCode.kt +++ b/rest/src/commonMain/kotlin/json/JsonErrorCode.kt @@ -450,7 +450,7 @@ public enum class JsonErrorCode(public val code: Int) { /** Invalid Guild. */ InvalidGuild(50055), - /** Invalid Sku. */ + /** Invalid SKU. */ InvalidSku(50057), /** Invalid request origin. */ diff --git a/rest/src/commonMain/kotlin/route/Route.kt b/rest/src/commonMain/kotlin/route/Route.kt index 1fb7ce55780d..90c070df83ee 100644 --- a/rest/src/commonMain/kotlin/route/Route.kt +++ b/rest/src/commonMain/kotlin/route/Route.kt @@ -738,6 +738,7 @@ public sealed class Route( public object CurrentApplicationInfo : Route(HttpMethod.Get, "/oauth2/applications/@me", DiscordApplication.serializer()) + /* * Entitlements: * https://discord.com/developers/docs/monetization/entitlements @@ -771,6 +772,7 @@ public sealed class Route( NoStrategy ) + /* * SKUs: * https://discord.com/developers/docs/monetization/skus diff --git a/rest/src/commonMain/kotlin/service/EntitlementService.kt b/rest/src/commonMain/kotlin/service/EntitlementService.kt index d9940de7b41b..6388f7e421e6 100644 --- a/rest/src/commonMain/kotlin/service/EntitlementService.kt +++ b/rest/src/commonMain/kotlin/service/EntitlementService.kt @@ -7,7 +7,7 @@ import dev.kord.rest.request.RequestHandler import dev.kord.rest.route.Position import dev.kord.rest.route.Route -public class EntitlementService(handler: RequestHandler) : RestService(handler) { +public class EntitlementService(requestHandler: RequestHandler) : RestService(requestHandler) { public suspend fun getEntitlements( applicationId: Snowflake, diff --git a/rest/src/commonMain/kotlin/service/SkuService.kt b/rest/src/commonMain/kotlin/service/SkuService.kt index 475c1c4838ee..2995ad2c8688 100644 --- a/rest/src/commonMain/kotlin/service/SkuService.kt +++ b/rest/src/commonMain/kotlin/service/SkuService.kt @@ -5,7 +5,7 @@ import dev.kord.common.entity.Snowflake import dev.kord.rest.request.RequestHandler import dev.kord.rest.route.Route -public class SkuService(handler: RequestHandler) : RestService(handler) { +public class SkuService(requestHandler: RequestHandler) : RestService(requestHandler) { public suspend fun getSkus(applicationId: Snowflake): List = call(Route.SkusGet) { keys[Route.ApplicationId] = applicationId From 51063c75f16ff1e04e0468946078fb0a484cc09c Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 18:12:47 -0700 Subject: [PATCH 13/30] chore: reorder service properties --- .../commonMain/kotlin/supplier/RestEntitySupplier.kt | 10 +++++----- rest/src/commonMain/kotlin/service/RestClient.kt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index 3766dc60e21c..83510f57f351 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -62,8 +62,8 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { private inline val application get() = kord.rest.application // monetization - private inline val entitlements get() = kord.rest.entitlement - private inline val skus get() = kord.rest.skus + private inline val sku get() = kord.rest.sku + private inline val entitlement get() = kord.rest.entitlement // max batchSize/limit: see https://discord.com/developers/docs/resources/user#get-current-user-guilds @@ -649,7 +649,7 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { } override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? = catchNotFound { - val response = entitlements.getEntitlement(applicationId, entitlementId) + val response = entitlement.getEntitlement(applicationId, entitlementId) val data = EntitlementData.from(response) Entitlement(data, kord) } @@ -662,7 +662,7 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { guildId: Snowflake? ): Flow = limitedPagination(limit, maxBatchSize = 100) { batchSize -> paginateForwards(batchSize, idSelector = { it.id }) { position -> - entitlements.getEntitlements( + entitlement.getEntitlements( applicationId = applicationId, position = position, limit = batchSize, @@ -677,7 +677,7 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { } public suspend fun getSKUs(applicationId: Snowflake): List = - skus.getSkus(applicationId).map { Sku(SkuData.from(it), kord) } + sku.listSkus(applicationId).map { Sku(SkuData.from(it), kord) } override fun toString(): String = "RestEntitySupplier(rest=${kord.rest})" } diff --git a/rest/src/commonMain/kotlin/service/RestClient.kt b/rest/src/commonMain/kotlin/service/RestClient.kt index 2227146a008f..4eb6a9beb508 100644 --- a/rest/src/commonMain/kotlin/service/RestClient.kt +++ b/rest/src/commonMain/kotlin/service/RestClient.kt @@ -36,8 +36,8 @@ public class RestClient(requestHandler: RequestHandler) : RestService(requestHan public val application: ApplicationService = ApplicationService(requestHandler) // monetization + public val sku: SkuService = SkuService(requestHandler) public val entitlement: EntitlementService = EntitlementService(requestHandler) - public val skus: SkuService = SkuService(requestHandler) /** * Sends a request to the given [route]. This function exposes a direct call to the Discord api and allows From 8ddf3f2cc67a66722a5f643316ec1cde796c48cb Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 18:13:23 -0700 Subject: [PATCH 14/30] chore(rest): SkuService#getSkus -> listSkus --- rest/src/commonMain/kotlin/service/SkuService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest/src/commonMain/kotlin/service/SkuService.kt b/rest/src/commonMain/kotlin/service/SkuService.kt index 2995ad2c8688..fc06353ae3a3 100644 --- a/rest/src/commonMain/kotlin/service/SkuService.kt +++ b/rest/src/commonMain/kotlin/service/SkuService.kt @@ -7,7 +7,7 @@ import dev.kord.rest.route.Route public class SkuService(requestHandler: RequestHandler) : RestService(requestHandler) { - public suspend fun getSkus(applicationId: Snowflake): List = call(Route.SkusGet) { + public suspend fun listSkus(applicationId: Snowflake): List = call(Route.SkusGet) { keys[Route.ApplicationId] = applicationId } From c706e2afddd1bf462d70d0be641d0d9b5a601961 Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 18:14:58 -0700 Subject: [PATCH 15/30] chore: import Generate subtypes --- common/src/commonMain/kotlin/entity/Skus.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/src/commonMain/kotlin/entity/Skus.kt b/common/src/commonMain/kotlin/entity/Skus.kt index bb64f27d43f5..87b1374bf4c9 100644 --- a/common/src/commonMain/kotlin/entity/Skus.kt +++ b/common/src/commonMain/kotlin/entity/Skus.kt @@ -1,5 +1,5 @@ @file:Generate( - Generate.EntityType.INT_KORD_ENUM, name = "SkuType", + INT_KORD_ENUM, name = "SkuType", docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-types", entries = [ Entry("Subscription", intValue = 5, kDoc = "Represents a recurring subscription."), @@ -23,6 +23,7 @@ package dev.kord.common.entity import dev.kord.ksp.Generate import dev.kord.ksp.Generate.EntityType.INT_FLAGS +import dev.kord.ksp.Generate.EntityType.INT_KORD_ENUM import dev.kord.ksp.Generate.Entry import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable From 0e27632931291e2d9df4bb8ab0bcbb805824dc20 Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 18:21:44 -0700 Subject: [PATCH 16/30] chore: implement requested changes to rest --- .../kotlin/supplier/RestEntitySupplier.kt | 14 +++++---- .../json/request/EntitlementRequests.kt | 4 +-- rest/src/commonMain/kotlin/route/Route.kt | 6 ++-- .../kotlin/service/EntitlementService.kt | 30 +++++++------------ .../commonMain/kotlin/service/SkuService.kt | 2 +- 5 files changed, 25 insertions(+), 31 deletions(-) diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index 83510f57f351..30841a8c4a09 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -662,13 +662,15 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { guildId: Snowflake? ): Flow = limitedPagination(limit, maxBatchSize = 100) { batchSize -> paginateForwards(batchSize, idSelector = { it.id }) { position -> - entitlement.getEntitlements( + entitlement.listEntitlements( applicationId = applicationId, - position = position, - limit = batchSize, - skuIDs = listOfNotNull(skuId), - userId = userId, - guildId = guildId + request = EntitlementsListRequest( + position = position, + limit = batchSize, + skuIds = listOfNotNull(skuId), + userId = userId, + guildId = guildId + ) ) }.map { val data = EntitlementData.from(it) diff --git a/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt index 40059b1f1ebb..2071716c0d0f 100644 --- a/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt +++ b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt @@ -2,14 +2,14 @@ package dev.kord.rest.json.request import dev.kord.common.entity.EntitlementOwnerType import dev.kord.common.entity.Snowflake +import dev.kord.rest.route.Position import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable public data class EntitlementsListRequest( val userId: Snowflake? = null, val skuIds: List = emptyList(), - val before: Snowflake? = null, - val after: Snowflake? = null, + val position: Position? = null, val limit: Int? = null, val guildId: Snowflake? = null, val excludeEnded: Boolean? = null, diff --git a/rest/src/commonMain/kotlin/route/Route.kt b/rest/src/commonMain/kotlin/route/Route.kt index 90c070df83ee..c25e0cf2aa39 100644 --- a/rest/src/commonMain/kotlin/route/Route.kt +++ b/rest/src/commonMain/kotlin/route/Route.kt @@ -744,7 +744,7 @@ public sealed class Route( * https://discord.com/developers/docs/monetization/entitlements */ - public object EntitlementsGet : + public object EntitlementsList : Route>( HttpMethod.Get, "/applications/$ApplicationId/entitlements", @@ -758,7 +758,7 @@ public sealed class Route( DiscordEntitlement.serializer() ) - public object TestEntitlementPost : + public object TestEntitlementCreate : Route( HttpMethod.Post, "/applications/$ApplicationId/entitlements", @@ -778,7 +778,7 @@ public sealed class Route( * https://discord.com/developers/docs/monetization/skus */ - public object SkusGet : + public object SkusList : Route>( HttpMethod.Get, "/applications/$ApplicationId/skus", diff --git a/rest/src/commonMain/kotlin/service/EntitlementService.kt b/rest/src/commonMain/kotlin/service/EntitlementService.kt index 6388f7e421e6..20a1a22c09c8 100644 --- a/rest/src/commonMain/kotlin/service/EntitlementService.kt +++ b/rest/src/commonMain/kotlin/service/EntitlementService.kt @@ -2,32 +2,24 @@ package dev.kord.rest.service import dev.kord.common.entity.DiscordEntitlement import dev.kord.common.entity.Snowflake +import dev.kord.rest.json.request.EntitlementsListRequest import dev.kord.rest.json.request.TestEntitlementCreateRequest import dev.kord.rest.request.RequestHandler -import dev.kord.rest.route.Position import dev.kord.rest.route.Route public class EntitlementService(requestHandler: RequestHandler) : RestService(requestHandler) { - public suspend fun getEntitlements( + public suspend fun listEntitlements( applicationId: Snowflake, - position: Position? = null, - limit: Int? = null, - guildId: Snowflake? = null, - userId: Snowflake? = null, - skuIDs: List? = null, - excludeEnded: Boolean? = null, - ): List = call(Route.EntitlementsGet) { + request: EntitlementsListRequest, + ): List = call(Route.EntitlementsList) { keys[Route.ApplicationId] = applicationId - userId?.let { parameter("user_id", it) } - skuIDs - ?.joinToString(",") - ?.ifBlank { null } - ?.let { parameter("sku_ids", it) } - limit?.let { parameter("limit", it) } - guildId?.let { parameter("guild_id", it) } - excludeEnded?.let { parameter("exclude_ended", it) } - position?.let { parameter(it.key, it.value) } + request.userId?.let { parameter("user_id", it) } + request.skuIds.joinToString(",").ifBlank { null }?.let { parameter("sku_ids", it) } + request.limit?.let { parameter("limit", it) } + request.guildId?.let { parameter("guild_id", it) } + request.excludeEnded?.let { parameter("exclude_ended", it) } + request.position?.let { parameter(it.key, it.value) } } public suspend fun getEntitlement( @@ -41,7 +33,7 @@ public class EntitlementService(requestHandler: RequestHandler) : RestService(re public suspend fun createTestEntitlement( applicationId: Snowflake, request: TestEntitlementCreateRequest, - ): DiscordEntitlement = call(Route.TestEntitlementPost) { + ): DiscordEntitlement = call(Route.TestEntitlementCreate) { keys[Route.ApplicationId] = applicationId body(TestEntitlementCreateRequest.serializer(), request) } diff --git a/rest/src/commonMain/kotlin/service/SkuService.kt b/rest/src/commonMain/kotlin/service/SkuService.kt index fc06353ae3a3..3ea468ddf001 100644 --- a/rest/src/commonMain/kotlin/service/SkuService.kt +++ b/rest/src/commonMain/kotlin/service/SkuService.kt @@ -7,7 +7,7 @@ import dev.kord.rest.route.Route public class SkuService(requestHandler: RequestHandler) : RestService(requestHandler) { - public suspend fun listSkus(applicationId: Snowflake): List = call(Route.SkusGet) { + public suspend fun listSkus(applicationId: Snowflake): List = call(Route.SkusList) { keys[Route.ApplicationId] = applicationId } From a1237443f7611b320d4fd784ca3997238bca06fe Mon Sep 17 00:00:00 2001 From: viztea Date: Tue, 9 Apr 2024 18:27:07 -0700 Subject: [PATCH 17/30] feat(gateway/test): entitlement event deser tests --- .../json/DispatchEventDeserializationTest.kt | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/gateway/src/commonTest/kotlin/json/DispatchEventDeserializationTest.kt b/gateway/src/commonTest/kotlin/json/DispatchEventDeserializationTest.kt index 7da6f99ff40d..aba6b93ca35a 100644 --- a/gateway/src/commonTest/kotlin/json/DispatchEventDeserializationTest.kt +++ b/gateway/src/commonTest/kotlin/json/DispatchEventDeserializationTest.kt @@ -318,12 +318,38 @@ class DispatchEventDeserializationTest { json = """{"id":"0","guild_id":"0","member_count":42}""", ) - /* - * Missing: - * - EntitlementCreate - * - EntitlementUpdate - * - EntitlementDelete - */ + private val entitlement = DiscordEntitlement( + id = Snowflake.min, + applicationId = Snowflake.min, + deleted = false, + skuId = Snowflake.min, + type = EntitlementType.ApplicationSubscription, + ) + private val entitlementJson = """{"id":"0","application_id":"0","sku_id":"0","type":8,"deleted":false}""" + + @Test + fun test_EntitlementCreate_deserialization() = testDispatchEventDeserialization( + eventName = "ENTITLEMENT_CREATE", + eventConstructor = ::EntitlementCreate, + data = entitlement, + json = entitlementJson, + ) + + @Test + fun test_EntitlementUpdate_deserialization() = testDispatchEventDeserialization( + eventName = "ENTITLEMENT_UPDATE", + eventConstructor = ::EntitlementUpdate, + data = entitlement, + json = entitlementJson, + ) + + @Test + fun test_EntitlementDelete_deserialization() = testDispatchEventDeserialization( + eventName = "ENTITLEMENT_DELETE", + eventConstructor = ::EntitlementDelete, + data = entitlement, + json = entitlementJson, + ) @Test fun test_GuildCreate_deserialization() = testDispatchEventDeserialization( @@ -799,4 +825,6 @@ class DispatchEventDeserializationTest { data = applicationCommand, json = applicationCommandJson, ) + + } From cb34d9ffcfca17b131b85fe63e8eeefb22a3321d Mon Sep 17 00:00:00 2001 From: viztea Date: Thu, 11 Apr 2024 10:46:16 -0700 Subject: [PATCH 18/30] chore: requested changes --- .../kotlin/dev/kord/common/entity/SkuFlag.kt | 10 ++-- .../json/interaction/groupsubcommand.json | 11 +++- .../json/interaction/rootcommand.json | 11 +++- .../json/interaction/selectmenu.json | 11 +++- .../slash_command_permissions_update.json | 9 ++++ .../json/interaction/subcommand.json | 11 +++- .../kotlin/behavior/EntitlementBehavior.kt | 2 +- .../interaction/ActionInteractionBehavior.kt | 12 ++--- .../kotlin/cache/DataCacheExtensions.kt | 2 + .../kotlin/cache/data/EntitlementData.kt | 14 ++--- .../commonMain/kotlin/cache/data/GuildData.kt | 3 ++ .../commonMain/kotlin/cache/data/SkuData.kt | 21 -------- .../commonMain/kotlin/entity/Entitlement.kt | 26 ++++++++++ core/src/commonMain/kotlin/entity/Sku.kt | 6 +-- .../kotlin/entity/interaction/Interaction.kt | 7 ++- .../kotlin/event/entitlement/Events.kt | 51 ++++++++++++++----- .../handler/EntitlementEventHandler.kt | 25 ++++----- .../kotlin/supplier/RestEntitySupplier.kt | 2 +- .../interaction/groupsubcommand.json | 11 +++- .../resources/interaction/rootcommand.json | 11 +++- .../resources/interaction/subcommand.json | 11 +++- .../json/request/EntitlementRequests.kt | 2 +- 22 files changed, 192 insertions(+), 77 deletions(-) delete mode 100644 core/src/commonMain/kotlin/cache/data/SkuData.kt diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt index 596ef145759a..b75c6773e159 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt @@ -4,10 +4,6 @@ package dev.kord.common.entity -import kotlin.LazyThreadSafetyMode.PUBLICATION -import kotlin.contracts.InvocationKind.EXACTLY_ONCE -import kotlin.contracts.contract -import kotlin.jvm.JvmName import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.serializer @@ -16,6 +12,10 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder +import kotlin.LazyThreadSafetyMode.PUBLICATION +import kotlin.contracts.InvocationKind.EXACTLY_ONCE +import kotlin.contracts.contract +import kotlin.jvm.JvmName /** * See [SkuFlag]s in the @@ -65,7 +65,7 @@ public sealed class SkuFlag( ) : SkuFlag(shift) /** - * SKU is available for purchase + * SKU is available for purchase. */ public object Available : SkuFlag(2) diff --git a/common/src/commonTest/resources/json/interaction/groupsubcommand.json b/common/src/commonTest/resources/json/interaction/groupsubcommand.json index 1e27103d55d8..d006f7b3defb 100644 --- a/common/src/commonTest/resources/json/interaction/groupsubcommand.json +++ b/common/src/commonTest/resources/json/interaction/groupsubcommand.json @@ -54,5 +54,14 @@ "application_id": "297153970613387264", "app_permissions": "2147483647", "locale": "de", - "guild_locale": "en-US" + "guild_locale": "en-US", + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } + ] } diff --git a/common/src/commonTest/resources/json/interaction/rootcommand.json b/common/src/commonTest/resources/json/interaction/rootcommand.json index 9424de1ccbcc..e4cb9d35f24c 100644 --- a/common/src/commonTest/resources/json/interaction/rootcommand.json +++ b/common/src/commonTest/resources/json/interaction/rootcommand.json @@ -42,5 +42,14 @@ "application_id": "297153970613387264", "app_permissions": "2147483647", "locale": "de", - "guild_locale": "en-US" + "guild_locale": "en-US", + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } + ] } diff --git a/common/src/commonTest/resources/json/interaction/selectmenu.json b/common/src/commonTest/resources/json/interaction/selectmenu.json index de514c5202d0..cdcabba75623 100644 --- a/common/src/commonTest/resources/json/interaction/selectmenu.json +++ b/common/src/commonTest/resources/json/interaction/selectmenu.json @@ -122,5 +122,14 @@ }, "token": "UNIQUE_TOKEN", "type": 3, - "version": 1 + "version": 1, + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } + ] } diff --git a/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json b/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json index 5c151ac5a516..2713dfe195df 100644 --- a/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json +++ b/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json @@ -8,5 +8,14 @@ "type": 1, "permission": true } + ], + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } ] } diff --git a/common/src/commonTest/resources/json/interaction/subcommand.json b/common/src/commonTest/resources/json/interaction/subcommand.json index 7165eb0220ea..9941d0d510eb 100644 --- a/common/src/commonTest/resources/json/interaction/subcommand.json +++ b/common/src/commonTest/resources/json/interaction/subcommand.json @@ -48,5 +48,14 @@ "application_id": "297153970613387264", "app_permissions": "2147483647", "locale": "de", - "guild_locale": "en-US" + "guild_locale": "en-US", + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } + ] } diff --git a/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt b/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt index 9825f8a6b68e..d8e0ace4b336 100644 --- a/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt +++ b/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt @@ -49,7 +49,7 @@ public interface EntitlementBehavior : KordEntity, Strategizable { /** * Requests to delete this entitlement. - * This request fill fail if this is not a test entitlement. + * This request will fail if this is not a test entitlement. * * @throws [RestRequestException] if something went wrong during the request. */ diff --git a/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt b/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt index 203d02429fd5..c42e09e41190 100644 --- a/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt +++ b/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt @@ -4,7 +4,6 @@ import dev.kord.common.annotation.KordUnsafe import dev.kord.common.entity.InteractionResponseType import dev.kord.common.entity.MessageFlag import dev.kord.common.entity.Snowflake -import dev.kord.common.entity.optional.Optional import dev.kord.core.Kord import dev.kord.core.behavior.interaction.response.* import dev.kord.core.entity.Message @@ -15,7 +14,6 @@ import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import dev.kord.core.supplier.EntitySupplyStrategy.Companion.rest import dev.kord.rest.builder.message.create.InteractionResponseCreateBuilder -import dev.kord.rest.json.request.InteractionApplicationCommandCallbackData import dev.kord.rest.json.request.InteractionResponseCreateRequest import dev.kord.rest.request.RestRequestException import kotlin.contracts.InvocationKind @@ -25,14 +23,16 @@ import kotlin.contracts.contract public interface ActionInteractionBehavior : InteractionBehavior { /** - * Responds to the interaction with an ephemeral message. + * Responds to the interaction with an upgrade button, only available for apps with monetization enabled. * - * There will be a message that explains that the [user][Interaction.user] is required to have premium to get access - * to features, there's a button that opens an in-app purchase flow. + * This will create an ephemeral message shown to the [user][Interaction.user] who invoked the interaction, instructing + * them that whatever they tried to do requires the premium benefits of your app. It also contains an "Upgrade" + * button to subscribe via an in-app purchase flow. The response message is static, but will be automatically + * updated with the name of your premium SKU. * * @throws RestRequestException if something went wrong during the request. */ - public suspend fun respondPremiumRequired() { + public suspend fun respondWithPremiumRequired() { kord.rest.interaction.createInteractionResponse( id, token, diff --git a/core/src/commonMain/kotlin/cache/DataCacheExtensions.kt b/core/src/commonMain/kotlin/cache/DataCacheExtensions.kt index e5f7a83a052e..f764668812d4 100644 --- a/core/src/commonMain/kotlin/cache/DataCacheExtensions.kt +++ b/core/src/commonMain/kotlin/cache/DataCacheExtensions.kt @@ -28,6 +28,7 @@ public suspend fun DataCache.registerKordData(): Unit = register( StickerPackData.description, StickerData.description, AutoModerationRuleData.description, + EntitlementData.description, ) /** @@ -50,6 +51,7 @@ internal suspend fun DataCache.removeKordData() { query().remove() query().remove() query().remove() + query().remove() } /** diff --git a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt index 9c600b5b375c..752b8b3ecfbe 100644 --- a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt +++ b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt @@ -5,7 +5,9 @@ import dev.kord.cache.api.data.description import dev.kord.common.entity.DiscordEntitlement import dev.kord.common.entity.EntitlementType import dev.kord.common.entity.Snowflake +import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.OptionalSnowflake +import kotlinx.datetime.Instant import kotlinx.serialization.Serializable @Serializable @@ -15,16 +17,16 @@ public data class EntitlementData( val type: EntitlementType, val skuId: Snowflake, val guildId: OptionalSnowflake = OptionalSnowflake.Missing, - val userId: OptionalSnowflake = OptionalSnowflake.Missing + val userId: OptionalSnowflake = OptionalSnowflake.Missing, + val deleted: Boolean, + val endsAt: Optional, + val startsAt: Optional, ) { public companion object { - public val description: DataDescription = description(EntitlementData::id) { - link(EntitlementData::guildId to GuildData::id) - link(EntitlementData::userId to UserData::id) - } + public val description: DataDescription = description(EntitlementData::id) public fun from(entity: DiscordEntitlement): EntitlementData = with(entity) { - EntitlementData(id, applicationId, type, skuId, guildId, userId) + EntitlementData(id, applicationId, type, skuId, guildId, userId, deleted, endsAt, startsAt) } } } diff --git a/core/src/commonMain/kotlin/cache/data/GuildData.kt b/core/src/commonMain/kotlin/cache/data/GuildData.kt index 36c3beababd5..d34c18baa2d4 100644 --- a/core/src/commonMain/kotlin/cache/data/GuildData.kt +++ b/core/src/commonMain/kotlin/cache/data/GuildData.kt @@ -8,6 +8,7 @@ import dev.kord.common.serialization.DurationInSeconds import kotlinx.datetime.Instant import kotlinx.serialization.Serializable +private val EntitlementData.nullableGuildId get() = guildId.value private val MessageData.nullableGuildId get() = guildId.value private val ChannelData.nullableGuildId get() = guildId.value private val WebhookData.nullableGuildId get() = guildId.value @@ -80,6 +81,8 @@ public data class GuildData( link(GuildData::id to VoiceStateData::guildId) link(GuildData::id to PresenceData::guildId) link(GuildData::id to AutoModerationRuleData::guildId) + link(GuildData::id to EntitlementData::nullableGuildId) + } public fun from(entity: DiscordGuild): GuildData = with(entity) { diff --git a/core/src/commonMain/kotlin/cache/data/SkuData.kt b/core/src/commonMain/kotlin/cache/data/SkuData.kt deleted file mode 100644 index 4f354e37164c..000000000000 --- a/core/src/commonMain/kotlin/cache/data/SkuData.kt +++ /dev/null @@ -1,21 +0,0 @@ -package dev.kord.core.cache.data - -import dev.kord.common.entity.DiscordSku -import dev.kord.common.entity.SkuFlags -import dev.kord.common.entity.SkuType -import dev.kord.common.entity.Snowflake - -public data class SkuData( - val id: Snowflake, - val applicationId: Snowflake, - val type: SkuType, - val name: String, - val slug: String, - val flags: SkuFlags, -) { - public companion object { - public fun from(entity: DiscordSku): SkuData = with (entity) { - SkuData(id, applicationId, type, name, slug, flags) - } - } -} \ No newline at end of file diff --git a/core/src/commonMain/kotlin/entity/Entitlement.kt b/core/src/commonMain/kotlin/entity/Entitlement.kt index 7c6228c7fba2..d991fa967f0f 100644 --- a/core/src/commonMain/kotlin/entity/Entitlement.kt +++ b/core/src/commonMain/kotlin/entity/Entitlement.kt @@ -9,6 +9,7 @@ import dev.kord.core.behavior.UserBehavior import dev.kord.core.cache.data.EntitlementData import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy +import kotlinx.datetime.Instant public class Entitlement( public val data: EntitlementData, @@ -21,6 +22,31 @@ public class Entitlement( override val id: Snowflake get() = data.id + /** + * Whether this entitlement has been deleted. + */ + public val deleted: Boolean + get() = data.deleted + + /** + * Date at which the entitlement is no longer valid + */ + public val startsAt: Instant? + get() = data.startsAt.value + + /** + * Start date at which the entitlement is valid. + */ + public val endsAt: Instant? + get() = data.endsAt.value + + /** + * Whether this entitlement is a test entitlement. + */ + public val isTest: Boolean + // see https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-structure + get() = endsAt == null && startsAt == null + /** * The type of entitlement. */ diff --git a/core/src/commonMain/kotlin/entity/Sku.kt b/core/src/commonMain/kotlin/entity/Sku.kt index 9111e402fb1c..a6328a5b0c6a 100644 --- a/core/src/commonMain/kotlin/entity/Sku.kt +++ b/core/src/commonMain/kotlin/entity/Sku.kt @@ -1,17 +1,17 @@ package dev.kord.core.entity +import dev.kord.common.entity.DiscordSku import dev.kord.common.entity.SkuFlags import dev.kord.common.entity.SkuType -import dev.kord.common.exception.RequestException import dev.kord.common.entity.Snowflake +import dev.kord.common.exception.RequestException import dev.kord.core.Kord -import dev.kord.core.cache.data.SkuData import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import kotlinx.coroutines.flow.Flow public class Sku( - public val data: SkuData, + public val data: DiscordSku, override val kord: Kord, override val supplier: EntitySupplier = kord.defaultSupplier, ) : KordEntity, Strategizable { diff --git a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt index 090e9d342c5f..bcecf424cfda 100644 --- a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt +++ b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt @@ -4,12 +4,11 @@ import dev.kord.common.Locale import dev.kord.common.entity.InteractionType import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.OptionalSnowflake -import dev.kord.common.entity.optional.mapList -import dev.kord.common.entity.optional.orEmpty import dev.kord.core.Kord import dev.kord.core.behavior.interaction.InteractionBehavior import dev.kord.core.cache.data.InteractionData import dev.kord.core.entity.Entitlement +import dev.kord.core.entity.Sku import dev.kord.core.entity.User import dev.kord.core.supplier.EntitySupplyStrategy @@ -31,6 +30,10 @@ public sealed interface Interaction : InteractionBehavior { override val token: String get() = data.token + /** + * For [monetized apps](https://discord.com/developers/docs/monetization/overview), any entitlements for the + * invoking user, representing access to premium [Sku]s. + */ public val entitlements: List get() = data.entitlements.map { Entitlement(it, kord) } diff --git a/core/src/commonMain/kotlin/event/entitlement/Events.kt b/core/src/commonMain/kotlin/event/entitlement/Events.kt index 1619c3118fb4..26d71f041a0a 100644 --- a/core/src/commonMain/kotlin/event/entitlement/Events.kt +++ b/core/src/commonMain/kotlin/event/entitlement/Events.kt @@ -2,44 +2,71 @@ package dev.kord.core.event.entitlement import dev.kord.core.Kord import dev.kord.core.entity.Entitlement +import dev.kord.core.entity.Sku +import dev.kord.core.entity.User import dev.kord.core.event.Event +/** + * An [Event] that is sent when an [Entitlement] is created. + * + * An [Entitlement] is created when a [User] subscribes to a [Sku]. + */ public class EntitlementCreateEvent( public val entitlement: Entitlement, override val shard: Int, - override val customContext: Any? + override val customContext: Any?, + override val kord: Kord = entitlement.kord ) : Event { - override val kord: Kord get() = entitlement.kord - override fun toString(): String { - return "EntitlementCreateEvent(entitlement=$entitlement, shard=$shard)" + return "EntitlementCreateEvent(entitlement=$entitlement, customContext=$customContext, kord=$kord, shard=$shard)" } } +/** + * An [Event] that is sent when an [Entitlement] is updated. + * + * An [Entitlement] is updated when a [User]'s subscription renews for the next billing period. When an [Entitlement] + * for a subscription is renewed, [entitlement.endsAt][Entitlement.endsAt] may have an updated value with the new + * expiration date. + * + * If a [User]'s subscription is cancelled or expires, you will *not* receive an [EntitlementDeleteEvent]. Instead, you + * will simply not receive an [EntitlementUpdateEvent] with a new [entitlement.endsAt][Entitlement.endsAt] date at the + * end of the billing period. + */ public class EntitlementUpdateEvent( public val entitlement: Entitlement, + public val old: Entitlement?, override val shard: Int, - override val customContext: Any? + override val customContext: Any?, + override val kord: Kord = entitlement.kord ) : Event { - override val kord: Kord get() = entitlement.kord - override fun toString(): String { - return "EntitlementUpdateEvent(entitlement=$entitlement, shard=$shard)" + return "EntitlementUpdateEvent(entitlement=$entitlement, customContext=$customContext, kord=$kord, shard=$shard)" } } +/** + * An [Event] that is sent when an [Entitlement] is deleted. + * + * [Entitlement] deletions are infrequent, and occur when: + * - Discord issues a refund for a subscription + * - Discord removes an [Entitlement] from a [User] via internal tooling + * + * If a [User]'s subscription is cancelled or expires, you will *not* receive an [EntitlementDeleteEvent]. Instead, you + * will simply not receive an [EntitlementUpdateEvent] with a new [entitlement.endsAt][Entitlement.endsAt] date at the + * end of the billing period. + */ public class EntitlementDeleteEvent( public val entitlement: Entitlement, override val shard: Int, - override val customContext: Any? + override val customContext: Any?, + override val kord: Kord = entitlement.kord, ) : Event { - override val kord: Kord get() = entitlement.kord - override fun toString(): String { - return "EntitlementDeleteEvent(entitlement=$entitlement, shard=$shard)" + return "EntitlementDeleteEvent(entitlement=$entitlement, customContext=$customContext, kord=$kord, shard=$shard)" } } diff --git a/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt index 6c2aea81ead0..d2cb247002f9 100644 --- a/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt +++ b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt @@ -1,6 +1,7 @@ package dev.kord.core.gateway.handler import dev.kord.cache.api.put +import dev.kord.cache.api.query import dev.kord.cache.api.remove import dev.kord.common.entity.DiscordEntitlement import dev.kord.core.Kord @@ -29,13 +30,16 @@ internal class EntitlementEventHandler : BaseGatewayEventHandler() { ) is EntitlementUpdate -> EntitlementUpdateEvent( - entitlement = handleEntitlement(event.entitlement, kord), + old = kord.cache.query { idEq(EntitlementData::id, event.entitlement.id) } + .singleOrNull() + ?.let { Entitlement(it, kord) }, shard = shard, + entitlement = handleEntitlement(event.entitlement, kord), customContext = context?.get(), ) is EntitlementDelete -> EntitlementDeleteEvent( - entitlement = handleEntitlement(event.entitlement, kord, delete = true), + entitlement = handleDeletedEntitlement(event.entitlement, kord), shard = shard, customContext = context?.get(), ) @@ -43,18 +47,15 @@ internal class EntitlementEventHandler : BaseGatewayEventHandler() { else -> null } - private suspend fun handleEntitlement( - entity: DiscordEntitlement, - kord: Kord, - delete: Boolean = false - ): Entitlement { + private suspend fun handleDeletedEntitlement(entity: DiscordEntitlement, kord: Kord): Entitlement { val entitlement = Entitlement(EntitlementData.from(entity), kord) - if (delete) { - kord.cache.remove { idEq(EntitlementData::id, entitlement.id) } - } else { - kord.cache.put(entitlement) - } + kord.cache.remove{ idEq(EntitlementData::id, entitlement.id) } + return entitlement + } + private suspend fun handleEntitlement(entity: DiscordEntitlement, kord: Kord): Entitlement { + val entitlement = Entitlement(EntitlementData.from(entity), kord) + kord.cache.put(entitlement.data) return entitlement } } \ No newline at end of file diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index 30841a8c4a09..39051783569a 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -679,7 +679,7 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { } public suspend fun getSKUs(applicationId: Snowflake): List = - sku.listSkus(applicationId).map { Sku(SkuData.from(it), kord) } + sku.listSkus(applicationId).map { Sku(it, kord) } override fun toString(): String = "RestEntitySupplier(rest=${kord.rest})" } diff --git a/core/src/jvmTest/resources/interaction/groupsubcommand.json b/core/src/jvmTest/resources/interaction/groupsubcommand.json index bff896333550..8219799fbeb3 100644 --- a/core/src/jvmTest/resources/interaction/groupsubcommand.json +++ b/core/src/jvmTest/resources/interaction/groupsubcommand.json @@ -44,5 +44,14 @@ "name": "testsubcommands", "id": "792107855418490901" }, - "channel_id": "587324906702766226" + "channel_id": "587324906702766226", + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } + ] } \ No newline at end of file diff --git a/core/src/jvmTest/resources/interaction/rootcommand.json b/core/src/jvmTest/resources/interaction/rootcommand.json index 9303a77c003c..f1d37336db41 100644 --- a/core/src/jvmTest/resources/interaction/rootcommand.json +++ b/core/src/jvmTest/resources/interaction/rootcommand.json @@ -34,5 +34,14 @@ "name": "testsubcommands", "id": "792107855418490901" }, - "channel_id": "587324906702766226" + "channel_id": "587324906702766226", + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } + ] } \ No newline at end of file diff --git a/core/src/jvmTest/resources/interaction/subcommand.json b/core/src/jvmTest/resources/interaction/subcommand.json index fd8cc71a8600..583f25fe1e37 100644 --- a/core/src/jvmTest/resources/interaction/subcommand.json +++ b/core/src/jvmTest/resources/interaction/subcommand.json @@ -39,5 +39,14 @@ "name": "testsubcommands", "id": "792107855418490901" }, - "channel_id": "587324906702766226" + "channel_id": "587324906702766226", + "entitlements": [ + { + "id":"0", + "application_id":"0", + "sku_id":"0", + "type":8, + "deleted":false + } + ] } \ No newline at end of file diff --git a/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt index 2071716c0d0f..ca585c2d12a9 100644 --- a/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt +++ b/rest/src/commonMain/kotlin/json/request/EntitlementRequests.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable public data class EntitlementsListRequest( val userId: Snowflake? = null, val skuIds: List = emptyList(), - val position: Position? = null, + val position: Position.BeforeOrAfter? = null, val limit: Int? = null, val guildId: Snowflake? = null, val excludeEnded: Boolean? = null, From da273bc00083454daf2afd5ecd11cec5a9225374 Mon Sep 17 00:00:00 2001 From: viztea Date: Thu, 11 Apr 2024 10:48:34 -0700 Subject: [PATCH 19/30] fix(core/cache): link user data -> entitlement data --- core/src/commonMain/kotlin/cache/data/UserData.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/commonMain/kotlin/cache/data/UserData.kt b/core/src/commonMain/kotlin/cache/data/UserData.kt index 3e5ceb5a1f54..d0cee356f701 100644 --- a/core/src/commonMain/kotlin/cache/data/UserData.kt +++ b/core/src/commonMain/kotlin/cache/data/UserData.kt @@ -10,6 +10,7 @@ import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.OptionalBoolean import kotlinx.serialization.Serializable +private val EntitlementData.nullableUserId get() = userId.value private val WebhookData.nullableUserId get() = userId.value @Serializable @@ -32,6 +33,7 @@ public data class UserData( link(UserData::id to WebhookData::nullableUserId) link(UserData::id to VoiceStateData::userId) link(UserData::id to PresenceData::userId) + link(UserData::id to EntitlementData::nullableUserId) } public fun from(entity: DiscordUser): UserData = with(entity) { From bb4e709f0a016039429d77d368e6ab6e9ae62d32 Mon Sep 17 00:00:00 2001 From: viztea Date: Thu, 11 Apr 2024 10:50:41 -0700 Subject: [PATCH 20/30] fix: api dump + missing optional stuff --- .../kotlin/dev/kord/common/entity/SkuFlag.kt | 8 +- core/api/core.api | 120 ++++++++---------- .../kotlin/cache/data/EntitlementData.kt | 4 +- rest/api/rest.api | 43 +++---- 4 files changed, 80 insertions(+), 95 deletions(-) diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt index b75c6773e159..71b724660eac 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt @@ -4,6 +4,10 @@ package dev.kord.common.entity +import kotlin.LazyThreadSafetyMode.PUBLICATION +import kotlin.contracts.InvocationKind.EXACTLY_ONCE +import kotlin.contracts.contract +import kotlin.jvm.JvmName import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.serializer @@ -12,10 +16,6 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder -import kotlin.LazyThreadSafetyMode.PUBLICATION -import kotlin.contracts.InvocationKind.EXACTLY_ONCE -import kotlin.contracts.contract -import kotlin.jvm.JvmName /** * See [SkuFlag]s in the diff --git a/core/api/core.api b/core/api/core.api index afa2861600c1..55449dae3e3b 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -1746,7 +1746,7 @@ public abstract interface class dev/kord/core/behavior/interaction/ActionInterac public abstract fun deferPublicResponseUnsafe (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getOriginalInteractionResponse (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getOriginalInteractionResponseOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; } @@ -1761,7 +1761,7 @@ public final class dev/kord/core/behavior/interaction/ActionInteractionBehavior$ public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; } @@ -1787,7 +1787,7 @@ public final class dev/kord/core/behavior/interaction/ApplicationCommandInteract public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; } @@ -1828,7 +1828,7 @@ public final class dev/kord/core/behavior/interaction/ComponentInteractionBehavi public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; } @@ -1920,7 +1920,7 @@ public final class dev/kord/core/behavior/interaction/ModalParentInteractionBeha public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondPremiumRequired (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/behavior/interaction/ModalParentInteractionBehaviorKt { @@ -3555,21 +3555,27 @@ public final class dev/kord/core/cache/data/EmojiDataKt { public final class dev/kord/core/cache/data/EntitlementData { public static final field Companion Ldev/kord/core/cache/data/EntitlementData$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/EntitlementType; public final fun component4 ()Ldev/kord/common/entity/Snowflake; public final fun component5 ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun component6 ()Ldev/kord/common/entity/optional/OptionalSnowflake; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;)Ldev/kord/core/cache/data/EntitlementData; - public static synthetic fun copy$default (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ILjava/lang/Object;)Ldev/kord/core/cache/data/EntitlementData; + public final fun component7 ()Z + public final fun component8 ()Ldev/kord/common/entity/optional/Optional; + public final fun component9 ()Ldev/kord/common/entity/optional/Optional; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)Ldev/kord/core/cache/data/EntitlementData; + public static synthetic fun copy$default (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/core/cache/data/EntitlementData; public fun equals (Ljava/lang/Object;)Z public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getDeleted ()Z + public final fun getEndsAt ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getId ()Ldev/kord/common/entity/Snowflake; public final fun getSkuId ()Ldev/kord/common/entity/Snowflake; + public final fun getStartsAt ()Ldev/kord/common/entity/optional/Optional; public final fun getType ()Ldev/kord/common/entity/EntitlementType; public final fun getUserId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public fun hashCode ()I @@ -5035,32 +5041,6 @@ public final class dev/kord/core/cache/data/SelectOptionData$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class dev/kord/core/cache/data/SkuData { - public static final field Companion Ldev/kord/core/cache/data/SkuData$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)V - public final fun component1 ()Ldev/kord/common/entity/Snowflake; - public final fun component2 ()Ldev/kord/common/entity/Snowflake; - public final fun component3 ()Ldev/kord/common/entity/SkuType; - public final fun component4 ()Ljava/lang/String; - public final fun component5 ()Ljava/lang/String; - public final fun component6 ()Ldev/kord/common/entity/SkuFlags; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;)Ldev/kord/core/cache/data/SkuData; - public static synthetic fun copy$default (Ldev/kord/core/cache/data/SkuData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/SkuType;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/SkuFlags;ILjava/lang/Object;)Ldev/kord/core/cache/data/SkuData; - public fun equals (Ljava/lang/Object;)Z - public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; - public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; - public final fun getId ()Ldev/kord/common/entity/Snowflake; - public final fun getName ()Ljava/lang/String; - public final fun getSlug ()Ljava/lang/String; - public final fun getType ()Ldev/kord/common/entity/SkuType; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class dev/kord/core/cache/data/SkuData$Companion { - public final fun from (Ldev/kord/common/entity/DiscordSku;)Ldev/kord/core/cache/data/SkuData; -} - public final class dev/kord/core/cache/data/StageInstanceData { public static final field Companion Ldev/kord/core/cache/data/StageInstanceData$Companion; public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/StageInstancePrivacyLevel;Ldev/kord/common/entity/Snowflake;)V @@ -6142,15 +6122,19 @@ public final class dev/kord/core/entity/Entitlement : dev/kord/core/behavior/Ent public fun fetchEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getData ()Ldev/kord/core/cache/data/EntitlementData; + public final fun getDeleted ()Z + public final fun getEndsAt ()Lkotlinx/datetime/Instant; public final fun getGuild ()Ldev/kord/core/behavior/GuildBehavior; public final fun getGuildId ()Ldev/kord/common/entity/Snowflake; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getKord ()Ldev/kord/core/Kord; public final fun getSkuId ()Ldev/kord/common/entity/Snowflake; + public final fun getStartsAt ()Lkotlinx/datetime/Instant; public fun getSupplier ()Ldev/kord/core/supplier/EntitySupplier; public final fun getType ()Ldev/kord/common/entity/EntitlementType; public final fun getUser ()Ldev/kord/core/behavior/UserBehavior; public final fun getUserId ()Ldev/kord/common/entity/Snowflake; + public final fun isTest ()Z public fun toString ()Ljava/lang/String; public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Entitlement; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; @@ -7062,12 +7046,12 @@ public final class dev/kord/core/entity/RoleTags : dev/kord/core/KordObject, dev } public final class dev/kord/core/entity/Sku : dev/kord/core/entity/KordEntity, dev/kord/core/entity/Strategizable { - public fun (Ldev/kord/core/cache/data/SkuData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V - public synthetic fun (Ldev/kord/core/cache/data/SkuData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/DiscordSku;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V + public synthetic fun (Ldev/kord/common/entity/DiscordSku;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun compareTo (Ldev/kord/core/entity/Entity;)I public synthetic fun compareTo (Ljava/lang/Object;)I public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; - public final fun getData ()Ldev/kord/core/cache/data/SkuData; + public final fun getData ()Ldev/kord/common/entity/DiscordSku; public final fun getEntitlements (Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun getEntitlements$default (Ldev/kord/core/entity/Sku;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; @@ -9261,7 +9245,7 @@ public final class dev/kord/core/entity/interaction/ActionInteraction$DefaultImp public static fun getToken (Ldev/kord/core/entity/interaction/ActionInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ActionInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ActionInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ActionInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ActionInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ApplicationCommandInteraction : dev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -9298,7 +9282,7 @@ public final class dev/kord/core/entity/interaction/ApplicationCommandInteractio public static fun getToken (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ApplicationCommandInteractionKt { @@ -9381,7 +9365,7 @@ public final class dev/kord/core/entity/interaction/ButtonInteraction$DefaultImp public static fun getToken (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ButtonInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ButtonInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ButtonInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ChannelOptionValue : dev/kord/core/entity/interaction/ResolvableOptionValue { @@ -9425,7 +9409,7 @@ public final class dev/kord/core/entity/interaction/ChatInputCommandInteraction$ public static fun getToken (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ComponentInteraction : dev/kord/core/behavior/interaction/ComponentInteractionBehavior, dev/kord/core/behavior/interaction/ModalParentInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -9461,7 +9445,7 @@ public final class dev/kord/core/entity/interaction/ComponentInteraction$Default public static fun getToken (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ComponentInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ComponentInteractionKt { @@ -9519,7 +9503,7 @@ public final class dev/kord/core/entity/interaction/GlobalApplicationCommandInte public static fun getType (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/core/entity/User; public static fun getVersion (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction; } @@ -9596,7 +9580,7 @@ public final class dev/kord/core/entity/interaction/GlobalButtonInteraction : de public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9647,7 +9631,7 @@ public final class dev/kord/core/entity/interaction/GlobalChatInputCommandIntera public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9694,7 +9678,7 @@ public final class dev/kord/core/entity/interaction/GlobalComponentInteraction$D public static fun getType (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/core/entity/User; public static fun getVersion (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/GlobalInteraction : dev/kord/core/behavior/interaction/GlobalInteractionBehavior, dev/kord/core/entity/interaction/Interaction { @@ -9757,7 +9741,7 @@ public final class dev/kord/core/entity/interaction/GlobalMessageCommandInteract public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9809,7 +9793,7 @@ public final class dev/kord/core/entity/interaction/GlobalModalSubmitInteraction public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9860,7 +9844,7 @@ public final class dev/kord/core/entity/interaction/GlobalSelectMenuInteraction public fun getValues ()Ljava/util/List; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9915,7 +9899,7 @@ public final class dev/kord/core/entity/interaction/GlobalUserCommandInteraction public fun getUsers ()Ljava/util/Map; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9990,7 +9974,7 @@ public final class dev/kord/core/entity/interaction/GuildApplicationCommandInter public static fun getType (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/core/entity/Member; public static fun getVersion (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction; } @@ -10083,7 +10067,7 @@ public final class dev/kord/core/entity/interaction/GuildButtonInteraction : dev public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10142,7 +10126,7 @@ public final class dev/kord/core/entity/interaction/GuildChatInputCommandInterac public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10195,7 +10179,7 @@ public final class dev/kord/core/entity/interaction/GuildComponentInteraction$De public static fun getType (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/core/entity/Member; public static fun getVersion (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/GuildComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GuildComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/GuildInteraction : dev/kord/core/behavior/interaction/GuildInteractionBehavior, dev/kord/core/entity/interaction/Interaction { @@ -10275,7 +10259,7 @@ public final class dev/kord/core/entity/interaction/GuildMessageCommandInteracti public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10335,7 +10319,7 @@ public final class dev/kord/core/entity/interaction/GuildModalSubmitInteraction public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10394,7 +10378,7 @@ public final class dev/kord/core/entity/interaction/GuildSelectMenuInteraction : public fun getValues ()Ljava/util/List; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10457,7 +10441,7 @@ public final class dev/kord/core/entity/interaction/GuildUserCommandInteraction public fun getUsers ()Ljava/util/Map; public fun getVersion ()I public fun hashCode ()I - public fun respondPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10613,7 +10597,7 @@ public final class dev/kord/core/entity/interaction/MessageCommandInteraction$De public static fun getToken (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/MessageCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/MessageCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ModalSubmitInteraction : dev/kord/core/behavior/interaction/ComponentInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -10650,7 +10634,7 @@ public final class dev/kord/core/entity/interaction/ModalSubmitInteraction$Defau public static fun getToken (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ModalSubmitInteractionKt { @@ -10758,7 +10742,7 @@ public final class dev/kord/core/entity/interaction/SelectMenuInteraction$Defaul public static fun getType (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getValues (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ljava/util/List; public static fun getVersion (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/SelectMenuInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/SelectMenuInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/StringOptionValue : dev/kord/core/entity/interaction/OptionValue { @@ -10829,7 +10813,7 @@ public final class dev/kord/core/entity/interaction/UserCommandInteraction$Defau public static fun getType (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUsers (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ljava/util/Map; public static fun getVersion (Ldev/kord/core/entity/interaction/UserCommandInteraction;)I - public static fun respondPremiumRequired (Ldev/kord/core/entity/interaction/UserCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/UserCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public class dev/kord/core/entity/interaction/UserOptionValue : dev/kord/core/entity/interaction/ResolvableOptionValue { @@ -11781,7 +11765,8 @@ public final class dev/kord/core/event/channel/thread/UnknownChannelThreadUpdate } public final class dev/kord/core/event/entitlement/EntitlementCreateEvent : dev/kord/core/event/Event { - public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;)V + public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;)V + public synthetic fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun getCustomContext ()Ljava/lang/Object; public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; public fun getGateway ()Ldev/kord/gateway/Gateway; @@ -11791,7 +11776,8 @@ public final class dev/kord/core/event/entitlement/EntitlementCreateEvent : dev/ } public final class dev/kord/core/event/entitlement/EntitlementDeleteEvent : dev/kord/core/event/Event { - public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;)V + public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;)V + public synthetic fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun getCustomContext ()Ljava/lang/Object; public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; public fun getGateway ()Ldev/kord/gateway/Gateway; @@ -11801,11 +11787,13 @@ public final class dev/kord/core/event/entitlement/EntitlementDeleteEvent : dev/ } public final class dev/kord/core/event/entitlement/EntitlementUpdateEvent : dev/kord/core/event/Event { - public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;)V + public fun (Ldev/kord/core/entity/Entitlement;Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;)V + public synthetic fun (Ldev/kord/core/entity/Entitlement;Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun getCustomContext ()Ljava/lang/Object; public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; public fun getGateway ()Ldev/kord/gateway/Gateway; public fun getKord ()Ldev/kord/core/Kord; + public final fun getOld ()Ldev/kord/core/entity/Entitlement; public fun getShard ()I public fun toString ()Ljava/lang/String; } diff --git a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt index 752b8b3ecfbe..3b1557197dbc 100644 --- a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt +++ b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt @@ -19,8 +19,8 @@ public data class EntitlementData( val guildId: OptionalSnowflake = OptionalSnowflake.Missing, val userId: OptionalSnowflake = OptionalSnowflake.Missing, val deleted: Boolean, - val endsAt: Optional, - val startsAt: Optional, + val endsAt: Optional = Optional.Missing(), + val startsAt: Optional = Optional.Missing(), ) { public companion object { public val description: DataDescription = description(EntitlementData::id) diff --git a/rest/api/rest.api b/rest/api/rest.api index 73e20be42a8d..3caaaff49af5 100644 --- a/rest/api/rest.api +++ b/rest/api/rest.api @@ -3619,23 +3619,21 @@ public final class dev/kord/rest/json/request/EmojiModifyRequest$Companion { public final class dev/kord/rest/json/request/EntitlementsListRequest { public fun ()V - public fun (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/rest/route/Position$BeforeOrAfter;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/rest/route/Position$BeforeOrAfter;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component2 ()Ljava/util/List; - public final fun component3 ()Ldev/kord/common/entity/Snowflake; - public final fun component4 ()Ldev/kord/common/entity/Snowflake; - public final fun component5 ()Ljava/lang/Integer; - public final fun component6 ()Ldev/kord/common/entity/Snowflake; - public final fun component7 ()Ljava/lang/Boolean; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;)Ldev/kord/rest/json/request/EntitlementsListRequest; - public static synthetic fun copy$default (Ldev/kord/rest/json/request/EntitlementsListRequest;Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILjava/lang/Object;)Ldev/kord/rest/json/request/EntitlementsListRequest; + public final fun component3 ()Ldev/kord/rest/route/Position$BeforeOrAfter; + public final fun component4 ()Ljava/lang/Integer; + public final fun component5 ()Ldev/kord/common/entity/Snowflake; + public final fun component6 ()Ljava/lang/Boolean; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/rest/route/Position$BeforeOrAfter;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;)Ldev/kord/rest/json/request/EntitlementsListRequest; + public static synthetic fun copy$default (Ldev/kord/rest/json/request/EntitlementsListRequest;Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ldev/kord/rest/route/Position$BeforeOrAfter;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILjava/lang/Object;)Ldev/kord/rest/json/request/EntitlementsListRequest; public fun equals (Ljava/lang/Object;)Z - public final fun getAfter ()Ldev/kord/common/entity/Snowflake; - public final fun getBefore ()Ldev/kord/common/entity/Snowflake; public final fun getExcludeEnded ()Ljava/lang/Boolean; public final fun getGuildId ()Ldev/kord/common/entity/Snowflake; public final fun getLimit ()Ljava/lang/Integer; + public final fun getPosition ()Ldev/kord/rest/route/Position$BeforeOrAfter; public final fun getSkuIds ()Ljava/util/List; public final fun getUserId ()Ldev/kord/common/entity/Snowflake; public fun hashCode ()I @@ -6566,8 +6564,8 @@ public final class dev/kord/rest/route/Route$EntitlementId : dev/kord/rest/route public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementId; } -public final class dev/kord/rest/route/Route$EntitlementsGet : dev/kord/rest/route/Route { - public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementsGet; +public final class dev/kord/rest/route/Route$EntitlementsList : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementsList; } public final class dev/kord/rest/route/Route$ExecuteGithubWebhookPost : dev/kord/rest/route/Route { @@ -7094,8 +7092,8 @@ public final class dev/kord/rest/route/Route$SelfVoiceStatePatch : dev/kord/rest public static final field INSTANCE Ldev/kord/rest/route/Route$SelfVoiceStatePatch; } -public final class dev/kord/rest/route/Route$SkusGet : dev/kord/rest/route/Route { - public static final field INSTANCE Ldev/kord/rest/route/Route$SkusGet; +public final class dev/kord/rest/route/Route$SkusList : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$SkusList; } public final class dev/kord/rest/route/Route$StageInstanceDelete : dev/kord/rest/route/Route { @@ -7150,12 +7148,12 @@ public final class dev/kord/rest/route/Route$TemplateSyncPut : dev/kord/rest/rou public static final field INSTANCE Ldev/kord/rest/route/Route$TemplateSyncPut; } -public final class dev/kord/rest/route/Route$TestEntitlementDelete : dev/kord/rest/route/Route { - public static final field INSTANCE Ldev/kord/rest/route/Route$TestEntitlementDelete; +public final class dev/kord/rest/route/Route$TestEntitlementCreate : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$TestEntitlementCreate; } -public final class dev/kord/rest/route/Route$TestEntitlementPost : dev/kord/rest/route/Route { - public static final field INSTANCE Ldev/kord/rest/route/Route$TestEntitlementPost; +public final class dev/kord/rest/route/Route$TestEntitlementDelete : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$TestEntitlementDelete; } public final class dev/kord/rest/route/Route$ThreadMembersGet : dev/kord/rest/route/Route { @@ -7356,8 +7354,7 @@ public final class dev/kord/rest/service/EntitlementService : dev/kord/rest/serv public final fun createTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/TestEntitlementCreateRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun deleteTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/route/Position;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ljava/lang/Boolean;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun getEntitlements$default (Ldev/kord/rest/service/EntitlementService;Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/route/Position;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/util/List;Ljava/lang/Boolean;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun listEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/EntitlementsListRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/rest/service/GuildService : dev/kord/rest/service/RestService { @@ -7553,7 +7550,7 @@ public final class dev/kord/rest/service/RestClient : dev/kord/rest/service/Rest public final fun getGuild ()Ldev/kord/rest/service/GuildService; public final fun getInteraction ()Ldev/kord/rest/service/InteractionService; public final fun getInvite ()Ldev/kord/rest/service/InviteService; - public final fun getSkus ()Ldev/kord/rest/service/SkuService; + public final fun getSku ()Ldev/kord/rest/service/SkuService; public final fun getStageInstance ()Ldev/kord/rest/service/StageInstanceService; public final fun getSticker ()Ldev/kord/rest/service/StickerService; public final fun getTemplate ()Ldev/kord/rest/service/TemplateService; @@ -7576,7 +7573,7 @@ public abstract class dev/kord/rest/service/RestService { public final class dev/kord/rest/service/SkuService : dev/kord/rest/service/RestService { public fun (Ldev/kord/rest/request/RequestHandler;)V - public final fun getSkus (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun listSkus (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/rest/service/StageInstanceService : dev/kord/rest/service/RestService { From d9046af58c1c96565645ba80942f478f0ddece5f Mon Sep 17 00:00:00 2001 From: viztea Date: Thu, 11 Apr 2024 10:52:06 -0700 Subject: [PATCH 21/30] feat: update error code name --- rest/api/rest.api | 2 +- rest/src/commonMain/kotlin/json/JsonErrorCode.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rest/api/rest.api b/rest/api/rest.api index 3caaaff49af5..ea8672e1974e 100644 --- a/rest/api/rest.api +++ b/rest/api/rest.api @@ -2568,6 +2568,7 @@ public final class dev/kord/rest/json/JsonErrorCode : java/lang/Enum { public static final field Companion Ldev/kord/rest/json/JsonErrorCode$Companion; public static final field ConnectionRevoked Ldev/kord/rest/json/JsonErrorCode; public static final field DisallowedName Ldev/kord/rest/json/JsonErrorCode; + public static final field EntitlementAlreadyGranted Ldev/kord/rest/json/JsonErrorCode; public static final field EntityOfEventDifferentFromEventEntity Ldev/kord/rest/json/JsonErrorCode; public static final field FailedToCreateStage Ldev/kord/rest/json/JsonErrorCode; public static final field FailedToResizeAssetBelowMaximumSize Ldev/kord/rest/json/JsonErrorCode; @@ -2658,7 +2659,6 @@ public final class dev/kord/rest/json/JsonErrorCode : java/lang/Enum { public static final field ReactionBlocked Ldev/kord/rest/json/JsonErrorCode; public static final field RequestEntityTooLarge Ldev/kord/rest/json/JsonErrorCode; public static final field Require2FA Ldev/kord/rest/json/JsonErrorCode; - public static final field ResourceHasEntitlement Ldev/kord/rest/json/JsonErrorCode; public static final field ResourceIsRateLimited Ldev/kord/rest/json/JsonErrorCode; public static final field SendMessagesTemporarilyDisabled Ldev/kord/rest/json/JsonErrorCode; public static final field ServerNeedsMonetizationEnabled Ldev/kord/rest/json/JsonErrorCode; diff --git a/rest/src/commonMain/kotlin/json/JsonErrorCode.kt b/rest/src/commonMain/kotlin/json/JsonErrorCode.kt index fc59a8c55399..1434977096d0 100644 --- a/rest/src/commonMain/kotlin/json/JsonErrorCode.kt +++ b/rest/src/commonMain/kotlin/json/JsonErrorCode.kt @@ -338,7 +338,7 @@ public enum class JsonErrorCode(public val code: Int) { TagRequired(40067), /** An entitlement has already been granted for this resource. */ - ResourceHasEntitlement(40074), + EntitlementAlreadyGranted(40074), /** Missing access. */ MissingAccess(50001), From 0a962891efaf80c6caf44031d4f56f48370a19e1 Mon Sep 17 00:00:00 2001 From: viztea Date: Fri, 12 Apr 2024 14:07:15 -0700 Subject: [PATCH 22/30] chore: requested changes --- .../src/commonTest/kotlin/json/InteractionTest.kt | 12 ++++++++++++ core/api/core.api | 7 ++----- core/src/commonMain/kotlin/Kord.kt | 3 ++- core/src/commonMain/kotlin/entity/Sku.kt | 2 +- .../commonMain/kotlin/event/entitlement/Events.kt | 12 ++++++++---- .../gateway/handler/EntitlementEventHandler.kt | 15 ++++++++++++--- .../commonMain/kotlin/supplier/EntitySupplier.kt | 5 ++++- .../kotlin/supplier/RestEntitySupplier.kt | 4 +--- .../resources/interaction/groupsubcommand.json | 11 +---------- .../resources/interaction/rootcommand.json | 11 +---------- .../jvmTest/resources/interaction/subcommand.json | 11 +---------- 11 files changed, 45 insertions(+), 48 deletions(-) diff --git a/common/src/commonTest/kotlin/json/InteractionTest.kt b/common/src/commonTest/kotlin/json/InteractionTest.kt index 6d73f7857278..c406e89857e0 100644 --- a/common/src/commonTest/kotlin/json/InteractionTest.kt +++ b/common/src/commonTest/kotlin/json/InteractionTest.kt @@ -20,6 +20,14 @@ private val perms = Permissions( ManageGuildExpressions, ) +val testEntitlements = listOf(DiscordEntitlement( + id = Snowflake.min, + applicationId = Snowflake.min, + skuId = Snowflake.min, + type = EntitlementType.ApplicationSubscription, + deleted = false +)) + class InteractionTest { val json = Json { @@ -51,6 +59,7 @@ class InteractionTest { arg.name shouldBe "testint" arg.value shouldBe 1L appPermissions shouldBe perms + entitlements shouldBe testEntitlements } } @@ -77,6 +86,7 @@ class InteractionTest { arg.name shouldBe "testint" arg.value shouldBe 1L appPermissions shouldBe perms + entitlements shouldBe testEntitlements } } @@ -102,6 +112,7 @@ class InteractionTest { arg.name shouldBe "testint" arg.value shouldBe 1L appPermissions shouldBe perms + entitlements shouldBe testEntitlements } } @@ -142,6 +153,7 @@ class InteractionTest { guildId shouldBe "772904309264089089" id shouldBe "847587388497854464" appPermissions shouldBe perms + entitlements shouldBe testEntitlements } } diff --git a/core/api/core.api b/core/api/core.api index 55449dae3e3b..0cb202c9a1ef 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -7061,7 +7061,8 @@ public final class dev/kord/core/entity/Sku : dev/kord/core/entity/KordEntity, d public final fun getSlug ()Ljava/lang/String; public fun getSupplier ()Ldev/kord/core/supplier/EntitySupplier; public final fun getType ()Ldev/kord/common/entity/SkuType; - public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; + public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Sku; + public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; } public final class dev/kord/core/entity/StageInstance : dev/kord/core/behavior/StageInstanceBehavior { @@ -11766,7 +11767,6 @@ public final class dev/kord/core/event/channel/thread/UnknownChannelThreadUpdate public final class dev/kord/core/event/entitlement/EntitlementCreateEvent : dev/kord/core/event/Event { public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;)V - public synthetic fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun getCustomContext ()Ljava/lang/Object; public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; public fun getGateway ()Ldev/kord/gateway/Gateway; @@ -11777,7 +11777,6 @@ public final class dev/kord/core/event/entitlement/EntitlementCreateEvent : dev/ public final class dev/kord/core/event/entitlement/EntitlementDeleteEvent : dev/kord/core/event/Event { public fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;)V - public synthetic fun (Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun getCustomContext ()Ljava/lang/Object; public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; public fun getGateway ()Ldev/kord/gateway/Gateway; @@ -11788,7 +11787,6 @@ public final class dev/kord/core/event/entitlement/EntitlementDeleteEvent : dev/ public final class dev/kord/core/event/entitlement/EntitlementUpdateEvent : dev/kord/core/event/Event { public fun (Ldev/kord/core/entity/Entitlement;Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;)V - public synthetic fun (Ldev/kord/core/entity/Entitlement;Ldev/kord/core/entity/Entitlement;ILjava/lang/Object;Ldev/kord/core/Kord;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun getCustomContext ()Ljava/lang/Object; public final fun getEntitlement ()Ldev/kord/core/entity/Entitlement; public fun getGateway ()Ldev/kord/gateway/Gateway; @@ -13988,7 +13986,6 @@ public final class dev/kord/core/supplier/RestEntitySupplier : dev/kord/core/sup public fun getRegions ()Lkotlinx/coroutines/flow/Flow; public fun getRole (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getRoleOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun getSKUs (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getSelf (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getSelfOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getStageInstance (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/core/src/commonMain/kotlin/Kord.kt b/core/src/commonMain/kotlin/Kord.kt index 4373f19e3957..191781b25f3b 100644 --- a/core/src/commonMain/kotlin/Kord.kt +++ b/core/src/commonMain/kotlin/Kord.kt @@ -375,7 +375,8 @@ public class Kord( * * @throws [RequestException] if anything went wrong during the request. */ - public suspend fun getSkus(): List = with(EntitySupplyStrategy.rest).getSKUs(selfId) + public suspend fun getSkus(): List = + rest.sku.listSkus(selfId).map { Sku(it, this) } /** * Requests to get a list of [Entitlement]s with the given [skuId], [userId], or [guildId]. diff --git a/core/src/commonMain/kotlin/entity/Sku.kt b/core/src/commonMain/kotlin/entity/Sku.kt index a6328a5b0c6a..42b0dee6a02e 100644 --- a/core/src/commonMain/kotlin/entity/Sku.kt +++ b/core/src/commonMain/kotlin/entity/Sku.kt @@ -49,5 +49,5 @@ public class Sku( guildId: Snowflake? = null, ): Flow = supplier.getEntitlements(applicationId, id, limit, userId, guildId) - override fun withStrategy(strategy: EntitySupplyStrategy<*>): Strategizable = Sku(data, kord, strategy.supply(kord)) + override fun withStrategy(strategy: EntitySupplyStrategy<*>): Sku = Sku(data, kord, strategy.supply(kord)) } \ No newline at end of file diff --git a/core/src/commonMain/kotlin/event/entitlement/Events.kt b/core/src/commonMain/kotlin/event/entitlement/Events.kt index 26d71f041a0a..b1ff2ca5dd92 100644 --- a/core/src/commonMain/kotlin/event/entitlement/Events.kt +++ b/core/src/commonMain/kotlin/event/entitlement/Events.kt @@ -12,10 +12,11 @@ import dev.kord.core.event.Event * An [Entitlement] is created when a [User] subscribes to a [Sku]. */ public class EntitlementCreateEvent( + /** The [Entitlement] that was created. */ public val entitlement: Entitlement, override val shard: Int, override val customContext: Any?, - override val kord: Kord = entitlement.kord + override val kord: Kord ) : Event { override fun toString(): String { @@ -36,15 +37,17 @@ public class EntitlementCreateEvent( * end of the billing period. */ public class EntitlementUpdateEvent( + /** The [Entitlement] that was updated. */ public val entitlement: Entitlement, + /** The [entitlement] as found in [cache][Kord.cache] before the update. */ public val old: Entitlement?, override val shard: Int, override val customContext: Any?, - override val kord: Kord = entitlement.kord + override val kord: Kord ) : Event { override fun toString(): String { - return "EntitlementUpdateEvent(entitlement=$entitlement, customContext=$customContext, kord=$kord, shard=$shard)" + return "EntitlementUpdateEvent(entitlement=$entitlement, old=$old, customContext=$customContext, kord=$kord, shard=$shard)" } } @@ -61,10 +64,11 @@ public class EntitlementUpdateEvent( * end of the billing period. */ public class EntitlementDeleteEvent( + /** The [Entitlement] that was deleted */ public val entitlement: Entitlement, override val shard: Int, override val customContext: Any?, - override val kord: Kord = entitlement.kord, + override val kord: Kord ) : Event { override fun toString(): String { return "EntitlementDeleteEvent(entitlement=$entitlement, customContext=$customContext, kord=$kord, shard=$shard)" diff --git a/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt index d2cb247002f9..8dbccc8f7799 100644 --- a/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt +++ b/core/src/commonMain/kotlin/gateway/handler/EntitlementEventHandler.kt @@ -27,21 +27,26 @@ internal class EntitlementEventHandler : BaseGatewayEventHandler() { entitlement = handleEntitlement(event.entitlement, kord), shard = shard, customContext = context?.get(), + kord = kord, ) is EntitlementUpdate -> EntitlementUpdateEvent( - old = kord.cache.query { idEq(EntitlementData::id, event.entitlement.id) } - .singleOrNull() + old = kord.cache.query { + idEq(EntitlementData::id, event.entitlement.id) + idEq(EntitlementData::applicationId, event.entitlement.applicationId) + }.singleOrNull() ?.let { Entitlement(it, kord) }, shard = shard, entitlement = handleEntitlement(event.entitlement, kord), customContext = context?.get(), + kord = kord, ) is EntitlementDelete -> EntitlementDeleteEvent( entitlement = handleDeletedEntitlement(event.entitlement, kord), shard = shard, customContext = context?.get(), + kord = kord, ) else -> null @@ -49,7 +54,11 @@ internal class EntitlementEventHandler : BaseGatewayEventHandler() { private suspend fun handleDeletedEntitlement(entity: DiscordEntitlement, kord: Kord): Entitlement { val entitlement = Entitlement(EntitlementData.from(entity), kord) - kord.cache.remove{ idEq(EntitlementData::id, entitlement.id) } + kord.cache.remove{ + idEq(EntitlementData::id, entitlement.id) + idEq(EntitlementData::applicationId, entitlement.applicationId) + } + return entitlement } diff --git a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt index 8866cc419e7d..4424edcfb1f6 100644 --- a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt @@ -661,7 +661,10 @@ public interface EntitySupplier { ?: EntityNotFoundException.entitlementNotFound(applicationId, entitlementId) /** - * Requests all [Entitlement]s for the [Application] with the given [applicationId]. + * Requests to get all [Entitlement]s for the [Application] with the given [applicationId]. + * + * The returned flow is lazily executed, any [RequestException] will be thrown on + * [terminal operators](https://kotlinlang.org/docs/reference/coroutines/flow.html#terminal-flow-operators) instead. */ public suspend fun getEntitlements( applicationId: Snowflake, diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index 39051783569a..53ca9afc9c8f 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -654,6 +654,7 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { Entitlement(data, kord) } + // maxBatchSize: see https://discord.com/developers/docs/monetization/entitlements#list-entitlements override suspend fun getEntitlements( applicationId: Snowflake, skuId: Snowflake?, @@ -678,9 +679,6 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { } } - public suspend fun getSKUs(applicationId: Snowflake): List = - sku.listSkus(applicationId).map { Sku(it, kord) } - override fun toString(): String = "RestEntitySupplier(rest=${kord.rest})" } diff --git a/core/src/jvmTest/resources/interaction/groupsubcommand.json b/core/src/jvmTest/resources/interaction/groupsubcommand.json index 8219799fbeb3..bff896333550 100644 --- a/core/src/jvmTest/resources/interaction/groupsubcommand.json +++ b/core/src/jvmTest/resources/interaction/groupsubcommand.json @@ -44,14 +44,5 @@ "name": "testsubcommands", "id": "792107855418490901" }, - "channel_id": "587324906702766226", - "entitlements": [ - { - "id":"0", - "application_id":"0", - "sku_id":"0", - "type":8, - "deleted":false - } - ] + "channel_id": "587324906702766226" } \ No newline at end of file diff --git a/core/src/jvmTest/resources/interaction/rootcommand.json b/core/src/jvmTest/resources/interaction/rootcommand.json index f1d37336db41..9303a77c003c 100644 --- a/core/src/jvmTest/resources/interaction/rootcommand.json +++ b/core/src/jvmTest/resources/interaction/rootcommand.json @@ -34,14 +34,5 @@ "name": "testsubcommands", "id": "792107855418490901" }, - "channel_id": "587324906702766226", - "entitlements": [ - { - "id":"0", - "application_id":"0", - "sku_id":"0", - "type":8, - "deleted":false - } - ] + "channel_id": "587324906702766226" } \ No newline at end of file diff --git a/core/src/jvmTest/resources/interaction/subcommand.json b/core/src/jvmTest/resources/interaction/subcommand.json index 583f25fe1e37..fd8cc71a8600 100644 --- a/core/src/jvmTest/resources/interaction/subcommand.json +++ b/core/src/jvmTest/resources/interaction/subcommand.json @@ -39,14 +39,5 @@ "name": "testsubcommands", "id": "792107855418490901" }, - "channel_id": "587324906702766226", - "entitlements": [ - { - "id":"0", - "application_id":"0", - "sku_id":"0", - "type":8, - "deleted":false - } - ] + "channel_id": "587324906702766226" } \ No newline at end of file From d771c6b4408a6507472e9fa969833892231e00c3 Mon Sep 17 00:00:00 2001 From: viztea Date: Fri, 12 Apr 2024 14:15:39 -0700 Subject: [PATCH 23/30] chore: remove unnecessary json field --- .../interaction/slash_command_permissions_update.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json b/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json index 2713dfe195df..5c151ac5a516 100644 --- a/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json +++ b/common/src/commonTest/resources/json/interaction/slash_command_permissions_update.json @@ -8,14 +8,5 @@ "type": 1, "permission": true } - ], - "entitlements": [ - { - "id":"0", - "application_id":"0", - "sku_id":"0", - "type":8, - "deleted":false - } ] } From ade3737dcb6af4cce198bf91cde730367a939105 Mon Sep 17 00:00:00 2001 From: viztea Date: Fri, 12 Apr 2024 14:23:30 -0700 Subject: [PATCH 24/30] feat(core): add entitlements cache builder --- core/src/commonMain/kotlin/cache/KordCache.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/commonMain/kotlin/cache/KordCache.kt b/core/src/commonMain/kotlin/cache/KordCache.kt index 1f64516ef4dd..f43d36d7d345 100644 --- a/core/src/commonMain/kotlin/cache/KordCache.kt +++ b/core/src/commonMain/kotlin/cache/KordCache.kt @@ -119,6 +119,10 @@ public class KordCacheBuilder { public fun autoModerationRules(generator: Generator): Unit = forDescription(AutoModerationRuleData.description, generator) + /** Configures the caching for [EntitlementData]. */ + public fun entitlements(generator: Generator): Unit = + forDescription(EntitlementData.description, generator) + public fun build(): DataCache = DelegatingDataCache(EntrySupplier.invoke { cache, description -> val generator = descriptionGenerators[description] ?: defaultGenerator generator(cache, description) From af49b0672da03b61e99d39f7527091e25198e8b9 Mon Sep 17 00:00:00 2001 From: viztea Date: Fri, 12 Apr 2024 14:23:44 -0700 Subject: [PATCH 25/30] feat(core): update kdoc --- core/src/commonMain/kotlin/Kord.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/commonMain/kotlin/Kord.kt b/core/src/commonMain/kotlin/Kord.kt index 191781b25f3b..3370dfd13027 100644 --- a/core/src/commonMain/kotlin/Kord.kt +++ b/core/src/commonMain/kotlin/Kord.kt @@ -373,7 +373,7 @@ public class Kord( /** * Requests to get all [Sku]s for this application. * - * @throws [RequestException] if anything went wrong during the request. + * @throws [RestRequestException] if anything went wrong during the request. */ public suspend fun getSkus(): List = rest.sku.listSkus(selfId).map { Sku(it, this) } @@ -410,7 +410,7 @@ public class Kord( /** * Requests to create a new [test entitlement][Entitlement] with the given [skuId], [ownerId] and [ownerType]. * - * @throws [RequestException] if anything went wrong during the request. + * @throws [RestRequestException] if anything went wrong during the request. */ public suspend fun createTestEntitlement( skuId: Snowflake, From 10bfef2f868a5e86d3783c3944ad03e6520ab5eb Mon Sep 17 00:00:00 2001 From: viztea Date: Fri, 19 Apr 2024 16:55:34 -0700 Subject: [PATCH 26/30] chore: requested changes awaiting replies before committing my other changes --- core/api/core.api | 1 + .../kotlin/behavior/EntitlementBehavior.kt | 6 +- .../commonMain/kotlin/entity/Entitlement.kt | 66 +++++++++++-------- core/src/commonMain/kotlin/entity/Sku.kt | 19 +++++- .../exception/EntityNotFoundException.kt | 2 +- 5 files changed, 64 insertions(+), 30 deletions(-) diff --git a/core/api/core.api b/core/api/core.api index 0cb202c9a1ef..d113ec01b0ac 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -2257,6 +2257,7 @@ public final class dev/kord/core/cache/KordCacheBuilder { public final fun channels (Lkotlin/jvm/functions/Function2;)V public final fun disableAll ()V public final fun emojis (Lkotlin/jvm/functions/Function2;)V + public final fun entitlements (Lkotlin/jvm/functions/Function2;)V public final fun forDescription (Ldev/kord/cache/api/data/DataDescription;Lkotlin/jvm/functions/Function2;)V public final fun getDefaultGenerator ()Lkotlin/jvm/functions/Function2; public final fun guilds (Lkotlin/jvm/functions/Function2;)V diff --git a/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt b/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt index d8e0ace4b336..88e6b9223f4f 100644 --- a/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt +++ b/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt @@ -48,7 +48,11 @@ public interface EntitlementBehavior : KordEntity, Strategizable { public suspend fun fetchEntitlementOrNull(): Entitlement? = supplier.getEntitlementOrNull(applicationId, id) /** - * Requests to delete this entitlement. + * Requests to delete this currently-active [test entitlement][Entitlement.isTest]. + * + * Discord will act as though that [user][Entitlement.user] or [guild][Entitlement.guild] *no longer* has + * entitlement to your premium offering. + * * This request will fail if this is not a test entitlement. * * @throws [RestRequestException] if something went wrong during the request. diff --git a/core/src/commonMain/kotlin/entity/Entitlement.kt b/core/src/commonMain/kotlin/entity/Entitlement.kt index d991fa967f0f..7cbc3f9a9edc 100644 --- a/core/src/commonMain/kotlin/entity/Entitlement.kt +++ b/core/src/commonMain/kotlin/entity/Entitlement.kt @@ -11,41 +11,42 @@ import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import kotlinx.datetime.Instant +/** + * An instance of a [Discord Entitlement](https://discord.com/developers/docs/monetization/entitlements#entitlement-resource). + * + * Entitlements represent that a [User] or [Guild] has access to a premium offering in your [Application]. + */ public class Entitlement( public val data: EntitlementData, override val kord: Kord, override val supplier: EntitySupplier = kord.defaultSupplier, ) : EntitlementBehavior { - override val applicationId: Snowflake - get() = data.applicationId - override val id: Snowflake get() = data.id /** - * Whether this entitlement has been deleted. + * The ID of the [Sku] this entitlement is for. */ - public val deleted: Boolean - get() = data.deleted + public val skuId: Snowflake + get() = data.skuId /** - * Date at which the entitlement is no longer valid + * The ID of the [Application] this entitlement is for. */ - public val startsAt: Instant? - get() = data.startsAt.value + override val applicationId: Snowflake + get() = data.applicationId /** - * Start date at which the entitlement is valid. + * The ID of the [User] that is granted access to this entitlement's [Sku]. */ - public val endsAt: Instant? - get() = data.endsAt.value + public val userId: Snowflake? + get() = data.userId.value /** - * Whether this entitlement is a test entitlement. + * The behavior of the [User] that is granted access to this entitlement's [Sku]. */ - public val isTest: Boolean - // see https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-structure - get() = endsAt == null && startsAt == null + public val user: UserBehavior? + get() = userId?.let { UserBehavior(it, kord) } /** * The type of entitlement. @@ -54,28 +55,41 @@ public class Entitlement( get() = data.type /** - * The ID of the sku this entitlement is for. + * Whether this entitlement has been deleted. */ - public val skuId: Snowflake - get() = data.skuId + public val deleted: Boolean + get() = data.deleted + + /** + * Start date at which the entitlement is valid. + */ + public val startsAt: Instant? + get() = data.startsAt.value + + /** + * Date at which the entitlement is no longer valid + */ + public val endsAt: Instant? + get() = data.endsAt.value /** - * The ID of the guild this entitlement's sku is granted to. + * The ID of the [Guild] that is granted access to this entitlement's [Sku]. */ public val guildId: Snowflake? get() = data.guildId.value + /** + * The behavior of the [Guild] that is granted access to this entitlement's [Sku]. + */ public val guild: GuildBehavior? get() = guildId?.let { GuildBehavior(it, kord) } /** - * The ID of the user this entitlement's sku is granted to. + * Whether this entitlement is a test entitlement. */ - public val userId: Snowflake? - get() = data.userId.value - - public val user: UserBehavior? - get() = userId?.let { UserBehavior(it, kord) } + public val isTest: Boolean + // see https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-structure + get() = endsAt == null && startsAt == null override suspend fun asEntitlement(): Entitlement = this diff --git a/core/src/commonMain/kotlin/entity/Sku.kt b/core/src/commonMain/kotlin/entity/Sku.kt index 42b0dee6a02e..0eb358af0e80 100644 --- a/core/src/commonMain/kotlin/entity/Sku.kt +++ b/core/src/commonMain/kotlin/entity/Sku.kt @@ -10,6 +10,12 @@ import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import kotlinx.coroutines.flow.Flow +/** + * An instance of a [Discord Sku](https://discord.com/developers/docs/monetization/skus). + * + * SKUs (or stock-keeping units) represent premium offerings that can be made available to your [Application]'s [User]s or + * [Guild]s. + */ public class Sku( public val data: DiscordSku, override val kord: Kord, @@ -18,10 +24,16 @@ public class Sku( override val id: Snowflake get() = data.id - public val applicationId: Snowflake get() = data.applicationId - + /** + * The type of this SKU. + */ public val type: SkuType get() = data.type + /** + * The ID of the [Application] this SKU is for. + */ + public val applicationId: Snowflake get() = data.applicationId + /** * Customer-facing name of the premium offering. */ @@ -32,6 +44,9 @@ public class Sku( */ public val slug: String get() = data.slug + /** + * The flags of this SKU. + */ public val flags: SkuFlags get() = data.flags /** diff --git a/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt b/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt index e1fe0ff03657..5e241cd0a55c 100644 --- a/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt +++ b/core/src/commonMain/kotlin/exception/EntityNotFoundException.kt @@ -107,6 +107,6 @@ public class EntityNotFoundException : Exception { guildEntityNotFound("Auto Moderation Rule", guildId, ruleId) public inline fun entitlementNotFound(applicationId: Snowflake, entitlementId: Snowflake): Nothing = - throw EntityNotFoundException("Entitlement with id $entitlementId in application $applicationId was not found.") + throw EntityNotFoundException("Entitlement with id $entitlementId for application $applicationId was not found.") } } From 39b4978102babb06cf93b2d949271abaa20681f9 Mon Sep 17 00:00:00 2001 From: viztea Date: Fri, 19 Apr 2024 18:38:06 -0700 Subject: [PATCH 27/30] chore: requested changes --- core/api/core.api | 33 +++------- .../kotlin/behavior/EntitlementBehavior.kt | 64 ------------------- .../commonMain/kotlin/entity/Entitlement.kt | 32 ++++++++-- core/src/commonMain/kotlin/entity/Sku.kt | 12 ++++ 4 files changed, 45 insertions(+), 96 deletions(-) delete mode 100644 core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt diff --git a/core/api/core.api b/core/api/core.api index d113ec01b0ac..3e8283a14296 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -183,24 +183,6 @@ public final class dev/kord/core/behavior/ChatInputCommandBehavior$DefaultImpls public static fun compareTo (Ldev/kord/core/behavior/ChatInputCommandBehavior;Ldev/kord/core/entity/Entity;)I } -public abstract interface class dev/kord/core/behavior/EntitlementBehavior : dev/kord/core/entity/KordEntity, dev/kord/core/entity/Strategizable { - public abstract fun asEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun asEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun fetchEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun fetchEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun getApplicationId ()Ldev/kord/common/entity/Snowflake; -} - -public final class dev/kord/core/behavior/EntitlementBehavior$DefaultImpls { - public static fun asEntitlement (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun asEntitlementOrNull (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun compareTo (Ldev/kord/core/behavior/EntitlementBehavior;Ldev/kord/core/entity/Entity;)I - public static fun delete (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun fetchEntitlement (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun fetchEntitlementOrNull (Ldev/kord/core/behavior/EntitlementBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - public abstract interface class dev/kord/core/behavior/GlobalApplicationCommandBehavior : dev/kord/core/behavior/ApplicationCommandBehavior { public abstract fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -6111,17 +6093,14 @@ public abstract interface class dev/kord/core/entity/Emoji { public abstract fun getName ()Ljava/lang/String; } -public final class dev/kord/core/entity/Entitlement : dev/kord/core/behavior/EntitlementBehavior { +public final class dev/kord/core/entity/Entitlement : dev/kord/core/entity/KordEntity, dev/kord/core/entity/Strategizable { public fun (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V public synthetic fun (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun asEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun asEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun compareTo (Ldev/kord/core/entity/Entity;)I public synthetic fun compareTo (Ljava/lang/Object;)I - public fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun fetchEntitlement (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun fetchEntitlementOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun equals (Ljava/lang/Object;)Z + public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getData ()Ldev/kord/core/cache/data/EntitlementData; public final fun getDeleted ()Z public final fun getEndsAt ()Lkotlinx/datetime/Instant; @@ -6135,6 +6114,7 @@ public final class dev/kord/core/entity/Entitlement : dev/kord/core/behavior/Ent public final fun getType ()Ldev/kord/common/entity/EntitlementType; public final fun getUser ()Ldev/kord/core/behavior/UserBehavior; public final fun getUserId ()Ldev/kord/common/entity/Snowflake; + public fun hashCode ()I public final fun isTest ()Z public fun toString ()Ljava/lang/String; public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Entitlement; @@ -7051,6 +7031,7 @@ public final class dev/kord/core/entity/Sku : dev/kord/core/entity/KordEntity, d public synthetic fun (Ldev/kord/common/entity/DiscordSku;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun compareTo (Ldev/kord/core/entity/Entity;)I public synthetic fun compareTo (Ljava/lang/Object;)I + public fun equals (Ljava/lang/Object;)Z public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getData ()Ldev/kord/common/entity/DiscordSku; public final fun getEntitlements (Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -7062,6 +7043,8 @@ public final class dev/kord/core/entity/Sku : dev/kord/core/entity/KordEntity, d public final fun getSlug ()Ljava/lang/String; public fun getSupplier ()Ldev/kord/core/supplier/EntitySupplier; public final fun getType ()Ldev/kord/common/entity/SkuType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; public fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Sku; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/Strategizable; } diff --git a/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt b/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt deleted file mode 100644 index 88e6b9223f4f..000000000000 --- a/core/src/commonMain/kotlin/behavior/EntitlementBehavior.kt +++ /dev/null @@ -1,64 +0,0 @@ -package dev.kord.core.behavior - -import dev.kord.common.entity.Snowflake -import dev.kord.common.exception.RequestException -import dev.kord.core.entity.Entitlement -import dev.kord.core.entity.KordEntity -import dev.kord.core.entity.Strategizable -import dev.kord.core.exception.EntityNotFoundException -import dev.kord.core.supplier.EntitySupplier -import dev.kord.rest.request.RestRequestException - -/** - * The behavior of a [Discord Test Entitlement](https://discord.com/developers/docs/monetization/entitlements) - */ -public interface EntitlementBehavior : KordEntity, Strategizable { - public val applicationId: Snowflake - - /** - * Requests to get this value as an [Entitlement]. - * - * @throws [RequestException] if anything went wrong during the request. - * @throws [EntityNotFoundException] if the entitlement wasn't present. - */ - public suspend fun asEntitlement(): Entitlement = supplier.getEntitlement(applicationId, id) - - /** - * Requests to get this value as an [Entitlement]. - * returns null if this entitlement isn't present. - * - * @throws [RequestException] if anything went wrong during the request. - */ - public suspend fun asEntitlementOrNull(): Entitlement? = supplier.getEntitlementOrNull(applicationId, id) - - /** - * Retrieve the [Entitlement] associated with this behavior from the provided [EntitySupplier] - * - * @throws [RequestException] if anything went wrong during the request. - * @throws [EntityNotFoundException] if the entitlement wasn't present. - */ - public suspend fun fetchEntitlement(): Entitlement = supplier.getEntitlement(applicationId, id) - - /** - * Retrieve the [Entitlement] associated with this behavior from the provided [EntitySupplier] - * returns null if this entitlement isn't present. - * - * @throws [RequestException] if anything went wrong during the request. - */ - public suspend fun fetchEntitlementOrNull(): Entitlement? = supplier.getEntitlementOrNull(applicationId, id) - - /** - * Requests to delete this currently-active [test entitlement][Entitlement.isTest]. - * - * Discord will act as though that [user][Entitlement.user] or [guild][Entitlement.guild] *no longer* has - * entitlement to your premium offering. - * - * This request will fail if this is not a test entitlement. - * - * @throws [RestRequestException] if something went wrong during the request. - */ - public suspend fun delete() { - kord.rest.entitlement.deleteTestEntitlement(applicationId, id) - } - -} diff --git a/core/src/commonMain/kotlin/entity/Entitlement.kt b/core/src/commonMain/kotlin/entity/Entitlement.kt index 7cbc3f9a9edc..afe996a9f176 100644 --- a/core/src/commonMain/kotlin/entity/Entitlement.kt +++ b/core/src/commonMain/kotlin/entity/Entitlement.kt @@ -3,12 +3,13 @@ package dev.kord.core.entity import dev.kord.common.entity.EntitlementType import dev.kord.common.entity.Snowflake import dev.kord.core.Kord -import dev.kord.core.behavior.EntitlementBehavior import dev.kord.core.behavior.GuildBehavior import dev.kord.core.behavior.UserBehavior import dev.kord.core.cache.data.EntitlementData +import dev.kord.core.hash import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy +import dev.kord.rest.request.RestRequestException import kotlinx.datetime.Instant /** @@ -20,7 +21,7 @@ public class Entitlement( public val data: EntitlementData, override val kord: Kord, override val supplier: EntitySupplier = kord.defaultSupplier, -) : EntitlementBehavior { +) : KordEntity, Strategizable { override val id: Snowflake get() = data.id @@ -33,7 +34,7 @@ public class Entitlement( /** * The ID of the [Application] this entitlement is for. */ - override val applicationId: Snowflake + public val applicationId: Snowflake get() = data.applicationId /** @@ -49,7 +50,7 @@ public class Entitlement( get() = userId?.let { UserBehavior(it, kord) } /** - * The type of entitlement. + * The [type of entitlement][EntitlementType]. */ public val type: EntitlementType get() = data.type @@ -91,13 +92,30 @@ public class Entitlement( // see https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-structure get() = endsAt == null && startsAt == null - override suspend fun asEntitlement(): Entitlement = this - - override suspend fun asEntitlementOrNull(): Entitlement = this + /** + * Requests to delete this currently-active [test entitlement][Entitlement.isTest]. + * + * Discord will act as though that [user][Entitlement.user] or [guild][Entitlement.guild] *no longer* has + * entitlement to your premium offering. + * + * This request will fail if this is not a test entitlement. + * + * @throws [RestRequestException] if something went wrong during the request. + */ + public suspend fun delete() { + kord.rest.entitlement.deleteTestEntitlement(applicationId, id) + } override fun withStrategy(strategy: EntitySupplyStrategy<*>): Entitlement = Entitlement(data, kord, strategy.supply(kord)) + override fun hashCode(): Int = hash(id, applicationId) + + override fun equals(other: Any?): Boolean = when (other) { + is Entitlement -> other.id == id && other.applicationId == applicationId + else -> false + } + override fun toString(): String { return "Entitlement(data=$data, kord=$kord, supplier=$supplier)" } diff --git a/core/src/commonMain/kotlin/entity/Sku.kt b/core/src/commonMain/kotlin/entity/Sku.kt index 0eb358af0e80..3cbd98f89080 100644 --- a/core/src/commonMain/kotlin/entity/Sku.kt +++ b/core/src/commonMain/kotlin/entity/Sku.kt @@ -6,6 +6,7 @@ import dev.kord.common.entity.SkuType import dev.kord.common.entity.Snowflake import dev.kord.common.exception.RequestException import dev.kord.core.Kord +import dev.kord.core.hash import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import kotlinx.coroutines.flow.Flow @@ -65,4 +66,15 @@ public class Sku( ): Flow = supplier.getEntitlements(applicationId, id, limit, userId, guildId) override fun withStrategy(strategy: EntitySupplyStrategy<*>): Sku = Sku(data, kord, strategy.supply(kord)) + + override fun hashCode(): Int = hash(id, applicationId) + + override fun equals(other: Any?): Boolean = when (other) { + is Sku -> other.id == id && other.applicationId == applicationId + else -> false + } + + override fun toString(): String { + return "Sku(data=$data, kord=$kord, supplier=$supplier)" + } } \ No newline at end of file From 2e045242af0aa9a2ebecbdf705a8dcbbfa0fff1d Mon Sep 17 00:00:00 2001 From: viztea Date: Thu, 11 Jul 2024 13:23:07 -0700 Subject: [PATCH 28/30] feat: update according to docs --- common/api/common.api | 76 ++++++++++++++----- .../dev/kord/common/entity/ButtonStyle.kt | 7 ++ .../dev/kord/common/entity/EntitlementType.kt | 49 ++++++++++++ .../common/entity/InteractionResponseType.kt | 8 -- .../kotlin/dev/kord/common/entity/SkuType.kt | 14 ++++ .../kotlin/entity/DiscordComponent.kt | 16 ++-- .../commonMain/kotlin/entity/Entitlements.kt | 9 +++ .../commonMain/kotlin/entity/Interactions.kt | 7 +- common/src/commonMain/kotlin/entity/Skus.kt | 21 +++-- core/api/core.api | 53 ++++--------- .../interaction/ActionInteractionBehavior.kt | 20 ----- .../kotlin/cache/data/EntitlementData.kt | 4 +- .../kotlin/cache/data/InteractionData.kt | 4 +- .../commonMain/kotlin/entity/Entitlement.kt | 13 +++- .../kotlin/entity/interaction/Interaction.kt | 9 ++- rest/api/rest.api | 14 ++++ .../builder/component/ActionRowBuilder.kt | 18 ++++- .../kotlin/builder/component/ButtonBuilder.kt | 23 +++++- rest/src/commonMain/kotlin/route/Route.kt | 7 ++ .../kotlin/service/EntitlementService.kt | 38 ++++++---- 20 files changed, 276 insertions(+), 134 deletions(-) diff --git a/common/api/common.api b/common/api/common.api index 90a8589c4875..424637c57180 100644 --- a/common/api/common.api +++ b/common/api/common.api @@ -1617,6 +1617,10 @@ public final class dev/kord/common/entity/ButtonStyle$Link : dev/kord/common/ent public static final field INSTANCE Ldev/kord/common/entity/ButtonStyle$Link; } +public final class dev/kord/common/entity/ButtonStyle$Premium : dev/kord/common/entity/ButtonStyle { + public static final field INSTANCE Ldev/kord/common/entity/ButtonStyle$Premium; +} + public final class dev/kord/common/entity/ButtonStyle$Primary : dev/kord/common/entity/ButtonStyle { public static final field INSTANCE Ldev/kord/common/entity/ButtonStyle$Primary; } @@ -3103,8 +3107,8 @@ public final class dev/kord/common/entity/DiscordChannel$Companion { public final class dev/kord/common/entity/DiscordChatComponent : dev/kord/common/entity/DiscordComponent { public static final field Companion Ldev/kord/common/entity/DiscordChatComponent$Companion; - public fun (Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V - public synthetic fun (Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;)V + public synthetic fun (Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/ComponentType; public final fun component10 ()Ldev/kord/common/entity/optional/Optional; public final fun component11 ()Ldev/kord/common/entity/optional/Optional; @@ -3115,6 +3119,7 @@ public final class dev/kord/common/entity/DiscordChatComponent : dev/kord/common public final fun component16 ()Ldev/kord/common/entity/optional/OptionalBoolean; public final fun component17 ()Ldev/kord/common/entity/optional/Optional; public final fun component18 ()Ldev/kord/common/entity/optional/Optional; + public final fun component19 ()Ldev/kord/common/entity/optional/OptionalSnowflake; 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; @@ -3123,8 +3128,8 @@ public final class dev/kord/common/entity/DiscordChatComponent : dev/kord/common public final fun component7 ()Ldev/kord/common/entity/optional/OptionalBoolean; public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)Ldev/kord/common/entity/DiscordChatComponent; - public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordChatComponent;Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordChatComponent; + public final fun copy (Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;)Ldev/kord/common/entity/DiscordChatComponent; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordChatComponent;Ldev/kord/common/entity/ComponentType;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/OptionalBoolean;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/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalInt;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordChatComponent; public fun equals (Ljava/lang/Object;)Z public fun getChannelTypes ()Ldev/kord/common/entity/optional/Optional; public fun getComponents ()Ldev/kord/common/entity/optional/Optional; @@ -3140,6 +3145,7 @@ public final class dev/kord/common/entity/DiscordChatComponent : dev/kord/common public fun getOptions ()Ldev/kord/common/entity/optional/Optional; public fun getPlaceholder ()Ldev/kord/common/entity/optional/Optional; public fun getRequired ()Ldev/kord/common/entity/optional/OptionalBoolean; + public final fun getSkuId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getStyle ()Ldev/kord/common/entity/optional/Optional; public fun getType ()Ldev/kord/common/entity/ComponentType; public fun getUrl ()Ldev/kord/common/entity/optional/Optional; @@ -3650,9 +3656,10 @@ public final class dev/kord/common/entity/DiscordEmoji$Companion { public final class dev/kord/common/entity/DiscordEntitlement { public static final field Companion Ldev/kord/common/entity/DiscordEntitlement$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalBoolean;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalBoolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component10 ()Ldev/kord/common/entity/optional/OptionalBoolean; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/Snowflake; public final fun component4 ()Ldev/kord/common/entity/optional/OptionalSnowflake; @@ -3661,10 +3668,11 @@ public final class dev/kord/common/entity/DiscordEntitlement { 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/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;)Ldev/kord/common/entity/DiscordEntitlement; - public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordEntitlement;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordEntitlement; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalBoolean;)Ldev/kord/common/entity/DiscordEntitlement; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordEntitlement;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/EntitlementType;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalBoolean;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordEntitlement; public fun equals (Ljava/lang/Object;)Z public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getConsumed ()Ldev/kord/common/entity/optional/OptionalBoolean; public final fun getDeleted ()Z public final fun getEndsAt ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; @@ -4342,8 +4350,8 @@ public final class dev/kord/common/entity/DiscordIntegrationsAccount$Companion { public final class dev/kord/common/entity/DiscordInteraction { public static final field Companion Ldev/kord/common/entity/DiscordInteraction$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component10 ()Ljava/lang/String; public final fun component11 ()I @@ -4351,7 +4359,7 @@ public final class dev/kord/common/entity/DiscordInteraction { public final fun component13 ()Ldev/kord/common/entity/optional/Optional; public final fun component14 ()Ldev/kord/common/entity/optional/Optional; public final fun component15 ()Ldev/kord/common/entity/optional/Optional; - public final fun component16 ()Ljava/util/List; + public final fun component16 ()Ldev/kord/common/entity/optional/Optional; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/InteractionType; public final fun component4 ()Ldev/kord/common/entity/InteractionCallbackData; @@ -4360,15 +4368,15 @@ public final class dev/kord/common/entity/DiscordInteraction { public final fun component7 ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)Ldev/kord/common/entity/DiscordInteraction; - public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordInteraction;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordInteraction; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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/DiscordInteraction; + public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordInteraction;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/common/entity/InteractionCallbackData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;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;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordInteraction; public fun equals (Ljava/lang/Object;)Z public final fun getAppPermissions ()Ldev/kord/common/entity/optional/Optional; public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getChannel ()Ldev/kord/common/entity/optional/Optional; public final fun getChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getData ()Ldev/kord/common/entity/InteractionCallbackData; - public final fun getEntitlements ()Ljava/util/List; + public final fun getEntitlements ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getGuildLocale ()Ldev/kord/common/entity/optional/Optional; public final fun getId ()Ldev/kord/common/entity/Snowflake; @@ -6532,9 +6540,37 @@ public final class dev/kord/common/entity/EntitlementType$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/common/entity/EntitlementType$DeveloperGift : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$DeveloperGift; +} + +public final class dev/kord/common/entity/EntitlementType$FreePurchase : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$FreePurchase; +} + +public final class dev/kord/common/entity/EntitlementType$PremiumPurchase : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$PremiumPurchase; +} + +public final class dev/kord/common/entity/EntitlementType$PremiumSubscription : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$PremiumSubscription; +} + +public final class dev/kord/common/entity/EntitlementType$Purchase : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$Purchase; +} + +public final class dev/kord/common/entity/EntitlementType$TestModePurchase : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$TestModePurchase; +} + public final class dev/kord/common/entity/EntitlementType$Unknown : dev/kord/common/entity/EntitlementType { } +public final class dev/kord/common/entity/EntitlementType$UserGift : dev/kord/common/entity/EntitlementType { + public static final field INSTANCE Ldev/kord/common/entity/EntitlementType$UserGift; +} + public abstract class dev/kord/common/entity/ExplicitContentFilter { public static final field Companion Ldev/kord/common/entity/ExplicitContentFilter$Companion; public synthetic fun (ILkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -7096,10 +7132,6 @@ public final class dev/kord/common/entity/InteractionResponseType$Pong : dev/kor public static final field INSTANCE Ldev/kord/common/entity/InteractionResponseType$Pong; } -public final class dev/kord/common/entity/InteractionResponseType$PremiumRequired : dev/kord/common/entity/InteractionResponseType { - public static final field INSTANCE Ldev/kord/common/entity/InteractionResponseType$PremiumRequired; -} - public final class dev/kord/common/entity/InteractionResponseType$Unknown : dev/kord/common/entity/InteractionResponseType { } @@ -8455,6 +8487,14 @@ public final class dev/kord/common/entity/SkuType$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class dev/kord/common/entity/SkuType$Consumable : dev/kord/common/entity/SkuType { + public static final field INSTANCE Ldev/kord/common/entity/SkuType$Consumable; +} + +public final class dev/kord/common/entity/SkuType$Durable : dev/kord/common/entity/SkuType { + public static final field INSTANCE Ldev/kord/common/entity/SkuType$Durable; +} + public final class dev/kord/common/entity/SkuType$Subscription : dev/kord/common/entity/SkuType { public static final field INSTANCE Ldev/kord/common/entity/SkuType$Subscription; } diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/ButtonStyle.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/ButtonStyle.kt index 634e443fc832..a7c18eef96a8 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/ButtonStyle.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/ButtonStyle.kt @@ -68,6 +68,11 @@ public sealed class ButtonStyle( */ public object Link : ButtonStyle(5) + /** + * Blurple, prompts to purchase a premium offering. + */ + public object Premium : ButtonStyle(6) + internal object Serializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("dev.kord.common.entity.ButtonStyle", PrimitiveKind.INT) @@ -90,6 +95,7 @@ public sealed class ButtonStyle( Success, Danger, Link, + Premium, ) } @@ -104,6 +110,7 @@ public sealed class ButtonStyle( 3 -> Success 4 -> Danger 5 -> Link + 6 -> Premium else -> Unknown(value) } } diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt index f364dd229ea8..e99134f54d2d 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt @@ -42,6 +42,41 @@ public sealed class EntitlementType( `value`: Int, ) : EntitlementType(value) + /** + * Entitlement that was purchased by a user. + */ + public object Purchase : EntitlementType(1) + + /** + * Entitlement for a Discord Nitro subscription. + */ + public object PremiumSubscription : EntitlementType(2) + + /** + * Entitlement that was gifted to a user by the developer. + */ + public object DeveloperGift : EntitlementType(3) + + /** + * Entitlement that was purchased by a dev in application test mode. + */ + public object TestModePurchase : EntitlementType(4) + + /** + * Entitlement that was purchased when the [Sku][DiscordSku] was free. + */ + public object FreePurchase : EntitlementType(5) + + /** + * Entitlement that was gifted to a user by another user. + */ + public object UserGift : EntitlementType(6) + + /** + * Entitlement that was claimed for free as a Nitro subscriber. + */ + public object PremiumPurchase : EntitlementType(7) + /** * Entitlement was purchased as an app subscription. */ @@ -65,6 +100,13 @@ public sealed class EntitlementType( */ public val entries: List by lazy(mode = PUBLICATION) { listOf( + Purchase, + PremiumSubscription, + DeveloperGift, + TestModePurchase, + FreePurchase, + UserGift, + PremiumPurchase, ApplicationSubscription, ) } @@ -75,6 +117,13 @@ public sealed class EntitlementType( * specified [value]. */ public fun from(`value`: Int): EntitlementType = when (value) { + 1 -> Purchase + 2 -> PremiumSubscription + 3 -> DeveloperGift + 4 -> TestModePurchase + 5 -> FreePurchase + 6 -> UserGift + 7 -> PremiumPurchase 8 -> ApplicationSubscription else -> Unknown(value) } diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt index 83c957c159fb..8c0dd7d8134d 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionResponseType.kt @@ -79,12 +79,6 @@ public sealed class InteractionResponseType( */ public object Modal : InteractionResponseType(9) - /** - * Respond to an interaction with an upgrade button, only available for apps with monetization - * enabled. - */ - public object PremiumRequired : InteractionResponseType(10) - internal object Serializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("dev.kord.common.entity.InteractionResponseType", @@ -111,7 +105,6 @@ public sealed class InteractionResponseType( UpdateMessage, ApplicationCommandAutoCompleteResult, Modal, - PremiumRequired, ) } @@ -128,7 +121,6 @@ public sealed class InteractionResponseType( 7 -> UpdateMessage 8 -> ApplicationCommandAutoCompleteResult 9 -> Modal - 10 -> PremiumRequired else -> Unknown(type) } } diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt index c42698943d2e..5e82486b120f 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt @@ -41,6 +41,16 @@ public sealed class SkuType( `value`: Int, ) : SkuType(value) + /** + * A durable, one-time purchase. + */ + public object Durable : SkuType(2) + + /** + * A consumable, one-time purchase. + */ + public object Consumable : SkuType(3) + /** * Represents a recurring subscription. */ @@ -68,6 +78,8 @@ public sealed class SkuType( */ public val entries: List by lazy(mode = PUBLICATION) { listOf( + Durable, + Consumable, Subscription, SubscriptionGroup, ) @@ -78,6 +90,8 @@ public sealed class SkuType( * Returns an instance of [SkuType] with [SkuType.value] equal to the specified [value]. */ public fun from(`value`: Int): SkuType = when (value) { + 2 -> Durable + 3 -> Consumable 5 -> Subscription 6 -> SubscriptionGroup else -> Unknown(value) diff --git a/common/src/commonMain/kotlin/entity/DiscordComponent.kt b/common/src/commonMain/kotlin/entity/DiscordComponent.kt index e9ee92527959..e5a3de4d64e9 100644 --- a/common/src/commonMain/kotlin/entity/DiscordComponent.kt +++ b/common/src/commonMain/kotlin/entity/DiscordComponent.kt @@ -23,6 +23,7 @@ Entry("Success", intValue = 3, kDoc = "Green."), Entry("Danger", intValue = 4, kDoc = "Red."), Entry("Link", intValue = 5, kDoc = "Grey, navigates to a URL."), + Entry("Premium", intValue = 6, kDoc = "Blurple, prompts to purchase a premium offering."), ], ) @@ -41,6 +42,7 @@ package dev.kord.common.entity import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.OptionalBoolean import dev.kord.common.entity.optional.OptionalInt +import dev.kord.common.entity.optional.OptionalSnowflake import dev.kord.ksp.Generate import dev.kord.ksp.Generate.EntityType.INT_KORD_ENUM import dev.kord.ksp.Generate.Entry @@ -114,27 +116,29 @@ public data class DiscordChatComponent( val style: Optional = Optional.Missing(), override val label: Optional = Optional.Missing(), override val emoji: Optional = Optional.Missing(), - @SerialName("custom_id") + @SerialName("custom_id") override val customId: Optional = Optional.Missing(), override val url: Optional = Optional.Missing(), override val disabled: OptionalBoolean = OptionalBoolean.Missing, override val components: Optional> = Optional.Missing(), override val options: Optional> = Optional.Missing(), override val placeholder: Optional = Optional.Missing(), - @SerialName("default_values") + @SerialName("default_values") override val defaultValues: Optional> = Optional.Missing(), - @SerialName("min_values") + @SerialName("min_values") override val minValues: OptionalInt = OptionalInt.Missing, - @SerialName("max_values") + @SerialName("max_values") override val maxValues: OptionalInt = OptionalInt.Missing, - @SerialName("min_length") + @SerialName("min_length") override val minLength: OptionalInt = OptionalInt.Missing, - @SerialName("max_length") + @SerialName("max_length") override val maxLength: OptionalInt = OptionalInt.Missing, override val required: OptionalBoolean = OptionalBoolean.Missing, override val value: Optional = Optional.Missing(), @SerialName("channel_types") override val channelTypes: Optional> = Optional.Missing(), + @SerialName("sku_id") + val skuId: OptionalSnowflake = OptionalSnowflake.Missing, ) : DiscordComponent() @Serializable diff --git a/common/src/commonMain/kotlin/entity/Entitlements.kt b/common/src/commonMain/kotlin/entity/Entitlements.kt index 28d97348c42e..956199426c67 100644 --- a/common/src/commonMain/kotlin/entity/Entitlements.kt +++ b/common/src/commonMain/kotlin/entity/Entitlements.kt @@ -2,6 +2,13 @@ INT_KORD_ENUM, name = "EntitlementType", docUrl = "https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types", entries = [ + Entry("Purchase", intValue = 1, kDoc = "Entitlement that was purchased by a user."), + Entry("PremiumSubscription", intValue = 2, kDoc = "Entitlement for a Discord Nitro subscription."), + Entry("DeveloperGift", intValue = 3, kDoc = "Entitlement that was gifted to a user by the developer."), + Entry("TestModePurchase", intValue = 4, kDoc = "Entitlement that was purchased by a dev in application test mode."), + Entry("FreePurchase", intValue = 5, kDoc = "Entitlement that was purchased when the [Sku][DiscordSku] was free."), + Entry("UserGift", intValue = 6, kDoc = "Entitlement that was gifted to a user by another user."), + Entry("PremiumPurchase", intValue = 7, kDoc = "Entitlement that was claimed for free as a Nitro subscriber."), Entry("ApplicationSubscription", intValue = 8, kDoc = "Entitlement was purchased as an app subscription.") ] ) @@ -18,6 +25,7 @@ package dev.kord.common.entity import dev.kord.common.entity.optional.Optional +import dev.kord.common.entity.optional.OptionalBoolean import dev.kord.common.entity.optional.OptionalSnowflake import dev.kord.ksp.Generate import dev.kord.ksp.Generate.EntityType.INT_KORD_ENUM @@ -46,4 +54,5 @@ public data class DiscordEntitlement( val endsAt: Optional = Optional.Missing(), @SerialName("guild_Id") val guildId: OptionalSnowflake = OptionalSnowflake.Missing, + val consumed: OptionalBoolean = OptionalBoolean.Missing, ) \ No newline at end of file diff --git a/common/src/commonMain/kotlin/entity/Interactions.kt b/common/src/commonMain/kotlin/entity/Interactions.kt index 51343c72af41..0a7e147251c9 100644 --- a/common/src/commonMain/kotlin/entity/Interactions.kt +++ b/common/src/commonMain/kotlin/entity/Interactions.kt @@ -62,10 +62,6 @@ kDoc = "Respond to an autocomplete interaction with suggested choices.", ), Entry("Modal", intValue = 9, kDoc = "Respond to an interaction with a popup modal."), - Entry( - "PremiumRequired", intValue = 10, - kDoc = "Respond to an interaction with an upgrade button, only available for apps with monetization enabled." - ), ], ) @@ -264,7 +260,8 @@ public data class DiscordInteraction( val locale: Optional = Optional.Missing(), @SerialName("guild_locale") val guildLocale: Optional = Optional.Missing(), - val entitlements: List + // Don't trust the docs: This can be missing + val entitlements: Optional> = Optional.Missing() ) { /** diff --git a/common/src/commonMain/kotlin/entity/Skus.kt b/common/src/commonMain/kotlin/entity/Skus.kt index 87b1374bf4c9..67e93586658b 100644 --- a/common/src/commonMain/kotlin/entity/Skus.kt +++ b/common/src/commonMain/kotlin/entity/Skus.kt @@ -1,9 +1,11 @@ @file:Generate( - INT_KORD_ENUM, name = "SkuType", + INT_KORD_ENUM, name = "SkuType", docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-types", entries = [ + Entry("Durable", intValue = 2, kDoc = "A durable, one-time purchase."), + Entry("Consumable", intValue = 3, kDoc = "A consumable, one-time purchase."), Entry("Subscription", intValue = 5, kDoc = "Represents a recurring subscription."), - Entry("SubscriptionGroup", intValue = 6, kDoc = "System-generated group for each [Subscription] SKU created.") + Entry("SubscriptionGroup", intValue = 6, kDoc = "System-generated group for each [Subscription] SKU created."), ] ) @@ -12,10 +14,14 @@ docUrl = "https://discord.com/developers/docs/monetization/skus#sku-object-sku-flags", entries = [ Entry("Available", shift = 2, kDoc = "SKU is available for purchase."), - Entry("GuildSubscription", shift = 7, - kDoc = "Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server."), - Entry("UserSubscription", shift = 8, - kDoc = "Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in every server."), + Entry( + "GuildSubscription", shift = 7, + kDoc = "Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server." + ), + Entry( + "UserSubscription", shift = 8, + kDoc = "Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in every server." + ), ] ) @@ -28,6 +34,9 @@ import dev.kord.ksp.Generate.Entry import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +/** + * Represents a [Discord SKU](https://discord.com/developers/docs/monetization/skus#sku-object). + */ @Serializable public data class DiscordSku( val id: Snowflake, diff --git a/core/api/core.api b/core/api/core.api index 3e8283a14296..bab5c50b9149 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -1728,7 +1728,6 @@ public abstract interface class dev/kord/core/behavior/interaction/ActionInterac public abstract fun deferPublicResponseUnsafe (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getOriginalInteractionResponse (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getOriginalInteractionResponseOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; } @@ -1743,7 +1742,6 @@ public final class dev/kord/core/behavior/interaction/ActionInteractionBehavior$ public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ActionInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; } @@ -1769,7 +1767,6 @@ public final class dev/kord/core/behavior/interaction/ApplicationCommandInteract public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; } @@ -1810,7 +1807,6 @@ public final class dev/kord/core/behavior/interaction/ComponentInteractionBehavi public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; } @@ -1902,7 +1898,6 @@ public final class dev/kord/core/behavior/interaction/ModalParentInteractionBeha public static fun getChannelOrNull (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponse (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getOriginalInteractionResponseOrNull (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun respondWithPremiumRequired (Ldev/kord/core/behavior/interaction/ModalParentInteractionBehavior;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/behavior/interaction/ModalParentInteractionBehaviorKt { @@ -3538,9 +3533,10 @@ public final class dev/kord/core/cache/data/EmojiDataKt { public final class dev/kord/core/cache/data/EntitlementData { public static final field Companion Ldev/kord/core/cache/data/EntitlementData$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; + public final fun component10 ()Ldev/kord/common/entity/optional/OptionalBoolean; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/EntitlementType; public final fun component4 ()Ldev/kord/common/entity/Snowflake; @@ -3549,10 +3545,11 @@ public final class dev/kord/core/cache/data/EntitlementData { public final fun component7 ()Z public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)Ldev/kord/core/cache/data/EntitlementData; - public static synthetic fun copy$default (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/core/cache/data/EntitlementData; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;)Ldev/kord/core/cache/data/EntitlementData; + public static synthetic fun copy$default (Ldev/kord/core/cache/data/EntitlementData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/EntitlementType;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/OptionalSnowflake;ZLdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;ILjava/lang/Object;)Ldev/kord/core/cache/data/EntitlementData; public fun equals (Ljava/lang/Object;)Z public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getConsumed ()Ldev/kord/common/entity/optional/OptionalBoolean; public final fun getDeleted ()Z public final fun getEndsAt ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; @@ -3968,8 +3965,8 @@ public final class dev/kord/core/cache/data/IntegrationsAccountData$Companion { public final class dev/kord/core/cache/data/InteractionData { public static final field Companion Ldev/kord/core/cache/data/InteractionData$Companion; - public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)V - public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;)V + public synthetic fun (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ldev/kord/common/entity/Snowflake; public final fun component10 ()Ljava/lang/String; public final fun component11 ()Ldev/kord/common/entity/optional/Optional; @@ -3978,7 +3975,7 @@ public final class dev/kord/core/cache/data/InteractionData { public final fun component14 ()Ldev/kord/common/entity/optional/Optional; public final fun component15 ()Ldev/kord/common/entity/optional/Optional; public final fun component16 ()Ldev/kord/common/entity/optional/Optional; - public final fun component17 ()Ljava/util/List; + public final fun component17 ()Ldev/kord/common/entity/optional/Optional; public final fun component2 ()Ldev/kord/common/entity/Snowflake; public final fun component3 ()Ldev/kord/common/entity/InteractionType; public final fun component4 ()Ldev/kord/core/cache/data/ApplicationInteractionData; @@ -3987,15 +3984,15 @@ public final class dev/kord/core/cache/data/InteractionData { public final fun component7 ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun component8 ()Ldev/kord/common/entity/optional/Optional; public final fun component9 ()Ldev/kord/common/entity/optional/Optional; - public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;)Ldev/kord/core/cache/data/InteractionData; - public static synthetic fun copy$default (Ldev/kord/core/cache/data/InteractionData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;ILjava/lang/Object;)Ldev/kord/core/cache/data/InteractionData; + public final fun copy (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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/core/cache/data/InteractionData; + public static synthetic fun copy$default (Ldev/kord/core/cache/data/InteractionData;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/InteractionType;Ldev/kord/core/cache/data/ApplicationInteractionData;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalSnowflake;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;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;ILjava/lang/Object;)Ldev/kord/core/cache/data/InteractionData; public fun equals (Ljava/lang/Object;)Z public final fun getAppPermissions ()Ldev/kord/common/entity/optional/Optional; public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getChannel ()Ldev/kord/common/entity/optional/Optional; public final fun getChannelId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getData ()Ldev/kord/core/cache/data/ApplicationInteractionData; - public final fun getEntitlements ()Ljava/util/List; + public final fun getEntitlements ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getGuildLocale ()Ldev/kord/common/entity/optional/Optional; public final fun getId ()Ldev/kord/common/entity/Snowflake; @@ -6101,6 +6098,7 @@ public final class dev/kord/core/entity/Entitlement : dev/kord/core/entity/KordE public final fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun equals (Ljava/lang/Object;)Z public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; + public final fun getConsumed ()Ljava/lang/Boolean; public final fun getData ()Ldev/kord/core/cache/data/EntitlementData; public final fun getDeleted ()Z public final fun getEndsAt ()Lkotlinx/datetime/Instant; @@ -9230,7 +9228,6 @@ public final class dev/kord/core/entity/interaction/ActionInteraction$DefaultImp public static fun getToken (Ldev/kord/core/entity/interaction/ActionInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ActionInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ActionInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ActionInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ApplicationCommandInteraction : dev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -9267,7 +9264,6 @@ public final class dev/kord/core/entity/interaction/ApplicationCommandInteractio public static fun getToken (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ApplicationCommandInteractionKt { @@ -9350,7 +9346,6 @@ public final class dev/kord/core/entity/interaction/ButtonInteraction$DefaultImp public static fun getToken (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ButtonInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ButtonInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ButtonInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ChannelOptionValue : dev/kord/core/entity/interaction/ResolvableOptionValue { @@ -9394,7 +9389,6 @@ public final class dev/kord/core/entity/interaction/ChatInputCommandInteraction$ public static fun getToken (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ChatInputCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ComponentInteraction : dev/kord/core/behavior/interaction/ComponentInteractionBehavior, dev/kord/core/behavior/interaction/ModalParentInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -9430,7 +9424,6 @@ public final class dev/kord/core/entity/interaction/ComponentInteraction$Default public static fun getToken (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ComponentInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ComponentInteractionKt { @@ -9488,7 +9481,6 @@ public final class dev/kord/core/entity/interaction/GlobalApplicationCommandInte public static fun getType (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)Ldev/kord/core/entity/User; public static fun getVersion (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/interaction/GlobalApplicationCommandInteraction; } @@ -9565,7 +9557,6 @@ public final class dev/kord/core/entity/interaction/GlobalButtonInteraction : de public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9616,7 +9607,6 @@ public final class dev/kord/core/entity/interaction/GlobalChatInputCommandIntera public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9663,7 +9653,6 @@ public final class dev/kord/core/entity/interaction/GlobalComponentInteraction$D public static fun getType (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)Ldev/kord/core/entity/User; public static fun getVersion (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GlobalComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/GlobalInteraction : dev/kord/core/behavior/interaction/GlobalInteractionBehavior, dev/kord/core/entity/interaction/Interaction { @@ -9726,7 +9715,6 @@ public final class dev/kord/core/entity/interaction/GlobalMessageCommandInteract public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9778,7 +9766,6 @@ public final class dev/kord/core/entity/interaction/GlobalModalSubmitInteraction public fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9829,7 +9816,6 @@ public final class dev/kord/core/entity/interaction/GlobalSelectMenuInteraction public fun getValues ()Ljava/util/List; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -9884,7 +9870,6 @@ public final class dev/kord/core/entity/interaction/GlobalUserCommandInteraction public fun getUsers ()Ljava/util/Map; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -9959,7 +9944,6 @@ public final class dev/kord/core/entity/interaction/GuildApplicationCommandInter public static fun getType (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)Ldev/kord/core/entity/Member; public static fun getVersion (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun withStrategy (Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction;Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/entity/interaction/GuildApplicationCommandInteraction; } @@ -10052,7 +10036,6 @@ public final class dev/kord/core/entity/interaction/GuildButtonInteraction : dev public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10111,7 +10094,6 @@ public final class dev/kord/core/entity/interaction/GuildChatInputCommandInterac public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10164,7 +10146,6 @@ public final class dev/kord/core/entity/interaction/GuildComponentInteraction$De public static fun getType (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUser (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)Ldev/kord/core/entity/Member; public static fun getVersion (Ldev/kord/core/entity/interaction/GuildComponentInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/GuildComponentInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/GuildInteraction : dev/kord/core/behavior/interaction/GuildInteractionBehavior, dev/kord/core/entity/interaction/Interaction { @@ -10244,7 +10225,6 @@ public final class dev/kord/core/entity/interaction/GuildMessageCommandInteracti public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10304,7 +10284,6 @@ public final class dev/kord/core/entity/interaction/GuildModalSubmitInteraction public synthetic fun getUser ()Ldev/kord/core/entity/User; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10363,7 +10342,6 @@ public final class dev/kord/core/entity/interaction/GuildSelectMenuInteraction : public fun getValues ()Ljava/util/List; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ComponentInteractionBehavior; @@ -10426,7 +10404,6 @@ public final class dev/kord/core/entity/interaction/GuildUserCommandInteraction public fun getUsers ()Ljava/util/Map; public fun getVersion ()I public fun hashCode ()I - public fun respondWithPremiumRequired (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun toString ()Ljava/lang/String; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ActionInteractionBehavior; public synthetic fun withStrategy (Ldev/kord/core/supplier/EntitySupplyStrategy;)Ldev/kord/core/behavior/interaction/ApplicationCommandInteractionBehavior; @@ -10582,7 +10559,6 @@ public final class dev/kord/core/entity/interaction/MessageCommandInteraction$De public static fun getToken (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/MessageCommandInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/MessageCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public abstract interface class dev/kord/core/entity/interaction/ModalSubmitInteraction : dev/kord/core/behavior/interaction/ComponentInteractionBehavior, dev/kord/core/entity/interaction/ActionInteraction { @@ -10619,7 +10595,6 @@ public final class dev/kord/core/entity/interaction/ModalSubmitInteraction$Defau public static fun getToken (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ljava/lang/String; public static fun getType (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getVersion (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/ModalSubmitInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/ModalSubmitInteractionKt { @@ -10727,7 +10702,6 @@ public final class dev/kord/core/entity/interaction/SelectMenuInteraction$Defaul public static fun getType (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getValues (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)Ljava/util/List; public static fun getVersion (Ldev/kord/core/entity/interaction/SelectMenuInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/SelectMenuInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public final class dev/kord/core/entity/interaction/StringOptionValue : dev/kord/core/entity/interaction/OptionValue { @@ -10798,7 +10772,6 @@ public final class dev/kord/core/entity/interaction/UserCommandInteraction$Defau public static fun getType (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ldev/kord/common/entity/InteractionType; public static fun getUsers (Ldev/kord/core/entity/interaction/UserCommandInteraction;)Ljava/util/Map; public static fun getVersion (Ldev/kord/core/entity/interaction/UserCommandInteraction;)I - public static fun respondWithPremiumRequired (Ldev/kord/core/entity/interaction/UserCommandInteraction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } public class dev/kord/core/entity/interaction/UserOptionValue : dev/kord/core/entity/interaction/ResolvableOptionValue { diff --git a/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt b/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt index c42e09e41190..71930d69cbc1 100644 --- a/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt +++ b/core/src/commonMain/kotlin/behavior/interaction/ActionInteractionBehavior.kt @@ -1,7 +1,6 @@ package dev.kord.core.behavior.interaction import dev.kord.common.annotation.KordUnsafe -import dev.kord.common.entity.InteractionResponseType import dev.kord.common.entity.MessageFlag import dev.kord.common.entity.Snowflake import dev.kord.core.Kord @@ -14,7 +13,6 @@ import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy import dev.kord.core.supplier.EntitySupplyStrategy.Companion.rest import dev.kord.rest.builder.message.create.InteractionResponseCreateBuilder -import dev.kord.rest.json.request.InteractionResponseCreateRequest import dev.kord.rest.request.RestRequestException import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -22,24 +20,6 @@ import kotlin.contracts.contract /** The behavior of an [ActionInteraction]. */ public interface ActionInteractionBehavior : InteractionBehavior { - /** - * Responds to the interaction with an upgrade button, only available for apps with monetization enabled. - * - * This will create an ephemeral message shown to the [user][Interaction.user] who invoked the interaction, instructing - * them that whatever they tried to do requires the premium benefits of your app. It also contains an "Upgrade" - * button to subscribe via an in-app purchase flow. The response message is static, but will be automatically - * updated with the name of your premium SKU. - * - * @throws RestRequestException if something went wrong during the request. - */ - public suspend fun respondWithPremiumRequired() { - kord.rest.interaction.createInteractionResponse( - id, - token, - InteractionResponseCreateRequest(InteractionResponseType.PremiumRequired) - ) - } - /** * Acknowledges the interaction with the intent of responding with an [ephemeral][MessageFlag.Ephemeral] message * later by calling [edit][EphemeralMessageInteractionResponseBehavior.edit] on the returned object. diff --git a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt index 3b1557197dbc..ed10bbc7883e 100644 --- a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt +++ b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt @@ -6,6 +6,7 @@ import dev.kord.common.entity.DiscordEntitlement import dev.kord.common.entity.EntitlementType import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.Optional +import dev.kord.common.entity.optional.OptionalBoolean import dev.kord.common.entity.optional.OptionalSnowflake import kotlinx.datetime.Instant import kotlinx.serialization.Serializable @@ -21,12 +22,13 @@ public data class EntitlementData( val deleted: Boolean, val endsAt: Optional = Optional.Missing(), val startsAt: Optional = Optional.Missing(), + val consumed: OptionalBoolean = OptionalBoolean.Missing, ) { public companion object { public val description: DataDescription = description(EntitlementData::id) public fun from(entity: DiscordEntitlement): EntitlementData = with(entity) { - EntitlementData(id, applicationId, type, skuId, guildId, userId, deleted, endsAt, startsAt) + EntitlementData(id, applicationId, type, skuId, guildId, userId, deleted, endsAt, startsAt, consumed) } } } diff --git a/core/src/commonMain/kotlin/cache/data/InteractionData.kt b/core/src/commonMain/kotlin/cache/data/InteractionData.kt index a6049f5ea637..80a2dc4ccdbb 100644 --- a/core/src/commonMain/kotlin/cache/data/InteractionData.kt +++ b/core/src/commonMain/kotlin/cache/data/InteractionData.kt @@ -29,7 +29,7 @@ public data class InteractionData( val appPermissions: Optional = Optional.Missing(), val locale: Optional = Optional.Missing(), val guildLocale: Optional = Optional.Missing(), - val entitlements: List + val entitlements: Optional> = Optional.Missing() ) { public companion object { public fun from(interaction: DiscordInteraction): InteractionData { @@ -54,7 +54,7 @@ public data class InteractionData( appPermissions, locale, guildLocale, - entitlements.map { EntitlementData.from(it) } + entitlements.mapList { EntitlementData.from(it) } ) } } diff --git a/core/src/commonMain/kotlin/entity/Entitlement.kt b/core/src/commonMain/kotlin/entity/Entitlement.kt index afe996a9f176..225bf7ba1921 100644 --- a/core/src/commonMain/kotlin/entity/Entitlement.kt +++ b/core/src/commonMain/kotlin/entity/Entitlement.kt @@ -2,6 +2,7 @@ package dev.kord.core.entity import dev.kord.common.entity.EntitlementType import dev.kord.common.entity.Snowflake +import dev.kord.common.entity.optional.value import dev.kord.core.Kord import dev.kord.core.behavior.GuildBehavior import dev.kord.core.behavior.UserBehavior @@ -62,7 +63,7 @@ public class Entitlement( get() = data.deleted /** - * Start date at which the entitlement is valid. + * The start date at which the entitlement is valid. */ public val startsAt: Instant? get() = data.startsAt.value @@ -73,6 +74,12 @@ public class Entitlement( public val endsAt: Instant? get() = data.endsAt.value + /** + * For consumable items, whether the entitlement has been consumed. + */ + public val consumed: Boolean? + get() = data.consumed.value + /** * The ID of the [Guild] that is granted access to this entitlement's [Sku]. */ @@ -93,7 +100,7 @@ public class Entitlement( get() = endsAt == null && startsAt == null /** - * Requests to delete this currently-active [test entitlement][Entitlement.isTest]. + * Requests to delete this currently active [test entitlement][Entitlement.isTest]. * * Discord will act as though that [user][Entitlement.user] or [guild][Entitlement.guild] *no longer* has * entitlement to your premium offering. @@ -111,7 +118,7 @@ public class Entitlement( override fun hashCode(): Int = hash(id, applicationId) - override fun equals(other: Any?): Boolean = when (other) { + override fun equals(other: Any?): Boolean = when (other) { is Entitlement -> other.id == id && other.applicationId == applicationId else -> false } diff --git a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt index bcecf424cfda..d2c2a2b06214 100644 --- a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt +++ b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt @@ -4,6 +4,8 @@ import dev.kord.common.Locale import dev.kord.common.entity.InteractionType import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.OptionalSnowflake +import dev.kord.common.entity.optional.mapList +import dev.kord.common.entity.optional.orEmpty import dev.kord.core.Kord import dev.kord.core.behavior.interaction.InteractionBehavior import dev.kord.core.cache.data.InteractionData @@ -35,14 +37,16 @@ public sealed interface Interaction : InteractionBehavior { * invoking user, representing access to premium [Sku]s. */ public val entitlements: List - get() = data.entitlements.map { Entitlement(it, kord) } + get() = data.entitlements.mapList { Entitlement(it, kord) }.orEmpty() /** * The type of the interaction. */ public val type: InteractionType get() = data.type - /** The invoker of the interaction. */ + /** + * The invoker of the interaction. + */ public val user: User /** @@ -80,6 +84,7 @@ public sealed interface Interaction : InteractionBehavior { GlobalApplicationCommandInteraction(data, kord, strategy.supply(kord)) } } + InteractionType.Ping, is InteractionType.Unknown -> error("Unsupported interaction type: $type") } } diff --git a/rest/api/rest.api b/rest/api/rest.api index ea8672e1974e..c5ad03b6f69f 100644 --- a/rest/api/rest.api +++ b/rest/api/rest.api @@ -1003,6 +1003,7 @@ public final class dev/kord/rest/builder/component/ActionRowBuilder : dev/kord/r public final fun linkButton (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V public final fun mentionableSelect (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V public static synthetic fun mentionableSelect$default (Ldev/kord/rest/builder/component/ActionRowBuilder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V + public final fun premiumButton (Ldev/kord/common/entity/Snowflake;Lkotlin/jvm/functions/Function1;)V public final fun roleSelect (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V public static synthetic fun roleSelect$default (Ldev/kord/rest/builder/component/ActionRowBuilder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V public final fun stringSelect (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -1066,6 +1067,14 @@ public final class dev/kord/rest/builder/component/MentionableSelectBuilder : de public abstract interface class dev/kord/rest/builder/component/MessageComponentBuilder : dev/kord/rest/builder/component/ComponentBuilder { } +public final class dev/kord/rest/builder/component/PremiumButtonBuilder : dev/kord/rest/builder/component/ActionRowComponentBuilder { + public fun (Ldev/kord/common/entity/Snowflake;)V + public fun build ()Ldev/kord/common/entity/DiscordChatComponent; + public synthetic fun build ()Ldev/kord/common/entity/DiscordComponent; + public final fun getSkuId ()Ldev/kord/common/entity/Snowflake; + public final fun setSkuId (Ldev/kord/common/entity/Snowflake;)V +} + public final class dev/kord/rest/builder/component/RoleSelectBuilder : dev/kord/rest/builder/component/SelectMenuBuilder { public fun (Ljava/lang/String;)V public final fun getDefaultRoles ()Ljava/util/List; @@ -6556,6 +6565,10 @@ public final class dev/kord/rest/route/Route$EmojiId : dev/kord/rest/route/Route public static final field INSTANCE Ldev/kord/rest/route/Route$EmojiId; } +public final class dev/kord/rest/route/Route$EntitlementConsume : dev/kord/rest/route/Route { + public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementConsume; +} + public final class dev/kord/rest/route/Route$EntitlementGet : dev/kord/rest/route/Route { public static final field INSTANCE Ldev/kord/rest/route/Route$EntitlementGet; } @@ -7351,6 +7364,7 @@ public final class dev/kord/rest/service/EmojiService : dev/kord/rest/service/Re public final class dev/kord/rest/service/EntitlementService : dev/kord/rest/service/RestService { public fun (Ldev/kord/rest/request/RequestHandler;)V + public final fun consumeEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun createTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/TestEntitlementCreateRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun deleteTestEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/rest/src/commonMain/kotlin/builder/component/ActionRowBuilder.kt b/rest/src/commonMain/kotlin/builder/component/ActionRowBuilder.kt index c9eae6f39357..4554b3e3ff3c 100644 --- a/rest/src/commonMain/kotlin/builder/component/ActionRowBuilder.kt +++ b/rest/src/commonMain/kotlin/builder/component/ActionRowBuilder.kt @@ -1,10 +1,7 @@ package dev.kord.rest.builder.component import dev.kord.common.annotation.KordDsl -import dev.kord.common.entity.ButtonStyle -import dev.kord.common.entity.ComponentType -import dev.kord.common.entity.DiscordChatComponent -import dev.kord.common.entity.TextInputStyle +import dev.kord.common.entity.* import dev.kord.common.entity.optional.Optional import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -13,6 +10,19 @@ import kotlin.contracts.contract public class ActionRowBuilder : MessageComponentBuilder { public val components: MutableList = mutableListOf() + public inline fun premiumButton( + skuId: Snowflake, + builder: PremiumButtonBuilder.() -> Unit + ) { + contract { + callsInPlace(builder, InvocationKind.EXACTLY_ONCE) + } + + components.add( + PremiumButtonBuilder(skuId).apply(builder) + ) + } + public inline fun interactionButton( style: ButtonStyle, customId: String, diff --git a/rest/src/commonMain/kotlin/builder/component/ButtonBuilder.kt b/rest/src/commonMain/kotlin/builder/component/ButtonBuilder.kt index 034130f84678..07d6d0e46167 100644 --- a/rest/src/commonMain/kotlin/builder/component/ButtonBuilder.kt +++ b/rest/src/commonMain/kotlin/builder/component/ButtonBuilder.kt @@ -3,12 +3,10 @@ package dev.kord.rest.builder.component import dev.kord.common.annotation.KordDsl -import dev.kord.common.entity.ButtonStyle -import dev.kord.common.entity.ComponentType -import dev.kord.common.entity.DiscordChatComponent -import dev.kord.common.entity.DiscordPartialEmoji +import dev.kord.common.entity.* import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.delegate.delegate +import dev.kord.common.entity.optional.optionalSnowflake @KordDsl public sealed class ButtonBuilder : ActionRowComponentBuilder() { @@ -75,3 +73,20 @@ public sealed class ButtonBuilder : ActionRowComponentBuilder() { ) } } + + +/** + * A button that prompts the user to purchase a [Sku][DiscordSku]. + * + * @param skuId The ID of the [Sku][DiscordSku] to prompt for purchase when clicked. + */ +@KordDsl +public class PremiumButtonBuilder( + public var skuId: Snowflake +) : ActionRowComponentBuilder() { + override fun build(): DiscordChatComponent = DiscordChatComponent( + ComponentType.Button, + style = Optional(ButtonStyle.Premium), + skuId = skuId.optionalSnowflake(), + ) +} diff --git a/rest/src/commonMain/kotlin/route/Route.kt b/rest/src/commonMain/kotlin/route/Route.kt index c25e0cf2aa39..3461f352daea 100644 --- a/rest/src/commonMain/kotlin/route/Route.kt +++ b/rest/src/commonMain/kotlin/route/Route.kt @@ -744,6 +744,13 @@ public sealed class Route( * https://discord.com/developers/docs/monetization/entitlements */ + public object EntitlementConsume : + Route( + HttpMethod.Post, + "/applications/$ApplicationId/entitlements/$EntitlementId/consume", + NoStrategy + ) + public object EntitlementsList : Route>( HttpMethod.Get, diff --git a/rest/src/commonMain/kotlin/service/EntitlementService.kt b/rest/src/commonMain/kotlin/service/EntitlementService.kt index 20a1a22c09c8..01ea4b0b8629 100644 --- a/rest/src/commonMain/kotlin/service/EntitlementService.kt +++ b/rest/src/commonMain/kotlin/service/EntitlementService.kt @@ -9,23 +9,10 @@ import dev.kord.rest.route.Route public class EntitlementService(requestHandler: RequestHandler) : RestService(requestHandler) { - public suspend fun listEntitlements( - applicationId: Snowflake, - request: EntitlementsListRequest, - ): List = call(Route.EntitlementsList) { - keys[Route.ApplicationId] = applicationId - request.userId?.let { parameter("user_id", it) } - request.skuIds.joinToString(",").ifBlank { null }?.let { parameter("sku_ids", it) } - request.limit?.let { parameter("limit", it) } - request.guildId?.let { parameter("guild_id", it) } - request.excludeEnded?.let { parameter("exclude_ended", it) } - request.position?.let { parameter(it.key, it.value) } - } - - public suspend fun getEntitlement( + public suspend fun consumeEntitlement( applicationId: Snowflake, entitlementId: Snowflake, - ): DiscordEntitlement = call(Route.EntitlementGet) { + ): Unit = call(Route.EntitlementConsume) { keys[Route.ApplicationId] = applicationId keys[Route.EntitlementId] = entitlementId } @@ -46,4 +33,25 @@ public class EntitlementService(requestHandler: RequestHandler) : RestService(re keys[Route.EntitlementId] = entitlementId } + public suspend fun listEntitlements( + applicationId: Snowflake, + request: EntitlementsListRequest, + ): List = call(Route.EntitlementsList) { + keys[Route.ApplicationId] = applicationId + request.userId?.let { parameter("user_id", it) } + request.skuIds.joinToString(",").ifBlank { null }?.let { parameter("sku_ids", it) } + request.limit?.let { parameter("limit", it) } + request.guildId?.let { parameter("guild_id", it) } + request.excludeEnded?.let { parameter("exclude_ended", it) } + request.position?.let { parameter(it.key, it.value) } + } + + public suspend fun getEntitlement( + applicationId: Snowflake, + entitlementId: Snowflake, + ): DiscordEntitlement = call(Route.EntitlementGet) { + keys[Route.ApplicationId] = applicationId + keys[Route.EntitlementId] = entitlementId + } + } From 9cea72fc9ce94155d48a30fa91bffc8fcd09caba Mon Sep 17 00:00:00 2001 From: viztea Date: Thu, 11 Jul 2024 13:46:35 -0700 Subject: [PATCH 29/30] feat: rework list entitlements --- buildSrc/src/main/kotlin/Documentation.kt | 4 +- core/api/core.api | 16 +++--- core/src/commonMain/kotlin/Kord.kt | 26 ++++++---- .../kotlin/cache/data/EntitlementData.kt | 4 ++ core/src/commonMain/kotlin/entity/Sku.kt | 19 +------ .../kotlin/supplier/CacheEntitySupplier.kt | 33 ++++++++---- .../kotlin/supplier/EntitySupplier.kt | 20 ++++---- .../kotlin/supplier/FallbackEntitySupplier.kt | 20 +++++--- .../kotlin/supplier/RestEntitySupplier.kt | 31 +++++------ .../kotlin/supplier/StoreEntitySupplier.kt | 8 ++- rest/api/rest.api | 20 ++++++++ .../EntitlementsListRequestBuilder.kt | 51 +++++++++++++++++++ 12 files changed, 164 insertions(+), 88 deletions(-) create mode 100644 rest/src/commonMain/kotlin/builder/entitlement/EntitlementsListRequestBuilder.kt diff --git a/buildSrc/src/main/kotlin/Documentation.kt b/buildSrc/src/main/kotlin/Documentation.kt index 090ed8310b63..d3f17efe08ab 100644 --- a/buildSrc/src/main/kotlin/Documentation.kt +++ b/buildSrc/src/main/kotlin/Documentation.kt @@ -1,6 +1,6 @@ import org.gradle.kotlin.dsl.assign import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import java.net.URL +import java.net.URI fun AbstractDokkaLeafTask.applyKordDokkaOptions() { @@ -16,7 +16,7 @@ fun AbstractDokkaLeafTask.applyKordDokkaOptions() { sourceLink { localDirectory = project.projectDir - remoteUrl = URL("https://github.com/kordlib/kord/blob/${project.commitHash}/${project.name}") + remoteUrl = URI.create("https://github.com/kordlib/kord/blob/${project.commitHash}/${project.name}").toURL() remoteLineSuffix = "#L" } diff --git a/core/api/core.api b/core/api/core.api index bab5c50b9149..19297e29b69a 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -42,8 +42,8 @@ public final class dev/kord/core/Kord : kotlinx/coroutines/CoroutineScope { public final fun getDefaultSupplier ()Ldev/kord/core/supplier/EntitySupplier; public final fun getEntitlement (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun getEntitlements (Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun getEntitlements$default (Ldev/kord/core/Kord;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun getEntitlements (Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun getEntitlements$default (Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplyStrategy;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun getEvents ()Lkotlinx/coroutines/flow/SharedFlow; public final fun getGateway ()Ldev/kord/core/gateway/MasterGateway; public final fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -3551,6 +3551,7 @@ public final class dev/kord/core/cache/data/EntitlementData { public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getConsumed ()Ldev/kord/common/entity/optional/OptionalBoolean; public final fun getDeleted ()Z + public final fun getEnded ()Z public final fun getEndsAt ()Ldev/kord/common/entity/optional/Optional; public final fun getGuildId ()Ldev/kord/common/entity/optional/OptionalSnowflake; public final fun getId ()Ldev/kord/common/entity/Snowflake; @@ -7032,8 +7033,6 @@ public final class dev/kord/core/entity/Sku : dev/kord/core/entity/KordEntity, d public fun equals (Ljava/lang/Object;)Z public final fun getApplicationId ()Ldev/kord/common/entity/Snowflake; public final fun getData ()Ldev/kord/common/entity/DiscordSku; - public final fun getEntitlements (Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun getEntitlements$default (Ldev/kord/core/entity/Sku;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public final fun getFlags ()Ldev/kord/common/entity/SkuFlags; public fun getId ()Ldev/kord/common/entity/Snowflake; public fun getKord ()Ldev/kord/core/Kord; @@ -13626,7 +13625,7 @@ public final class dev/kord/core/supplier/CacheEntitySupplier : dev/kord/core/su public fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; public fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/EntitlementsListRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -13719,7 +13718,7 @@ public abstract interface class dev/kord/core/supplier/EntitySupplier { public abstract fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; public abstract fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/EntitlementsListRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -13797,7 +13796,6 @@ public final class dev/kord/core/supplier/EntitySupplier$DefaultImpls { public static synthetic fun getCurrentUserGuilds$default (Ldev/kord/core/supplier/EntitySupplier;Ljava/lang/Integer;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; public static fun getEmoji (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getEntitlement (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun getEntitlements$default (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static fun getFollowupMessage (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static fun getGlobalApplicationCommand (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun getGlobalApplicationCommands$default (Ldev/kord/core/supplier/EntitySupplier;Ldev/kord/common/entity/Snowflake;Ljava/lang/Boolean;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; @@ -13880,7 +13878,7 @@ public final class dev/kord/core/supplier/RestEntitySupplier : dev/kord/core/sup public fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; public fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/EntitlementsListRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -13982,7 +13980,7 @@ public final class dev/kord/core/supplier/StoreEntitySupplier : dev/kord/core/su public fun getEmojis (Ldev/kord/common/entity/Snowflake;)Lkotlinx/coroutines/flow/Flow; public fun getEntitlement (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getEntitlementOrNull (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Ljava/lang/Integer;Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getEntitlements (Ldev/kord/common/entity/Snowflake;Ldev/kord/rest/json/request/EntitlementsListRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessage (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getFollowupMessageOrNull (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun getGlobalApplicationCommand (Ldev/kord/common/entity/Snowflake;Ldev/kord/common/entity/Snowflake;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/core/src/commonMain/kotlin/Kord.kt b/core/src/commonMain/kotlin/Kord.kt index 3370dfd13027..be33e3999312 100644 --- a/core/src/commonMain/kotlin/Kord.kt +++ b/core/src/commonMain/kotlin/Kord.kt @@ -30,6 +30,7 @@ import dev.kord.gateway.Gateway import dev.kord.gateway.builder.LoginBuilder import dev.kord.gateway.builder.PresenceBuilder import dev.kord.rest.builder.application.ApplicationRoleConnectionMetadataRecordsBuilder +import dev.kord.rest.builder.entitlement.EntitlementsListRequestBuilder import dev.kord.rest.builder.guild.GuildCreateBuilder import dev.kord.rest.builder.interaction.* import dev.kord.rest.builder.user.CurrentUserModifyBuilder @@ -379,17 +380,22 @@ public class Kord( rest.sku.listSkus(selfId).map { Sku(it, this) } /** - * Requests to get a list of [Entitlement]s with the given [skuId], [userId], or [guildId]. + * Requests to get a list of [Entitlement]s. * * @throws [RequestException] if anything went wrong during the request. */ - public suspend fun getEntitlements( - limit: Int? = null, - skuId: Snowflake? = null, - userId: Snowflake? = null, - guildId: Snowflake? = null, + public suspend inline fun getEntitlements( strategy: EntitySupplyStrategy<*> = resources.defaultStrategy, - ): Flow = strategy.supply(this).getEntitlements(selfId, skuId, limit, userId, guildId) + builder: EntitlementsListRequestBuilder.() -> Unit = {}, + ): Flow { + contract { callsInPlace(builder, InvocationKind.EXACTLY_ONCE) } + + val request = EntitlementsListRequestBuilder() + .apply(builder) + .toRequest() + + return strategy.supply(this).getEntitlements(selfId, request) + } /** * Requests to get the [Entitlement] with the given [id] @@ -405,7 +411,8 @@ public class Kord( * * @throws [RequestException] if anything went wrong during the request. */ - public suspend fun getEntitlementOrNull(id: Snowflake): Entitlement? = defaultSupplier.getEntitlementOrNull(selfId, id) + public suspend fun getEntitlementOrNull(id: Snowflake): Entitlement? = + defaultSupplier.getEntitlementOrNull(selfId, id) /** * Requests to create a new [test entitlement][Entitlement] with the given [skuId], [ownerId] and [ownerType]. @@ -417,7 +424,8 @@ public class Kord( ownerId: Snowflake, ownerType: EntitlementOwnerType, ): Entitlement { - val response = rest.entitlement.createTestEntitlement(selfId, TestEntitlementCreateRequest(skuId, ownerId, ownerType)) + val response = + rest.entitlement.createTestEntitlement(selfId, TestEntitlementCreateRequest(skuId, ownerId, ownerType)) val data = EntitlementData.from(response) return Entitlement(data, this) diff --git a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt index ed10bbc7883e..cc288ce8a824 100644 --- a/core/src/commonMain/kotlin/cache/data/EntitlementData.kt +++ b/core/src/commonMain/kotlin/cache/data/EntitlementData.kt @@ -8,6 +8,7 @@ import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.OptionalBoolean import dev.kord.common.entity.optional.OptionalSnowflake +import kotlinx.datetime.Clock import kotlinx.datetime.Instant import kotlinx.serialization.Serializable @@ -24,6 +25,9 @@ public data class EntitlementData( val startsAt: Optional = Optional.Missing(), val consumed: OptionalBoolean = OptionalBoolean.Missing, ) { + val ended: Boolean + get() = endsAt.value?.let { Clock.System.now() >= it } ?: false + public companion object { public val description: DataDescription = description(EntitlementData::id) diff --git a/core/src/commonMain/kotlin/entity/Sku.kt b/core/src/commonMain/kotlin/entity/Sku.kt index 3cbd98f89080..39df514c077b 100644 --- a/core/src/commonMain/kotlin/entity/Sku.kt +++ b/core/src/commonMain/kotlin/entity/Sku.kt @@ -4,12 +4,10 @@ import dev.kord.common.entity.DiscordSku import dev.kord.common.entity.SkuFlags import dev.kord.common.entity.SkuType import dev.kord.common.entity.Snowflake -import dev.kord.common.exception.RequestException import dev.kord.core.Kord import dev.kord.core.hash import dev.kord.core.supplier.EntitySupplier import dev.kord.core.supplier.EntitySupplyStrategy -import kotlinx.coroutines.flow.Flow /** * An instance of a [Discord Sku](https://discord.com/developers/docs/monetization/skus). @@ -50,26 +48,11 @@ public class Sku( */ public val flags: SkuFlags get() = data.flags - /** - * Requests to get the entitlements for this SKU. - * - * @param limit The maximum number of entitlements to return. Default is 100. - * @param userId The ID of the user to get entitlements for. If not provided, the current user is assumed. - * @param guildId The ID of the guild to get entitlements for. If not provided, entitlements for all guilds are returned. - * - * @throws [RequestException] if anything went wrong during the request. - */ - public suspend fun getEntitlements( - limit: Int? = null, - userId: Snowflake? = null, - guildId: Snowflake? = null, - ): Flow = supplier.getEntitlements(applicationId, id, limit, userId, guildId) - override fun withStrategy(strategy: EntitySupplyStrategy<*>): Sku = Sku(data, kord, strategy.supply(kord)) override fun hashCode(): Int = hash(id, applicationId) - override fun equals(other: Any?): Boolean = when (other) { + override fun equals(other: Any?): Boolean = when (other) { is Sku -> other.id == id && other.applicationId == applicationId else -> false } diff --git a/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt index d8da61aa4855..c7b4d69528a0 100644 --- a/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/CacheEntitySupplier.kt @@ -24,6 +24,8 @@ import dev.kord.core.entity.channel.thread.ThreadMember import dev.kord.core.entity.interaction.followup.FollowupMessage import dev.kord.core.exception.EntityNotFoundException import dev.kord.gateway.Gateway +import dev.kord.rest.json.request.EntitlementsListRequest +import dev.kord.rest.route.Position import kotlinx.coroutines.flow.* import kotlinx.datetime.Instant @@ -437,7 +439,10 @@ public class CacheEntitySupplier(private val kord: Kord) : EntitySupplier { return GlobalApplicationCommand(data, kord.rest.interaction) } - override fun getGlobalApplicationCommands(applicationId: Snowflake, withLocalizations: Boolean?): Flow = + override fun getGlobalApplicationCommands( + applicationId: Snowflake, + withLocalizations: Boolean? + ): Flow = cache.query { idEq(ApplicationCommandData::guildId, null) idEq(ApplicationCommandData::applicationId, applicationId) @@ -610,22 +615,23 @@ public class CacheEntitySupplier(private val kord: Kord) : EntitySupplier { override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake?, - limit: Int?, - userId: Snowflake?, - guildId: Snowflake? + request: EntitlementsListRequest ): Flow { - checkLimit(limit) + checkLimit(request.limit) return cache .query { idEq(EntitlementData::applicationId, applicationId) - skuId?.let { idEq(EntitlementData::skuId, it) } - userId?.let { idEq(EntitlementData::userId, it) } - guildId?.let { idEq(EntitlementData::guildId, it) } + request.userId?.let { idEq(EntitlementData::userId, it) } + request.guildId?.let { idEq(EntitlementData::guildId, it) } } .asFlow() + .filter { + val containsSku = request.skuIds.isEmpty() || it.skuId in request.skuIds + val excludeEnded = request.excludeEnded == true && it.ended + containsSku && !excludeEnded && followsPosition(request.position, it.id) + } .map { Entitlement(it, kord) } - .limit(limit) + .limit(request.limit) } override fun toString(): String = "CacheEntitySupplier(cache=$cache)" @@ -636,4 +642,11 @@ private fun checkLimit(limit: Int?) { require(limit == null || limit > 0) { "At least 1 item should be requested, but got $limit." } } +private fun followsPosition(position: Position?, id: Snowflake): Boolean = when (position) { + is Position.Before -> id < position.value + is Position.After -> id > position.value + is Position.Around -> throw UnsupportedOperationException("Around is not supported for this operation.") + else -> true +} + private fun Flow.limit(limit: Int?): Flow = if (limit == null) this else take(limit) diff --git a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt index 4424edcfb1f6..55b53eae52b3 100644 --- a/core/src/commonMain/kotlin/supplier/EntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/EntitySupplier.kt @@ -16,6 +16,7 @@ import dev.kord.core.entity.channel.thread.ThreadChannel import dev.kord.core.entity.channel.thread.ThreadMember import dev.kord.core.entity.interaction.followup.FollowupMessage import dev.kord.core.exception.EntityNotFoundException +import dev.kord.rest.json.request.EntitlementsListRequest import kotlinx.coroutines.flow.Flow import kotlinx.datetime.Instant @@ -474,7 +475,11 @@ public interface EntitySupplier { limit: Int? = null, ): Flow - public fun getGuildApplicationCommands(applicationId: Snowflake, guildId: Snowflake, withLocalizations: Boolean? = null): Flow + public fun getGuildApplicationCommands( + applicationId: Snowflake, + guildId: Snowflake, + withLocalizations: Boolean? = null + ): Flow public suspend fun getGuildApplicationCommandOrNull( applicationId: Snowflake, @@ -505,7 +510,10 @@ public interface EntitySupplier { getGlobalApplicationCommandOrNull(applicationId, commandId) ?: EntityNotFoundException.applicationCommandNotFound(commandId) - public fun getGlobalApplicationCommands(applicationId: Snowflake, withLocalizations: Boolean? = null): Flow + public fun getGlobalApplicationCommands( + applicationId: Snowflake, + withLocalizations: Boolean? = null + ): Flow public suspend fun getApplicationCommandPermissionsOrNull( @@ -666,13 +674,7 @@ public interface EntitySupplier { * The returned flow is lazily executed, any [RequestException] will be thrown on * [terminal operators](https://kotlinlang.org/docs/reference/coroutines/flow.html#terminal-flow-operators) instead. */ - public suspend fun getEntitlements( - applicationId: Snowflake, - skuId: Snowflake? = null, - limit: Int? = null, - userId: Snowflake? = null, - guildId: Snowflake? = null - ): Flow + public suspend fun getEntitlements(applicationId: Snowflake, request: EntitlementsListRequest): Flow } diff --git a/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt index 1998efcca90c..776905cd3e4a 100644 --- a/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/FallbackEntitySupplier.kt @@ -12,6 +12,7 @@ import dev.kord.core.entity.channel.thread.ThreadChannel import dev.kord.core.entity.channel.thread.ThreadMember import dev.kord.core.entity.interaction.followup.FollowupMessage import dev.kord.core.switchIfEmpty +import dev.kord.rest.json.request.EntitlementsListRequest import kotlinx.coroutines.flow.Flow import kotlinx.datetime.Instant @@ -185,7 +186,10 @@ private class FallbackEntitySupplier(val first: EntitySupplier, val second: Enti ) - override fun getGlobalApplicationCommands(applicationId: Snowflake, withLocalizations: Boolean?): Flow = + override fun getGlobalApplicationCommands( + applicationId: Snowflake, + withLocalizations: Boolean? + ): Flow = first.getGlobalApplicationCommands(applicationId, withLocalizations) .switchIfEmpty(second.getGlobalApplicationCommands(applicationId, withLocalizations)) @@ -278,16 +282,16 @@ private class FallbackEntitySupplier(val first: EntitySupplier, val second: Enti first.getAutoModerationRuleOrNull(guildId, ruleId) ?: second.getAutoModerationRuleOrNull(guildId, ruleId) override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? = - first.getEntitlementOrNull(applicationId, entitlementId) ?: second.getEntitlementOrNull(applicationId, entitlementId) + first.getEntitlementOrNull(applicationId, entitlementId) ?: second.getEntitlementOrNull( + applicationId, + entitlementId + ) override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake?, - limit: Int?, - userId: Snowflake?, - guildId: Snowflake? - ): Flow = first.getEntitlements(applicationId, skuId, limit, userId, guildId) - .switchIfEmpty(second.getEntitlements(applicationId, skuId, limit, userId, guildId)) + request: EntitlementsListRequest + ): Flow = first.getEntitlements(applicationId, request) + .switchIfEmpty(second.getEntitlements(applicationId, request)) override fun toString(): String = "FallbackEntitySupplier(first=$first, second=$second)" } diff --git a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt index 53ca9afc9c8f..ba741588628a 100644 --- a/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/RestEntitySupplier.kt @@ -447,7 +447,10 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { GlobalApplicationCommand(data, interaction) } - override fun getGlobalApplicationCommands(applicationId: Snowflake, withLocalizations: Boolean?): Flow = flow { + override fun getGlobalApplicationCommands( + applicationId: Snowflake, + withLocalizations: Boolean? + ): Flow = flow { for (command in interaction.getGlobalApplicationCommands(applicationId, withLocalizations)) { val data = ApplicationCommandData.from(command) emit(GlobalApplicationCommand(data, interaction)) @@ -648,30 +651,22 @@ public class RestEntitySupplier(public val kord: Kord) : EntitySupplier { GuildApplicationCommand(data, interaction) } - override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? = catchNotFound { - val response = entitlement.getEntitlement(applicationId, entitlementId) - val data = EntitlementData.from(response) - Entitlement(data, kord) - } + override suspend fun getEntitlementOrNull(applicationId: Snowflake, entitlementId: Snowflake): Entitlement? = + catchNotFound { + val response = entitlement.getEntitlement(applicationId, entitlementId) + val data = EntitlementData.from(response) + Entitlement(data, kord) + } // maxBatchSize: see https://discord.com/developers/docs/monetization/entitlements#list-entitlements override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake?, - limit: Int?, - userId: Snowflake?, - guildId: Snowflake? - ): Flow = limitedPagination(limit, maxBatchSize = 100) { batchSize -> + request: EntitlementsListRequest + ): Flow = limitedPagination(request.limit, maxBatchSize = 100) { batchSize -> paginateForwards(batchSize, idSelector = { it.id }) { position -> entitlement.listEntitlements( applicationId = applicationId, - request = EntitlementsListRequest( - position = position, - limit = batchSize, - skuIds = listOfNotNull(skuId), - userId = userId, - guildId = guildId - ) + request = request.copy(position = position, limit = batchSize) ) }.map { val data = EntitlementData.from(it) diff --git a/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt b/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt index 8a10df397b65..f515f3fa1dbe 100644 --- a/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt +++ b/core/src/commonMain/kotlin/supplier/StoreEntitySupplier.kt @@ -13,6 +13,7 @@ import dev.kord.core.entity.channel.TopGuildChannel import dev.kord.core.entity.channel.thread.ThreadChannel import dev.kord.core.entity.channel.thread.ThreadMember import dev.kord.core.entity.interaction.followup.FollowupMessage +import dev.kord.rest.json.request.EntitlementsListRequest import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.onEach import kotlinx.datetime.Instant @@ -318,11 +319,8 @@ public class StoreEntitySupplier( override suspend fun getEntitlements( applicationId: Snowflake, - skuId: Snowflake?, - limit: Int?, - userId: Snowflake?, - guildId: Snowflake? - ): Flow = storeOnEach(supplier.getEntitlements(applicationId, skuId, limit, userId, guildId)) { it.data } + request: EntitlementsListRequest + ): Flow = storeOnEach(supplier.getEntitlements(applicationId, request)) { it.data } private suspend inline fun storeAndReturn(value: T?, transform: (T) -> R): T? { if (value == null) return null diff --git a/rest/api/rest.api b/rest/api/rest.api index c5ad03b6f69f..ad9a11104008 100644 --- a/rest/api/rest.api +++ b/rest/api/rest.api @@ -1148,6 +1148,26 @@ public final class dev/kord/rest/builder/component/UserSelectBuilder : dev/kord/ public final fun getDefaultUsers ()Ljava/util/List; } +public final class dev/kord/rest/builder/entitlement/EntitlementsListRequestBuilder : dev/kord/rest/builder/RequestBuilder { + public fun ()V + public final fun after (Ldev/kord/common/entity/Snowflake;)V + public final fun before (Ldev/kord/common/entity/Snowflake;)V + public final fun getExcludeEnded ()Ljava/lang/Boolean; + public final fun getGuildId ()Ldev/kord/common/entity/Snowflake; + public final fun getLimit ()Ljava/lang/Integer; + public final fun getPosition ()Ldev/kord/rest/route/Position$BeforeOrAfter; + public final fun getSkuIds ()Ljava/util/List; + public final fun getUserId ()Ldev/kord/common/entity/Snowflake; + public final fun setExcludeEnded (Ljava/lang/Boolean;)V + public final fun setGuildId (Ldev/kord/common/entity/Snowflake;)V + public final fun setLimit (Ljava/lang/Integer;)V + public final fun setPosition (Ldev/kord/rest/route/Position$BeforeOrAfter;)V + public final fun setSkuIds (Ljava/util/List;)V + public final fun setUserId (Ldev/kord/common/entity/Snowflake;)V + public fun toRequest ()Ldev/kord/rest/json/request/EntitlementsListRequest; + public synthetic fun toRequest ()Ljava/lang/Object; +} + public final class dev/kord/rest/builder/guild/CurrentVoiceStateModifyBuilder : dev/kord/rest/builder/RequestBuilder { public fun ()V public final fun getChannelId ()Ldev/kord/common/entity/Snowflake; diff --git a/rest/src/commonMain/kotlin/builder/entitlement/EntitlementsListRequestBuilder.kt b/rest/src/commonMain/kotlin/builder/entitlement/EntitlementsListRequestBuilder.kt new file mode 100644 index 000000000000..c6fcccb8a7e5 --- /dev/null +++ b/rest/src/commonMain/kotlin/builder/entitlement/EntitlementsListRequestBuilder.kt @@ -0,0 +1,51 @@ +package dev.kord.rest.builder.entitlement + +import dev.kord.common.annotation.KordDsl +import dev.kord.common.entity.Snowflake +import dev.kord.rest.builder.RequestBuilder +import dev.kord.rest.json.request.EntitlementsListRequest +import dev.kord.rest.route.Position + +@KordDsl +public class EntitlementsListRequestBuilder : RequestBuilder { + /** + * User ID to look up entitlements for. + */ + public var userId: Snowflake? = null + + /** + * An optional list of SKU iDs to check entitlements for. + */ + public var skuIds: MutableList = mutableListOf() + + /** + * Retrieve entitlements before or after a specific entitlement ID. + */ + public var position: Position.BeforeOrAfter? = null + + /** + * The maximum number of entitlements to return. + */ + public var limit: Int? = null + + /** + * The guild ID to check entitlements for. + */ + public var guildId: Snowflake? = null + + /** + * Whether to exclude ended entitlements. + */ + public var excludeEnded: Boolean? = null + + public fun after(id: Snowflake) { + position = Position.After(id) + } + + public fun before(id: Snowflake) { + position = Position.Before(id) + } + + override fun toRequest(): EntitlementsListRequest = + EntitlementsListRequest(userId, skuIds, position, limit, guildId, excludeEnded) +} From be62d24f2c9deccb5449eb78f0764702dcbf3460 Mon Sep 17 00:00:00 2001 From: viztea Date: Thu, 11 Jul 2024 13:59:26 -0700 Subject: [PATCH 30/30] chore: api dump --- common/api/common.api | 20 +- common/api/common.klib.api | 270 +++++++++++++++++- .../common/entity/EntitlementOwnerType.kt | 1 - .../dev/kord/common/entity/EntitlementType.kt | 1 - .../kotlin/dev/kord/common/entity/SkuFlag.kt | 1 - .../kotlin/dev/kord/common/entity/SkuType.kt | 1 - core/api/core.api | 10 +- core/api/core.klib.api | 205 ++++++++++++- gateway/api/gateway.klib.api | 48 ++++ rest/api/rest.api | 10 +- rest/api/rest.klib.api | 134 +++++++++ 11 files changed, 671 insertions(+), 30 deletions(-) diff --git a/common/api/common.api b/common/api/common.api index 05fd97141e6f..3820be33785a 100644 --- a/common/api/common.api +++ b/common/api/common.api @@ -3685,13 +3685,13 @@ public final class dev/kord/common/entity/DiscordEntitlement { public fun toString ()Ljava/lang/String; } -public final class dev/kord/common/entity/DiscordEntitlement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { +public synthetic class dev/kord/common/entity/DiscordEntitlement$$serializer : kotlinx/serialization/internal/GeneratedSerializer { public static final field INSTANCE Ldev/kord/common/entity/DiscordEntitlement$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordEntitlement; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordEntitlement; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordEntitlement;)V + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordEntitlement;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } @@ -5625,13 +5625,13 @@ public final class dev/kord/common/entity/DiscordSku { public fun toString ()Ljava/lang/String; } -public final class dev/kord/common/entity/DiscordSku$$serializer : kotlinx/serialization/internal/GeneratedSerializer { +public synthetic class dev/kord/common/entity/DiscordSku$$serializer : kotlinx/serialization/internal/GeneratedSerializer { public static final field INSTANCE Ldev/kord/common/entity/DiscordSku$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordSku; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/DiscordSku; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordSku;)V + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/DiscordSku;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } diff --git a/common/api/common.klib.api b/common/api/common.klib.api index 9308b8f8f82a..fbf43936ed52 100644 --- a/common/api/common.klib.api +++ b/common/api/common.klib.api @@ -1701,7 +1701,7 @@ final class dev.kord.common.entity/DiscordChannel { // dev.kord.common.entity/Di } final class dev.kord.common.entity/DiscordChatComponent : dev.kord.common.entity/DiscordComponent { // dev.kord.common.entity/DiscordChatComponent|null[0] - constructor (dev.kord.common.entity/ComponentType, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ...) // dev.kord.common.entity/DiscordChatComponent.|(dev.kord.common.entity.ComponentType;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>){}[0] + constructor (dev.kord.common.entity/ComponentType, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/OptionalSnowflake = ...) // dev.kord.common.entity/DiscordChatComponent.|(dev.kord.common.entity.ComponentType;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.OptionalSnowflake){}[0] final val channelTypes // dev.kord.common.entity/DiscordChatComponent.channelTypes|{}channelTypes[0] final fun (): dev.kord.common.entity.optional/Optional> // dev.kord.common.entity/DiscordChatComponent.channelTypes.|(){}[0] @@ -1731,6 +1731,8 @@ final class dev.kord.common.entity/DiscordChatComponent : dev.kord.common.entity final fun (): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordChatComponent.placeholder.|(){}[0] final val required // dev.kord.common.entity/DiscordChatComponent.required|{}required[0] final fun (): dev.kord.common.entity.optional/OptionalBoolean // dev.kord.common.entity/DiscordChatComponent.required.|(){}[0] + final val skuId // dev.kord.common.entity/DiscordChatComponent.skuId|{}skuId[0] + final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordChatComponent.skuId.|(){}[0] final val style // dev.kord.common.entity/DiscordChatComponent.style|{}style[0] final fun (): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordChatComponent.style.|(){}[0] final val type // dev.kord.common.entity/DiscordChatComponent.type|{}type[0] @@ -1750,6 +1752,7 @@ final class dev.kord.common.entity/DiscordChatComponent : dev.kord.common.entity final fun component16(): dev.kord.common.entity.optional/OptionalBoolean // dev.kord.common.entity/DiscordChatComponent.component16|component16(){}[0] final fun component17(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordChatComponent.component17|component17(){}[0] final fun component18(): dev.kord.common.entity.optional/Optional> // dev.kord.common.entity/DiscordChatComponent.component18|component18(){}[0] + final fun component19(): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordChatComponent.component19|component19(){}[0] final fun component2(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordChatComponent.component2|component2(){}[0] final fun component3(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordChatComponent.component3|component3(){}[0] final fun component4(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordChatComponent.component4|component4(){}[0] @@ -1758,7 +1761,7 @@ final class dev.kord.common.entity/DiscordChatComponent : dev.kord.common.entity final fun component7(): dev.kord.common.entity.optional/OptionalBoolean // dev.kord.common.entity/DiscordChatComponent.component7|component7(){}[0] final fun component8(): dev.kord.common.entity.optional/Optional> // dev.kord.common.entity/DiscordChatComponent.component8|component8(){}[0] final fun component9(): dev.kord.common.entity.optional/Optional> // dev.kord.common.entity/DiscordChatComponent.component9|component9(){}[0] - final fun copy(dev.kord.common.entity/ComponentType = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ...): dev.kord.common.entity/DiscordChatComponent // dev.kord.common.entity/DiscordChatComponent.copy|copy(dev.kord.common.entity.ComponentType;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>){}[0] + final fun copy(dev.kord.common.entity/ComponentType = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/OptionalSnowflake = ...): dev.kord.common.entity/DiscordChatComponent // dev.kord.common.entity/DiscordChatComponent.copy|copy(dev.kord.common.entity.ComponentType;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.OptionalSnowflake){}[0] final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/DiscordChatComponent.equals|equals(kotlin.Any?){}[0] final fun hashCode(): kotlin/Int // dev.kord.common.entity/DiscordChatComponent.hashCode|hashCode(){}[0] final fun toString(): kotlin/String // dev.kord.common.entity/DiscordChatComponent.toString|toString(){}[0] @@ -2249,6 +2252,61 @@ final class dev.kord.common.entity/DiscordEmoji { // dev.kord.common.entity/Disc } } +final class dev.kord.common.entity/DiscordEntitlement { // dev.kord.common.entity/DiscordEntitlement|null[0] + constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity/EntitlementType, kotlin/Boolean, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/OptionalBoolean = ...) // dev.kord.common.entity/DiscordEntitlement.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.EntitlementType;kotlin.Boolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.OptionalBoolean){}[0] + + final val applicationId // dev.kord.common.entity/DiscordEntitlement.applicationId|{}applicationId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordEntitlement.applicationId.|(){}[0] + final val consumed // dev.kord.common.entity/DiscordEntitlement.consumed|{}consumed[0] + final fun (): dev.kord.common.entity.optional/OptionalBoolean // dev.kord.common.entity/DiscordEntitlement.consumed.|(){}[0] + final val deleted // dev.kord.common.entity/DiscordEntitlement.deleted|{}deleted[0] + final fun (): kotlin/Boolean // dev.kord.common.entity/DiscordEntitlement.deleted.|(){}[0] + final val endsAt // dev.kord.common.entity/DiscordEntitlement.endsAt|{}endsAt[0] + final fun (): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordEntitlement.endsAt.|(){}[0] + final val guildId // dev.kord.common.entity/DiscordEntitlement.guildId|{}guildId[0] + final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordEntitlement.guildId.|(){}[0] + final val id // dev.kord.common.entity/DiscordEntitlement.id|{}id[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordEntitlement.id.|(){}[0] + final val skuId // dev.kord.common.entity/DiscordEntitlement.skuId|{}skuId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordEntitlement.skuId.|(){}[0] + final val startsAt // dev.kord.common.entity/DiscordEntitlement.startsAt|{}startsAt[0] + final fun (): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordEntitlement.startsAt.|(){}[0] + final val type // dev.kord.common.entity/DiscordEntitlement.type|{}type[0] + final fun (): dev.kord.common.entity/EntitlementType // dev.kord.common.entity/DiscordEntitlement.type.|(){}[0] + final val userId // dev.kord.common.entity/DiscordEntitlement.userId|{}userId[0] + final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordEntitlement.userId.|(){}[0] + + final fun component1(): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordEntitlement.component1|component1(){}[0] + final fun component10(): dev.kord.common.entity.optional/OptionalBoolean // dev.kord.common.entity/DiscordEntitlement.component10|component10(){}[0] + final fun component2(): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordEntitlement.component2|component2(){}[0] + final fun component3(): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordEntitlement.component3|component3(){}[0] + final fun component4(): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordEntitlement.component4|component4(){}[0] + final fun component5(): dev.kord.common.entity/EntitlementType // dev.kord.common.entity/DiscordEntitlement.component5|component5(){}[0] + final fun component6(): kotlin/Boolean // dev.kord.common.entity/DiscordEntitlement.component6|component6(){}[0] + final fun component7(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordEntitlement.component7|component7(){}[0] + final fun component8(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordEntitlement.component8|component8(){}[0] + final fun component9(): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordEntitlement.component9|component9(){}[0] + final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity/EntitlementType = ..., kotlin/Boolean = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/OptionalBoolean = ...): dev.kord.common.entity/DiscordEntitlement // dev.kord.common.entity/DiscordEntitlement.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.EntitlementType;kotlin.Boolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.OptionalBoolean){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/DiscordEntitlement.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.common.entity/DiscordEntitlement.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.common.entity/DiscordEntitlement.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // dev.kord.common.entity/DiscordEntitlement.$serializer|null[0] + final val descriptor // dev.kord.common.entity/DiscordEntitlement.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // dev.kord.common.entity/DiscordEntitlement.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // dev.kord.common.entity/DiscordEntitlement.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): dev.kord.common.entity/DiscordEntitlement // dev.kord.common.entity/DiscordEntitlement.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, dev.kord.common.entity/DiscordEntitlement) // dev.kord.common.entity/DiscordEntitlement.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;dev.kord.common.entity.DiscordEntitlement){}[0] + } + + final object Companion { // dev.kord.common.entity/DiscordEntitlement.Companion|null[0] + final val $childSerializers // dev.kord.common.entity/DiscordEntitlement.Companion.$childSerializers|{}$childSerializers[0] + + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.common.entity/DiscordEntitlement.Companion.serializer|serializer(){}[0] + } +} + final class dev.kord.common.entity/DiscordGuild { // dev.kord.common.entity/DiscordGuild|null[0] constructor (dev.kord.common.entity/Snowflake, kotlin/String, kotlin/String?, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity/Snowflake, dev.kord.common.entity.optional/Optional = ..., kotlin/String, dev.kord.common.entity/Snowflake?, kotlin.time/Duration, dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/OptionalSnowflake? = ..., dev.kord.common.entity/VerificationLevel, dev.kord.common.entity/DefaultMessageNotificationLevel, dev.kord.common.entity/ExplicitContentFilter, kotlin.collections/List, kotlin.collections/List, kotlin.collections/List, dev.kord.common.entity/MFALevel, dev.kord.common.entity/Snowflake?, dev.kord.common.entity/Snowflake?, dev.kord.common.entity/SystemChannelFlags, dev.kord.common.entity/Snowflake?, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/OptionalInt? = ..., dev.kord.common.entity.optional/OptionalInt = ..., kotlin/String?, kotlin/String?, kotlin/String?, dev.kord.common.entity/PremiumTier, dev.kord.common.entity.optional/OptionalInt = ..., kotlin/String, dev.kord.common.entity/Snowflake?, dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/OptionalInt = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity/NsfwLevel, dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., kotlin/Boolean, dev.kord.common.entity/Snowflake?) // dev.kord.common.entity/DiscordGuild.|(dev.kord.common.entity.Snowflake;kotlin.String;kotlin.String?;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.Snowflake;dev.kord.common.entity.optional.Optional;kotlin.String;dev.kord.common.entity.Snowflake?;kotlin.time.Duration;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.OptionalSnowflake?;dev.kord.common.entity.VerificationLevel;dev.kord.common.entity.DefaultMessageNotificationLevel;dev.kord.common.entity.ExplicitContentFilter;kotlin.collections.List;kotlin.collections.List;kotlin.collections.List;dev.kord.common.entity.MFALevel;dev.kord.common.entity.Snowflake?;dev.kord.common.entity.Snowflake?;dev.kord.common.entity.SystemChannelFlags;dev.kord.common.entity.Snowflake?;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.OptionalInt?;dev.kord.common.entity.optional.OptionalInt;kotlin.String?;kotlin.String?;kotlin.String?;dev.kord.common.entity.PremiumTier;dev.kord.common.entity.optional.OptionalInt;kotlin.String;dev.kord.common.entity.Snowflake?;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.OptionalInt;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.NsfwLevel;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;kotlin.Boolean;dev.kord.common.entity.Snowflake?){}[0] @@ -3011,7 +3069,7 @@ final class dev.kord.common.entity/DiscordIntegrationsAccount { // dev.kord.comm } final class dev.kord.common.entity/DiscordInteraction { // dev.kord.common.entity/DiscordInteraction|null[0] - constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/InteractionType, dev.kord.common.entity/InteractionCallbackData, dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String, kotlin/Int, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ...) // dev.kord.common.entity/DiscordInteraction.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.common.entity.InteractionCallbackData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional){}[0] + constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/InteractionType, dev.kord.common.entity/InteractionCallbackData, dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String, kotlin/Int, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ...) // dev.kord.common.entity/DiscordInteraction.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.common.entity.InteractionCallbackData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>){}[0] final val appPermissions // dev.kord.common.entity/DiscordInteraction.appPermissions|{}appPermissions[0] final fun (): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordInteraction.appPermissions.|(){}[0] @@ -3023,6 +3081,8 @@ final class dev.kord.common.entity/DiscordInteraction { // dev.kord.common.entit final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordInteraction.channelId.|(){}[0] final val data // dev.kord.common.entity/DiscordInteraction.data|{}data[0] final fun (): dev.kord.common.entity/InteractionCallbackData // dev.kord.common.entity/DiscordInteraction.data.|(){}[0] + final val entitlements // dev.kord.common.entity/DiscordInteraction.entitlements|{}entitlements[0] + final fun (): dev.kord.common.entity.optional/Optional> // dev.kord.common.entity/DiscordInteraction.entitlements.|(){}[0] final val guildId // dev.kord.common.entity/DiscordInteraction.guildId|{}guildId[0] final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordInteraction.guildId.|(){}[0] final val guildLocale // dev.kord.common.entity/DiscordInteraction.guildLocale|{}guildLocale[0] @@ -3051,6 +3111,7 @@ final class dev.kord.common.entity/DiscordInteraction { // dev.kord.common.entit final fun component13(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordInteraction.component13|component13(){}[0] final fun component14(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordInteraction.component14|component14(){}[0] final fun component15(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordInteraction.component15|component15(){}[0] + final fun component16(): dev.kord.common.entity.optional/Optional> // dev.kord.common.entity/DiscordInteraction.component16|component16(){}[0] final fun component2(): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordInteraction.component2|component2(){}[0] final fun component3(): dev.kord.common.entity/InteractionType // dev.kord.common.entity/DiscordInteraction.component3|component3(){}[0] final fun component4(): dev.kord.common.entity/InteractionCallbackData // dev.kord.common.entity/DiscordInteraction.component4|component4(){}[0] @@ -3059,7 +3120,7 @@ final class dev.kord.common.entity/DiscordInteraction { // dev.kord.common.entit final fun component7(): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.common.entity/DiscordInteraction.component7|component7(){}[0] final fun component8(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordInteraction.component8|component8(){}[0] final fun component9(): dev.kord.common.entity.optional/Optional // dev.kord.common.entity/DiscordInteraction.component9|component9(){}[0] - final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/InteractionType = ..., dev.kord.common.entity/InteractionCallbackData = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String = ..., kotlin/Int = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ...): dev.kord.common.entity/DiscordInteraction // dev.kord.common.entity/DiscordInteraction.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.common.entity.InteractionCallbackData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional){}[0] + final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/InteractionType = ..., dev.kord.common.entity/InteractionCallbackData = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String = ..., kotlin/Int = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ...): dev.kord.common.entity/DiscordInteraction // dev.kord.common.entity/DiscordInteraction.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.common.entity.InteractionCallbackData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>){}[0] final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/DiscordInteraction.equals|equals(kotlin.Any?){}[0] final fun hashCode(): kotlin/Int // dev.kord.common.entity/DiscordInteraction.hashCode|hashCode(){}[0] final fun toString(): kotlin/String // dev.kord.common.entity/DiscordInteraction.toString|toString(){}[0] @@ -4490,6 +4551,47 @@ final class dev.kord.common.entity/DiscordShard { // dev.kord.common.entity/Disc } } +final class dev.kord.common.entity/DiscordSku { // dev.kord.common.entity/DiscordSku|null[0] + constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/SkuType, dev.kord.common.entity/Snowflake, kotlin/String, kotlin/String, dev.kord.common.entity/SkuFlags) // dev.kord.common.entity/DiscordSku.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.SkuType;dev.kord.common.entity.Snowflake;kotlin.String;kotlin.String;dev.kord.common.entity.SkuFlags){}[0] + + final val applicationId // dev.kord.common.entity/DiscordSku.applicationId|{}applicationId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordSku.applicationId.|(){}[0] + final val flags // dev.kord.common.entity/DiscordSku.flags|{}flags[0] + final fun (): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/DiscordSku.flags.|(){}[0] + final val id // dev.kord.common.entity/DiscordSku.id|{}id[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordSku.id.|(){}[0] + final val name // dev.kord.common.entity/DiscordSku.name|{}name[0] + final fun (): kotlin/String // dev.kord.common.entity/DiscordSku.name.|(){}[0] + final val slug // dev.kord.common.entity/DiscordSku.slug|{}slug[0] + final fun (): kotlin/String // dev.kord.common.entity/DiscordSku.slug.|(){}[0] + final val type // dev.kord.common.entity/DiscordSku.type|{}type[0] + final fun (): dev.kord.common.entity/SkuType // dev.kord.common.entity/DiscordSku.type.|(){}[0] + + final fun component1(): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordSku.component1|component1(){}[0] + final fun component2(): dev.kord.common.entity/SkuType // dev.kord.common.entity/DiscordSku.component2|component2(){}[0] + final fun component3(): dev.kord.common.entity/Snowflake // dev.kord.common.entity/DiscordSku.component3|component3(){}[0] + final fun component4(): kotlin/String // dev.kord.common.entity/DiscordSku.component4|component4(){}[0] + final fun component5(): kotlin/String // dev.kord.common.entity/DiscordSku.component5|component5(){}[0] + final fun component6(): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/DiscordSku.component6|component6(){}[0] + final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/SkuType = ..., dev.kord.common.entity/Snowflake = ..., kotlin/String = ..., kotlin/String = ..., dev.kord.common.entity/SkuFlags = ...): dev.kord.common.entity/DiscordSku // dev.kord.common.entity/DiscordSku.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.SkuType;dev.kord.common.entity.Snowflake;kotlin.String;kotlin.String;dev.kord.common.entity.SkuFlags){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/DiscordSku.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.common.entity/DiscordSku.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.common.entity/DiscordSku.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // dev.kord.common.entity/DiscordSku.$serializer|null[0] + final val descriptor // dev.kord.common.entity/DiscordSku.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // dev.kord.common.entity/DiscordSku.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // dev.kord.common.entity/DiscordSku.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): dev.kord.common.entity/DiscordSku // dev.kord.common.entity/DiscordSku.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, dev.kord.common.entity/DiscordSku) // dev.kord.common.entity/DiscordSku.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;dev.kord.common.entity.DiscordSku){}[0] + } + + final object Companion { // dev.kord.common.entity/DiscordSku.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.common.entity/DiscordSku.Companion.serializer|serializer(){}[0] + } +} + final class dev.kord.common.entity/DiscordStageInstance { // dev.kord.common.entity/DiscordStageInstance|null[0] constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, kotlin/String, dev.kord.common.entity/StageInstancePrivacyLevel, kotlin/Boolean, dev.kord.common.entity/Snowflake?) // dev.kord.common.entity/DiscordStageInstance.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;kotlin.String;dev.kord.common.entity.StageInstancePrivacyLevel;kotlin.Boolean;dev.kord.common.entity.Snowflake?){}[0] @@ -6043,6 +6145,38 @@ final class dev.kord.common.entity/RoleSubscription { // dev.kord.common.entity/ } } +final class dev.kord.common.entity/SkuFlags { // dev.kord.common.entity/SkuFlags|null[0] + final val value // dev.kord.common.entity/SkuFlags.value|{}value[0] + final fun (): kotlin/Int // dev.kord.common.entity/SkuFlags.value.|(){}[0] + final val values // dev.kord.common.entity/SkuFlags.values|{}values[0] + final fun (): kotlin.collections/Set // dev.kord.common.entity/SkuFlags.values.|(){}[0] + + final fun contains(dev.kord.common.entity/SkuFlag): kotlin/Boolean // dev.kord.common.entity/SkuFlags.contains|contains(dev.kord.common.entity.SkuFlag){}[0] + final fun contains(dev.kord.common.entity/SkuFlags): kotlin/Boolean // dev.kord.common.entity/SkuFlags.contains|contains(dev.kord.common.entity.SkuFlags){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/SkuFlags.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.common.entity/SkuFlags.hashCode|hashCode(){}[0] + final fun minus(dev.kord.common.entity/SkuFlag): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags.minus|minus(dev.kord.common.entity.SkuFlag){}[0] + final fun minus(dev.kord.common.entity/SkuFlags): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags.minus|minus(dev.kord.common.entity.SkuFlags){}[0] + final fun plus(dev.kord.common.entity/SkuFlag): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags.plus|plus(dev.kord.common.entity.SkuFlag){}[0] + final fun plus(dev.kord.common.entity/SkuFlags): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags.plus|plus(dev.kord.common.entity.SkuFlags){}[0] + final fun toString(): kotlin/String // dev.kord.common.entity/SkuFlags.toString|toString(){}[0] + final inline fun copy(kotlin/Function1): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags.copy|copy(kotlin.Function1){}[0] + + final class Builder { // dev.kord.common.entity/SkuFlags.Builder|null[0] + constructor (kotlin/Int = ...) // dev.kord.common.entity/SkuFlags.Builder.|(kotlin.Int){}[0] + + final fun (dev.kord.common.entity/SkuFlag).unaryMinus() // dev.kord.common.entity/SkuFlags.Builder.unaryMinus|unaryMinus@dev.kord.common.entity.SkuFlag(){}[0] + final fun (dev.kord.common.entity/SkuFlag).unaryPlus() // dev.kord.common.entity/SkuFlags.Builder.unaryPlus|unaryPlus@dev.kord.common.entity.SkuFlag(){}[0] + final fun (dev.kord.common.entity/SkuFlags).unaryMinus() // dev.kord.common.entity/SkuFlags.Builder.unaryMinus|unaryMinus@dev.kord.common.entity.SkuFlags(){}[0] + final fun (dev.kord.common.entity/SkuFlags).unaryPlus() // dev.kord.common.entity/SkuFlags.Builder.unaryPlus|unaryPlus@dev.kord.common.entity.SkuFlags(){}[0] + final fun build(): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags.Builder.build|build(){}[0] + } + + final object Companion { // dev.kord.common.entity/SkuFlags.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.common.entity/SkuFlags.Companion.serializer|serializer(){}[0] + } +} + final class dev.kord.common.entity/Snowflake : kotlin/Comparable { // dev.kord.common.entity/Snowflake|null[0] constructor (kotlin/String) // dev.kord.common.entity/Snowflake.|(kotlin.String){}[0] constructor (kotlin/ULong) // dev.kord.common.entity/Snowflake.|(kotlin.ULong){}[0] @@ -7485,6 +7619,8 @@ sealed class dev.kord.common.entity/ButtonStyle { // dev.kord.common.entity/Butt final object Link : dev.kord.common.entity/ButtonStyle // dev.kord.common.entity/ButtonStyle.Link|null[0] + final object Premium : dev.kord.common.entity/ButtonStyle // dev.kord.common.entity/ButtonStyle.Premium|null[0] + final object Primary : dev.kord.common.entity/ButtonStyle // dev.kord.common.entity/ButtonStyle.Primary|null[0] final object Secondary : dev.kord.common.entity/ButtonStyle // dev.kord.common.entity/ButtonStyle.Secondary|null[0] @@ -7804,6 +7940,68 @@ sealed class dev.kord.common.entity/EmbedType { // dev.kord.common.entity/EmbedT final object Video : dev.kord.common.entity/EmbedType // dev.kord.common.entity/EmbedType.Video|null[0] } +sealed class dev.kord.common.entity/EntitlementOwnerType { // dev.kord.common.entity/EntitlementOwnerType|null[0] + constructor (kotlin/Int) // dev.kord.common.entity/EntitlementOwnerType.|(kotlin.Int){}[0] + + final val value // dev.kord.common.entity/EntitlementOwnerType.value|{}value[0] + final fun (): kotlin/Int // dev.kord.common.entity/EntitlementOwnerType.value.|(){}[0] + + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/EntitlementOwnerType.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.common.entity/EntitlementOwnerType.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.common.entity/EntitlementOwnerType.toString|toString(){}[0] + + final class Unknown : dev.kord.common.entity/EntitlementOwnerType // dev.kord.common.entity/EntitlementOwnerType.Unknown|null[0] + + final object Companion { // dev.kord.common.entity/EntitlementOwnerType.Companion|null[0] + final val entries // dev.kord.common.entity/EntitlementOwnerType.Companion.entries|{}entries[0] + final fun (): kotlin.collections/List // dev.kord.common.entity/EntitlementOwnerType.Companion.entries.|(){}[0] + + final fun from(kotlin/Int): dev.kord.common.entity/EntitlementOwnerType // dev.kord.common.entity/EntitlementOwnerType.Companion.from|from(kotlin.Int){}[0] + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.common.entity/EntitlementOwnerType.Companion.serializer|serializer(){}[0] + } + + final object Guild : dev.kord.common.entity/EntitlementOwnerType // dev.kord.common.entity/EntitlementOwnerType.Guild|null[0] + + final object User : dev.kord.common.entity/EntitlementOwnerType // dev.kord.common.entity/EntitlementOwnerType.User|null[0] +} + +sealed class dev.kord.common.entity/EntitlementType { // dev.kord.common.entity/EntitlementType|null[0] + constructor (kotlin/Int) // dev.kord.common.entity/EntitlementType.|(kotlin.Int){}[0] + + final val value // dev.kord.common.entity/EntitlementType.value|{}value[0] + final fun (): kotlin/Int // dev.kord.common.entity/EntitlementType.value.|(){}[0] + + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/EntitlementType.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.common.entity/EntitlementType.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.common.entity/EntitlementType.toString|toString(){}[0] + + final class Unknown : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.Unknown|null[0] + + final object ApplicationSubscription : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.ApplicationSubscription|null[0] + + final object Companion { // dev.kord.common.entity/EntitlementType.Companion|null[0] + final val entries // dev.kord.common.entity/EntitlementType.Companion.entries|{}entries[0] + final fun (): kotlin.collections/List // dev.kord.common.entity/EntitlementType.Companion.entries.|(){}[0] + + final fun from(kotlin/Int): dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.Companion.from|from(kotlin.Int){}[0] + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.common.entity/EntitlementType.Companion.serializer|serializer(){}[0] + } + + final object DeveloperGift : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.DeveloperGift|null[0] + + final object FreePurchase : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.FreePurchase|null[0] + + final object PremiumPurchase : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.PremiumPurchase|null[0] + + final object PremiumSubscription : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.PremiumSubscription|null[0] + + final object Purchase : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.Purchase|null[0] + + final object TestModePurchase : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.TestModePurchase|null[0] + + final object UserGift : dev.kord.common.entity/EntitlementType // dev.kord.common.entity/EntitlementType.UserGift|null[0] +} + sealed class dev.kord.common.entity/ExplicitContentFilter { // dev.kord.common.entity/ExplicitContentFilter|null[0] constructor (kotlin/Int) // dev.kord.common.entity/ExplicitContentFilter.|(kotlin.Int){}[0] @@ -8720,6 +8918,65 @@ sealed class dev.kord.common.entity/SelectDefaultValueType { // dev.kord.common. final object User : dev.kord.common.entity/SelectDefaultValueType // dev.kord.common.entity/SelectDefaultValueType.User|null[0] } +sealed class dev.kord.common.entity/SkuFlag { // dev.kord.common.entity/SkuFlag|null[0] + constructor (kotlin/Int) // dev.kord.common.entity/SkuFlag.|(kotlin.Int){}[0] + + final val shift // dev.kord.common.entity/SkuFlag.shift|{}shift[0] + final fun (): kotlin/Int // dev.kord.common.entity/SkuFlag.shift.|(){}[0] + final val value // dev.kord.common.entity/SkuFlag.value|{}value[0] + final fun (): kotlin/Int // dev.kord.common.entity/SkuFlag.value.|(){}[0] + + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/SkuFlag.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.common.entity/SkuFlag.hashCode|hashCode(){}[0] + final fun plus(dev.kord.common.entity/SkuFlag): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlag.plus|plus(dev.kord.common.entity.SkuFlag){}[0] + final fun plus(dev.kord.common.entity/SkuFlags): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlag.plus|plus(dev.kord.common.entity.SkuFlags){}[0] + final fun toString(): kotlin/String // dev.kord.common.entity/SkuFlag.toString|toString(){}[0] + + final class Unknown : dev.kord.common.entity/SkuFlag // dev.kord.common.entity/SkuFlag.Unknown|null[0] + + final object Available : dev.kord.common.entity/SkuFlag // dev.kord.common.entity/SkuFlag.Available|null[0] + + final object Companion { // dev.kord.common.entity/SkuFlag.Companion|null[0] + final val entries // dev.kord.common.entity/SkuFlag.Companion.entries|{}entries[0] + final fun (): kotlin.collections/List // dev.kord.common.entity/SkuFlag.Companion.entries.|(){}[0] + + final fun fromShift(kotlin/Int): dev.kord.common.entity/SkuFlag // dev.kord.common.entity/SkuFlag.Companion.fromShift|fromShift(kotlin.Int){}[0] + } + + final object GuildSubscription : dev.kord.common.entity/SkuFlag // dev.kord.common.entity/SkuFlag.GuildSubscription|null[0] + + final object UserSubscription : dev.kord.common.entity/SkuFlag // dev.kord.common.entity/SkuFlag.UserSubscription|null[0] +} + +sealed class dev.kord.common.entity/SkuType { // dev.kord.common.entity/SkuType|null[0] + constructor (kotlin/Int) // dev.kord.common.entity/SkuType.|(kotlin.Int){}[0] + + final val value // dev.kord.common.entity/SkuType.value|{}value[0] + final fun (): kotlin/Int // dev.kord.common.entity/SkuType.value.|(){}[0] + + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.common.entity/SkuType.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.common.entity/SkuType.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.common.entity/SkuType.toString|toString(){}[0] + + final class Unknown : dev.kord.common.entity/SkuType // dev.kord.common.entity/SkuType.Unknown|null[0] + + final object Companion { // dev.kord.common.entity/SkuType.Companion|null[0] + final val entries // dev.kord.common.entity/SkuType.Companion.entries|{}entries[0] + final fun (): kotlin.collections/List // dev.kord.common.entity/SkuType.Companion.entries.|(){}[0] + + final fun from(kotlin/Int): dev.kord.common.entity/SkuType // dev.kord.common.entity/SkuType.Companion.from|from(kotlin.Int){}[0] + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.common.entity/SkuType.Companion.serializer|serializer(){}[0] + } + + final object Consumable : dev.kord.common.entity/SkuType // dev.kord.common.entity/SkuType.Consumable|null[0] + + final object Durable : dev.kord.common.entity/SkuType // dev.kord.common.entity/SkuType.Durable|null[0] + + final object Subscription : dev.kord.common.entity/SkuType // dev.kord.common.entity/SkuType.Subscription|null[0] + + final object SubscriptionGroup : dev.kord.common.entity/SkuType // dev.kord.common.entity/SkuType.SubscriptionGroup|null[0] +} + sealed class dev.kord.common.entity/SortOrderType { // dev.kord.common.entity/SortOrderType|null[0] constructor (kotlin/Int) // dev.kord.common.entity/SortOrderType.|(kotlin.Int){}[0] @@ -9214,6 +9471,10 @@ final fun dev.kord.common.entity/RoleFlags(kotlin.collections/Iterable): dev.kord.common.entity/RoleFlags // dev.kord.common.entity/RoleFlags|RoleFlags(kotlin.collections.Iterable){}[0] final fun dev.kord.common.entity/RoleFlags(kotlin/Array...): dev.kord.common.entity/RoleFlags // dev.kord.common.entity/RoleFlags|RoleFlags(kotlin.Array...){}[0] final fun dev.kord.common.entity/RoleFlags(kotlin/Array...): dev.kord.common.entity/RoleFlags // dev.kord.common.entity/RoleFlags|RoleFlags(kotlin.Array...){}[0] +final fun dev.kord.common.entity/SkuFlags(kotlin.collections/Iterable): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags|SkuFlags(kotlin.collections.Iterable){}[0] +final fun dev.kord.common.entity/SkuFlags(kotlin.collections/Iterable): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags|SkuFlags(kotlin.collections.Iterable){}[0] +final fun dev.kord.common.entity/SkuFlags(kotlin/Array...): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags|SkuFlags(kotlin.Array...){}[0] +final fun dev.kord.common.entity/SkuFlags(kotlin/Array...): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags|SkuFlags(kotlin.Array...){}[0] final fun dev.kord.common.entity/Snowflake(kotlin/Long): dev.kord.common.entity/Snowflake // dev.kord.common.entity/Snowflake|Snowflake(kotlin.Long){}[0] final fun dev.kord.common.entity/SystemChannelFlags(kotlin.collections/Iterable): dev.kord.common.entity/SystemChannelFlags // dev.kord.common.entity/SystemChannelFlags|SystemChannelFlags(kotlin.collections.Iterable){}[0] final fun dev.kord.common.entity/SystemChannelFlags(kotlin.collections/Iterable): dev.kord.common.entity/SystemChannelFlags // dev.kord.common.entity/SystemChannelFlags|SystemChannelFlags(kotlin.collections.Iterable){}[0] @@ -9254,6 +9515,7 @@ final inline fun dev.kord.common.entity/MessageFlags(kotlin/Function1 = ...): dev.kord.common.entity/Permissions // dev.kord.common.entity/Permissions|Permissions(kotlin.Function1){}[0] final inline fun dev.kord.common.entity/Permissions0(kotlin/Function1 = ...): dev.kord.common.entity/Permissions // dev.kord.common.entity/Permissions0|Permissions0(kotlin.Function1){}[0] final inline fun dev.kord.common.entity/RoleFlags(kotlin/Function1 = ...): dev.kord.common.entity/RoleFlags // dev.kord.common.entity/RoleFlags|RoleFlags(kotlin.Function1){}[0] +final inline fun dev.kord.common.entity/SkuFlags(kotlin/Function1 = ...): dev.kord.common.entity/SkuFlags // dev.kord.common.entity/SkuFlags|SkuFlags(kotlin.Function1){}[0] final inline fun dev.kord.common.entity/SystemChannelFlags(kotlin/Function1 = ...): dev.kord.common.entity/SystemChannelFlags // dev.kord.common.entity/SystemChannelFlags|SystemChannelFlags(kotlin.Function1){}[0] final inline fun dev.kord.common.entity/UserFlags(kotlin/Function1 = ...): dev.kord.common.entity/UserFlags // dev.kord.common.entity/UserFlags|UserFlags(kotlin.Function1){}[0] final suspend inline fun <#A: kotlin/Any?> (dev.kord.common.ratelimit/RateLimiter).dev.kord.common.ratelimit/consume(kotlin/Function0<#A>): #A // dev.kord.common.ratelimit/consume|consume@dev.kord.common.ratelimit.RateLimiter(kotlin.Function0<0:0>){0§}[0] diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt index c298dfcaa52a..5d840dbaf7db 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementOwnerType.kt @@ -75,7 +75,6 @@ public sealed class EntitlementOwnerType( ) } - /** * Returns an instance of [EntitlementOwnerType] with [EntitlementOwnerType.value] equal to * the specified [value]. diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt index e99134f54d2d..97699924a2d3 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/EntitlementType.kt @@ -111,7 +111,6 @@ public sealed class EntitlementType( ) } - /** * Returns an instance of [EntitlementType] with [EntitlementType.value] equal to the * specified [value]. diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt index 71b724660eac..147c1eba094f 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuFlag.kt @@ -93,7 +93,6 @@ public sealed class SkuFlag( ) } - /** * Returns an instance of [SkuFlag] with [SkuFlag.shift] equal to the specified [shift]. * diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt index 5e82486b120f..a81c84d82e11 100644 --- a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/SkuType.kt @@ -85,7 +85,6 @@ public sealed class SkuType( ) } - /** * Returns an instance of [SkuType] with [SkuType.value] equal to the specified [value]. */ diff --git a/core/api/core.api b/core/api/core.api index a922269c4fb9..4b71db85f1aa 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -3563,13 +3563,13 @@ public final class dev/kord/core/cache/data/EntitlementData { public fun toString ()Ljava/lang/String; } -public final class dev/kord/core/cache/data/EntitlementData$$serializer : kotlinx/serialization/internal/GeneratedSerializer { +public synthetic class dev/kord/core/cache/data/EntitlementData$$serializer : kotlinx/serialization/internal/GeneratedSerializer { public static final field INSTANCE Ldev/kord/core/cache/data/EntitlementData$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/core/cache/data/EntitlementData; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/core/cache/data/EntitlementData; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/core/cache/data/EntitlementData;)V + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/core/cache/data/EntitlementData;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } diff --git a/core/api/core.klib.api b/core/api/core.klib.api index 1d39196ab5fa..289eab77a128 100644 --- a/core/api/core.klib.api +++ b/core/api/core.klib.api @@ -955,6 +955,8 @@ abstract interface dev.kord.core.supplier/EntitySupplier { // dev.kord.core.supp abstract suspend fun getAutoModerationRuleOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.automoderation/AutoModerationRule? // dev.kord.core.supplier/EntitySupplier.getAutoModerationRuleOrNull|getAutoModerationRuleOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] abstract suspend fun getChannelOrNull(dev.kord.common.entity/Snowflake): dev.kord.core.entity.channel/Channel? // dev.kord.core.supplier/EntitySupplier.getChannelOrNull|getChannelOrNull(dev.kord.common.entity.Snowflake){}[0] abstract suspend fun getEmojiOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/GuildEmoji? // dev.kord.core.supplier/EntitySupplier.getEmojiOrNull|getEmojiOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + abstract suspend fun getEntitlementOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/Entitlement? // dev.kord.core.supplier/EntitySupplier.getEntitlementOrNull|getEntitlementOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + abstract suspend fun getEntitlements(dev.kord.common.entity/Snowflake, dev.kord.rest.json.request/EntitlementsListRequest): kotlinx.coroutines.flow/Flow // dev.kord.core.supplier/EntitySupplier.getEntitlements|getEntitlements(dev.kord.common.entity.Snowflake;dev.kord.rest.json.request.EntitlementsListRequest){}[0] abstract suspend fun getFollowupMessageOrNull(dev.kord.common.entity/Snowflake, kotlin/String, dev.kord.common.entity/Snowflake): dev.kord.core.entity.interaction.followup/FollowupMessage? // dev.kord.core.supplier/EntitySupplier.getFollowupMessageOrNull|getFollowupMessageOrNull(dev.kord.common.entity.Snowflake;kotlin.String;dev.kord.common.entity.Snowflake){}[0] abstract suspend fun getGlobalApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GlobalApplicationCommand? // dev.kord.core.supplier/EntitySupplier.getGlobalApplicationCommandOrNull|getGlobalApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] abstract suspend fun getGuildApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GuildApplicationCommand? // dev.kord.core.supplier/EntitySupplier.getGuildApplicationCommandOrNull|getGuildApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] @@ -981,6 +983,7 @@ abstract interface dev.kord.core.supplier/EntitySupplier { // dev.kord.core.supp open suspend fun getAutoModerationRule(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.automoderation/AutoModerationRule // dev.kord.core.supplier/EntitySupplier.getAutoModerationRule|getAutoModerationRule(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] open suspend fun getChannel(dev.kord.common.entity/Snowflake): dev.kord.core.entity.channel/Channel // dev.kord.core.supplier/EntitySupplier.getChannel|getChannel(dev.kord.common.entity.Snowflake){}[0] open suspend fun getEmoji(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/GuildEmoji // dev.kord.core.supplier/EntitySupplier.getEmoji|getEmoji(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + open suspend fun getEntitlement(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/Entitlement // dev.kord.core.supplier/EntitySupplier.getEntitlement|getEntitlement(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] open suspend fun getFollowupMessage(dev.kord.common.entity/Snowflake, kotlin/String, dev.kord.common.entity/Snowflake): dev.kord.core.entity.interaction.followup/FollowupMessage // dev.kord.core.supplier/EntitySupplier.getFollowupMessage|getFollowupMessage(dev.kord.common.entity.Snowflake;kotlin.String;dev.kord.common.entity.Snowflake){}[0] open suspend fun getGlobalApplicationCommand(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GlobalApplicationCommand // dev.kord.core.supplier/EntitySupplier.getGlobalApplicationCommand|getGlobalApplicationCommand(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] open suspend fun getGuild(dev.kord.common.entity/Snowflake): dev.kord.core.entity/Guild // dev.kord.core.supplier/EntitySupplier.getGuild|getGuild(dev.kord.common.entity.Snowflake){}[0] @@ -1354,6 +1357,8 @@ sealed interface dev.kord.core.entity.interaction/Interaction : dev.kord.core.be open fun (): dev.kord.common.entity/Snowflake // dev.kord.core.entity.interaction/Interaction.applicationId.|(){}[0] open val channelId // dev.kord.core.entity.interaction/Interaction.channelId|{}channelId[0] open fun (): dev.kord.common.entity/Snowflake // dev.kord.core.entity.interaction/Interaction.channelId.|(){}[0] + open val entitlements // dev.kord.core.entity.interaction/Interaction.entitlements|{}entitlements[0] + open fun (): kotlin.collections/List // dev.kord.core.entity.interaction/Interaction.entitlements.|(){}[0] open val guildLocale // dev.kord.core.entity.interaction/Interaction.guildLocale|{}guildLocale[0] open fun (): dev.kord.common/Locale? // dev.kord.core.entity.interaction/Interaction.guildLocale.|(){}[0] open val id // dev.kord.core.entity.interaction/Interaction.id|{}id[0] @@ -3114,6 +3119,66 @@ final class dev.kord.core.cache.data/EmojiData { // dev.kord.core.cache.data/Emo } } +final class dev.kord.core.cache.data/EntitlementData { // dev.kord.core.cache.data/EntitlementData|null[0] + constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/EntitlementType, dev.kord.common.entity/Snowflake, dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., kotlin/Boolean, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ...) // dev.kord.core.cache.data/EntitlementData.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.EntitlementType;dev.kord.common.entity.Snowflake;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.OptionalSnowflake;kotlin.Boolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean){}[0] + + final val applicationId // dev.kord.core.cache.data/EntitlementData.applicationId|{}applicationId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.cache.data/EntitlementData.applicationId.|(){}[0] + final val consumed // dev.kord.core.cache.data/EntitlementData.consumed|{}consumed[0] + final fun (): dev.kord.common.entity.optional/OptionalBoolean // dev.kord.core.cache.data/EntitlementData.consumed.|(){}[0] + final val deleted // dev.kord.core.cache.data/EntitlementData.deleted|{}deleted[0] + final fun (): kotlin/Boolean // dev.kord.core.cache.data/EntitlementData.deleted.|(){}[0] + final val ended // dev.kord.core.cache.data/EntitlementData.ended|{}ended[0] + final fun (): kotlin/Boolean // dev.kord.core.cache.data/EntitlementData.ended.|(){}[0] + final val endsAt // dev.kord.core.cache.data/EntitlementData.endsAt|{}endsAt[0] + final fun (): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/EntitlementData.endsAt.|(){}[0] + final val guildId // dev.kord.core.cache.data/EntitlementData.guildId|{}guildId[0] + final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.core.cache.data/EntitlementData.guildId.|(){}[0] + final val id // dev.kord.core.cache.data/EntitlementData.id|{}id[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.cache.data/EntitlementData.id.|(){}[0] + final val skuId // dev.kord.core.cache.data/EntitlementData.skuId|{}skuId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.cache.data/EntitlementData.skuId.|(){}[0] + final val startsAt // dev.kord.core.cache.data/EntitlementData.startsAt|{}startsAt[0] + final fun (): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/EntitlementData.startsAt.|(){}[0] + final val type // dev.kord.core.cache.data/EntitlementData.type|{}type[0] + final fun (): dev.kord.common.entity/EntitlementType // dev.kord.core.cache.data/EntitlementData.type.|(){}[0] + final val userId // dev.kord.core.cache.data/EntitlementData.userId|{}userId[0] + final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.core.cache.data/EntitlementData.userId.|(){}[0] + + final fun component1(): dev.kord.common.entity/Snowflake // dev.kord.core.cache.data/EntitlementData.component1|component1(){}[0] + final fun component10(): dev.kord.common.entity.optional/OptionalBoolean // dev.kord.core.cache.data/EntitlementData.component10|component10(){}[0] + final fun component2(): dev.kord.common.entity/Snowflake // dev.kord.core.cache.data/EntitlementData.component2|component2(){}[0] + final fun component3(): dev.kord.common.entity/EntitlementType // dev.kord.core.cache.data/EntitlementData.component3|component3(){}[0] + final fun component4(): dev.kord.common.entity/Snowflake // dev.kord.core.cache.data/EntitlementData.component4|component4(){}[0] + final fun component5(): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.core.cache.data/EntitlementData.component5|component5(){}[0] + final fun component6(): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.core.cache.data/EntitlementData.component6|component6(){}[0] + final fun component7(): kotlin/Boolean // dev.kord.core.cache.data/EntitlementData.component7|component7(){}[0] + final fun component8(): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/EntitlementData.component8|component8(){}[0] + final fun component9(): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/EntitlementData.component9|component9(){}[0] + final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/EntitlementType = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., kotlin/Boolean = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ...): dev.kord.core.cache.data/EntitlementData // dev.kord.core.cache.data/EntitlementData.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.EntitlementType;dev.kord.common.entity.Snowflake;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.OptionalSnowflake;kotlin.Boolean;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.core.cache.data/EntitlementData.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.core.cache.data/EntitlementData.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.core.cache.data/EntitlementData.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // dev.kord.core.cache.data/EntitlementData.$serializer|null[0] + final val descriptor // dev.kord.core.cache.data/EntitlementData.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // dev.kord.core.cache.data/EntitlementData.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // dev.kord.core.cache.data/EntitlementData.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): dev.kord.core.cache.data/EntitlementData // dev.kord.core.cache.data/EntitlementData.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, dev.kord.core.cache.data/EntitlementData) // dev.kord.core.cache.data/EntitlementData.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;dev.kord.core.cache.data.EntitlementData){}[0] + } + + final object Companion { // dev.kord.core.cache.data/EntitlementData.Companion|null[0] + final val $childSerializers // dev.kord.core.cache.data/EntitlementData.Companion.$childSerializers|{}$childSerializers[0] + final val description // dev.kord.core.cache.data/EntitlementData.Companion.description|{}description[0] + final fun (): dev.kord.cache.api.data/DataDescription // dev.kord.core.cache.data/EntitlementData.Companion.description.|(){}[0] + + final fun from(dev.kord.common.entity/DiscordEntitlement): dev.kord.core.cache.data/EntitlementData // dev.kord.core.cache.data/EntitlementData.Companion.from|from(dev.kord.common.entity.DiscordEntitlement){}[0] + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.core.cache.data/EntitlementData.Companion.serializer|serializer(){}[0] + } +} + final class dev.kord.core.cache.data/GuildApplicationCommandPermissionData { // dev.kord.core.cache.data/GuildApplicationCommandPermissionData|null[0] constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/ApplicationCommandPermissionType, kotlin/Boolean) // dev.kord.core.cache.data/GuildApplicationCommandPermissionData.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.ApplicationCommandPermissionType;kotlin.Boolean){}[0] @@ -3593,7 +3658,7 @@ final class dev.kord.core.cache.data/IntegrationsAccountData { // dev.kord.core. } final class dev.kord.core.cache.data/InteractionData { // dev.kord.core.cache.data/InteractionData|null[0] - constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/InteractionType, dev.kord.core.cache.data/ApplicationInteractionData, dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String, dev.kord.common.entity.optional/Optional = ..., kotlin/Int, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ...) // dev.kord.core.cache.data/InteractionData.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.core.cache.data.ApplicationInteractionData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;dev.kord.common.entity.optional.Optional;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional){}[0] + constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/InteractionType, dev.kord.core.cache.data/ApplicationInteractionData, dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String, dev.kord.common.entity.optional/Optional = ..., kotlin/Int, dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ...) // dev.kord.core.cache.data/InteractionData.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.core.cache.data.ApplicationInteractionData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;dev.kord.common.entity.optional.Optional;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>){}[0] final val appPermissions // dev.kord.core.cache.data/InteractionData.appPermissions|{}appPermissions[0] final fun (): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/InteractionData.appPermissions.|(){}[0] @@ -3605,6 +3670,8 @@ final class dev.kord.core.cache.data/InteractionData { // dev.kord.core.cache.da final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.core.cache.data/InteractionData.channelId.|(){}[0] final val data // dev.kord.core.cache.data/InteractionData.data|{}data[0] final fun (): dev.kord.core.cache.data/ApplicationInteractionData // dev.kord.core.cache.data/InteractionData.data.|(){}[0] + final val entitlements // dev.kord.core.cache.data/InteractionData.entitlements|{}entitlements[0] + final fun (): dev.kord.common.entity.optional/Optional> // dev.kord.core.cache.data/InteractionData.entitlements.|(){}[0] final val guildId // dev.kord.core.cache.data/InteractionData.guildId|{}guildId[0] final fun (): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.core.cache.data/InteractionData.guildId.|(){}[0] final val guildLocale // dev.kord.core.cache.data/InteractionData.guildLocale|{}guildLocale[0] @@ -3636,6 +3703,7 @@ final class dev.kord.core.cache.data/InteractionData { // dev.kord.core.cache.da final fun component14(): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/InteractionData.component14|component14(){}[0] final fun component15(): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/InteractionData.component15|component15(){}[0] final fun component16(): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/InteractionData.component16|component16(){}[0] + final fun component17(): dev.kord.common.entity.optional/Optional> // dev.kord.core.cache.data/InteractionData.component17|component17(){}[0] final fun component2(): dev.kord.common.entity/Snowflake // dev.kord.core.cache.data/InteractionData.component2|component2(){}[0] final fun component3(): dev.kord.common.entity/InteractionType // dev.kord.core.cache.data/InteractionData.component3|component3(){}[0] final fun component4(): dev.kord.core.cache.data/ApplicationInteractionData // dev.kord.core.cache.data/InteractionData.component4|component4(){}[0] @@ -3644,7 +3712,7 @@ final class dev.kord.core.cache.data/InteractionData { // dev.kord.core.cache.da final fun component7(): dev.kord.common.entity.optional/OptionalSnowflake // dev.kord.core.cache.data/InteractionData.component7|component7(){}[0] final fun component8(): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/InteractionData.component8|component8(){}[0] final fun component9(): dev.kord.common.entity.optional/Optional // dev.kord.core.cache.data/InteractionData.component9|component9(){}[0] - final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/InteractionType = ..., dev.kord.core.cache.data/ApplicationInteractionData = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/Int = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ...): dev.kord.core.cache.data/InteractionData // dev.kord.core.cache.data/InteractionData.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.core.cache.data.ApplicationInteractionData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;dev.kord.common.entity.optional.Optional;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional){}[0] + final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/InteractionType = ..., dev.kord.core.cache.data/ApplicationInteractionData = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalSnowflake = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/String = ..., dev.kord.common.entity.optional/Optional = ..., kotlin/Int = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ...): dev.kord.core.cache.data/InteractionData // dev.kord.core.cache.data/InteractionData.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.InteractionType;dev.kord.core.cache.data.ApplicationInteractionData;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalSnowflake;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;kotlin.String;dev.kord.common.entity.optional.Optional;kotlin.Int;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>){}[0] final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.core.cache.data/InteractionData.equals|equals(kotlin.Any?){}[0] final fun hashCode(): kotlin/Int // dev.kord.core.cache.data/InteractionData.hashCode|hashCode(){}[0] final fun toString(): kotlin/String // dev.kord.core.cache.data/InteractionData.toString|toString(){}[0] @@ -5595,6 +5663,7 @@ final class dev.kord.core.cache/KordCacheBuilder { // dev.kord.core.cache/KordCa final fun channels(kotlin/Function2, dev.kord.cache.api/DataEntryCache>) // dev.kord.core.cache/KordCacheBuilder.channels|channels(kotlin.Function2,dev.kord.cache.api.DataEntryCache>){}[0] final fun disableAll() // dev.kord.core.cache/KordCacheBuilder.disableAll|disableAll(){}[0] final fun emojis(kotlin/Function2, dev.kord.cache.api/DataEntryCache>) // dev.kord.core.cache/KordCacheBuilder.emojis|emojis(kotlin.Function2,dev.kord.cache.api.DataEntryCache>){}[0] + final fun entitlements(kotlin/Function2, dev.kord.cache.api/DataEntryCache>) // dev.kord.core.cache/KordCacheBuilder.entitlements|entitlements(kotlin.Function2,dev.kord.cache.api.DataEntryCache>){}[0] final fun guilds(kotlin/Function2, dev.kord.cache.api/DataEntryCache>) // dev.kord.core.cache/KordCacheBuilder.guilds|guilds(kotlin.Function2,dev.kord.cache.api.DataEntryCache>){}[0] final fun members(kotlin/Function2, dev.kord.cache.api/DataEntryCache>) // dev.kord.core.cache/KordCacheBuilder.members|members(kotlin.Function2,dev.kord.cache.api.DataEntryCache>){}[0] final fun messages(kotlin/Function2, dev.kord.cache.api/DataEntryCache>) // dev.kord.core.cache/KordCacheBuilder.messages|messages(kotlin.Function2,dev.kord.cache.api.DataEntryCache>){}[0] @@ -7309,6 +7378,49 @@ final class dev.kord.core.entity/Embed : dev.kord.core/KordObject { // dev.kord. } } +final class dev.kord.core.entity/Entitlement : dev.kord.core.entity/KordEntity, dev.kord.core.entity/Strategizable { // dev.kord.core.entity/Entitlement|null[0] + constructor (dev.kord.core.cache.data/EntitlementData, dev.kord.core/Kord, dev.kord.core.supplier/EntitySupplier = ...) // dev.kord.core.entity/Entitlement.|(dev.kord.core.cache.data.EntitlementData;dev.kord.core.Kord;dev.kord.core.supplier.EntitySupplier){}[0] + + final val applicationId // dev.kord.core.entity/Entitlement.applicationId|{}applicationId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.entity/Entitlement.applicationId.|(){}[0] + final val consumed // dev.kord.core.entity/Entitlement.consumed|{}consumed[0] + final fun (): kotlin/Boolean? // dev.kord.core.entity/Entitlement.consumed.|(){}[0] + final val data // dev.kord.core.entity/Entitlement.data|{}data[0] + final fun (): dev.kord.core.cache.data/EntitlementData // dev.kord.core.entity/Entitlement.data.|(){}[0] + final val deleted // dev.kord.core.entity/Entitlement.deleted|{}deleted[0] + final fun (): kotlin/Boolean // dev.kord.core.entity/Entitlement.deleted.|(){}[0] + final val endsAt // dev.kord.core.entity/Entitlement.endsAt|{}endsAt[0] + final fun (): kotlinx.datetime/Instant? // dev.kord.core.entity/Entitlement.endsAt.|(){}[0] + final val guild // dev.kord.core.entity/Entitlement.guild|{}guild[0] + final fun (): dev.kord.core.behavior/GuildBehavior? // dev.kord.core.entity/Entitlement.guild.|(){}[0] + final val guildId // dev.kord.core.entity/Entitlement.guildId|{}guildId[0] + final fun (): dev.kord.common.entity/Snowflake? // dev.kord.core.entity/Entitlement.guildId.|(){}[0] + final val id // dev.kord.core.entity/Entitlement.id|{}id[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.entity/Entitlement.id.|(){}[0] + final val isTest // dev.kord.core.entity/Entitlement.isTest|{}isTest[0] + final fun (): kotlin/Boolean // dev.kord.core.entity/Entitlement.isTest.|(){}[0] + final val kord // dev.kord.core.entity/Entitlement.kord|{}kord[0] + final fun (): dev.kord.core/Kord // dev.kord.core.entity/Entitlement.kord.|(){}[0] + final val skuId // dev.kord.core.entity/Entitlement.skuId|{}skuId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.entity/Entitlement.skuId.|(){}[0] + final val startsAt // dev.kord.core.entity/Entitlement.startsAt|{}startsAt[0] + final fun (): kotlinx.datetime/Instant? // dev.kord.core.entity/Entitlement.startsAt.|(){}[0] + final val supplier // dev.kord.core.entity/Entitlement.supplier|{}supplier[0] + final fun (): dev.kord.core.supplier/EntitySupplier // dev.kord.core.entity/Entitlement.supplier.|(){}[0] + final val type // dev.kord.core.entity/Entitlement.type|{}type[0] + final fun (): dev.kord.common.entity/EntitlementType // dev.kord.core.entity/Entitlement.type.|(){}[0] + final val user // dev.kord.core.entity/Entitlement.user|{}user[0] + final fun (): dev.kord.core.behavior/UserBehavior? // dev.kord.core.entity/Entitlement.user.|(){}[0] + final val userId // dev.kord.core.entity/Entitlement.userId|{}userId[0] + final fun (): dev.kord.common.entity/Snowflake? // dev.kord.core.entity/Entitlement.userId.|(){}[0] + + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.core.entity/Entitlement.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.core.entity/Entitlement.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.core.entity/Entitlement.toString|toString(){}[0] + final fun withStrategy(dev.kord.core.supplier/EntitySupplyStrategy<*>): dev.kord.core.entity/Entitlement // dev.kord.core.entity/Entitlement.withStrategy|withStrategy(dev.kord.core.supplier.EntitySupplyStrategy<*>){}[0] + final suspend fun delete() // dev.kord.core.entity/Entitlement.delete|delete(){}[0] +} + final class dev.kord.core.entity/Guild : dev.kord.core.behavior/GuildBehavior { // dev.kord.core.entity/Guild|null[0] constructor (dev.kord.core.cache.data/GuildData, dev.kord.core/Kord, dev.kord.core.supplier/EntitySupplier = ...) // dev.kord.core.entity/Guild.|(dev.kord.core.cache.data.GuildData;dev.kord.core.Kord;dev.kord.core.supplier.EntitySupplier){}[0] @@ -8224,6 +8336,34 @@ final class dev.kord.core.entity/RoleTags : dev.kord.core.entity/Strategizable, final suspend fun getIntegration(): dev.kord.core.entity/Integration? // dev.kord.core.entity/RoleTags.getIntegration|getIntegration(){}[0] } +final class dev.kord.core.entity/Sku : dev.kord.core.entity/KordEntity, dev.kord.core.entity/Strategizable { // dev.kord.core.entity/Sku|null[0] + constructor (dev.kord.common.entity/DiscordSku, dev.kord.core/Kord, dev.kord.core.supplier/EntitySupplier = ...) // dev.kord.core.entity/Sku.|(dev.kord.common.entity.DiscordSku;dev.kord.core.Kord;dev.kord.core.supplier.EntitySupplier){}[0] + + final val applicationId // dev.kord.core.entity/Sku.applicationId|{}applicationId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.entity/Sku.applicationId.|(){}[0] + final val data // dev.kord.core.entity/Sku.data|{}data[0] + final fun (): dev.kord.common.entity/DiscordSku // dev.kord.core.entity/Sku.data.|(){}[0] + final val flags // dev.kord.core.entity/Sku.flags|{}flags[0] + final fun (): dev.kord.common.entity/SkuFlags // dev.kord.core.entity/Sku.flags.|(){}[0] + final val id // dev.kord.core.entity/Sku.id|{}id[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.core.entity/Sku.id.|(){}[0] + final val kord // dev.kord.core.entity/Sku.kord|{}kord[0] + final fun (): dev.kord.core/Kord // dev.kord.core.entity/Sku.kord.|(){}[0] + final val name // dev.kord.core.entity/Sku.name|{}name[0] + final fun (): kotlin/String // dev.kord.core.entity/Sku.name.|(){}[0] + final val slug // dev.kord.core.entity/Sku.slug|{}slug[0] + final fun (): kotlin/String // dev.kord.core.entity/Sku.slug.|(){}[0] + final val supplier // dev.kord.core.entity/Sku.supplier|{}supplier[0] + final fun (): dev.kord.core.supplier/EntitySupplier // dev.kord.core.entity/Sku.supplier.|(){}[0] + final val type // dev.kord.core.entity/Sku.type|{}type[0] + final fun (): dev.kord.common.entity/SkuType // dev.kord.core.entity/Sku.type.|(){}[0] + + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.core.entity/Sku.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.core.entity/Sku.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.core.entity/Sku.toString|toString(){}[0] + final fun withStrategy(dev.kord.core.supplier/EntitySupplyStrategy<*>): dev.kord.core.entity/Sku // dev.kord.core.entity/Sku.withStrategy|withStrategy(dev.kord.core.supplier.EntitySupplyStrategy<*>){}[0] +} + final class dev.kord.core.entity/StageInstance : dev.kord.core.behavior/StageInstanceBehavior { // dev.kord.core.entity/StageInstance|null[0] constructor (dev.kord.core.cache.data/StageInstanceData, dev.kord.core/Kord, dev.kord.core.supplier/EntitySupplier = ...) // dev.kord.core.entity/StageInstance.|(dev.kord.core.cache.data.StageInstanceData;dev.kord.core.Kord;dev.kord.core.supplier.EntitySupplier){}[0] @@ -9361,6 +9501,53 @@ final class dev.kord.core.event.channel/VoiceChannelUpdateEvent : dev.kord.core. final fun toString(): kotlin/String // dev.kord.core.event.channel/VoiceChannelUpdateEvent.toString|toString(){}[0] } +final class dev.kord.core.event.entitlement/EntitlementCreateEvent : dev.kord.core.event/Event { // dev.kord.core.event.entitlement/EntitlementCreateEvent|null[0] + constructor (dev.kord.core.entity/Entitlement, kotlin/Int, kotlin/Any?, dev.kord.core/Kord) // dev.kord.core.event.entitlement/EntitlementCreateEvent.|(dev.kord.core.entity.Entitlement;kotlin.Int;kotlin.Any?;dev.kord.core.Kord){}[0] + + final val customContext // dev.kord.core.event.entitlement/EntitlementCreateEvent.customContext|{}customContext[0] + final fun (): kotlin/Any? // dev.kord.core.event.entitlement/EntitlementCreateEvent.customContext.|(){}[0] + final val entitlement // dev.kord.core.event.entitlement/EntitlementCreateEvent.entitlement|{}entitlement[0] + final fun (): dev.kord.core.entity/Entitlement // dev.kord.core.event.entitlement/EntitlementCreateEvent.entitlement.|(){}[0] + final val kord // dev.kord.core.event.entitlement/EntitlementCreateEvent.kord|{}kord[0] + final fun (): dev.kord.core/Kord // dev.kord.core.event.entitlement/EntitlementCreateEvent.kord.|(){}[0] + final val shard // dev.kord.core.event.entitlement/EntitlementCreateEvent.shard|{}shard[0] + final fun (): kotlin/Int // dev.kord.core.event.entitlement/EntitlementCreateEvent.shard.|(){}[0] + + final fun toString(): kotlin/String // dev.kord.core.event.entitlement/EntitlementCreateEvent.toString|toString(){}[0] +} + +final class dev.kord.core.event.entitlement/EntitlementDeleteEvent : dev.kord.core.event/Event { // dev.kord.core.event.entitlement/EntitlementDeleteEvent|null[0] + constructor (dev.kord.core.entity/Entitlement, kotlin/Int, kotlin/Any?, dev.kord.core/Kord) // dev.kord.core.event.entitlement/EntitlementDeleteEvent.|(dev.kord.core.entity.Entitlement;kotlin.Int;kotlin.Any?;dev.kord.core.Kord){}[0] + + final val customContext // dev.kord.core.event.entitlement/EntitlementDeleteEvent.customContext|{}customContext[0] + final fun (): kotlin/Any? // dev.kord.core.event.entitlement/EntitlementDeleteEvent.customContext.|(){}[0] + final val entitlement // dev.kord.core.event.entitlement/EntitlementDeleteEvent.entitlement|{}entitlement[0] + final fun (): dev.kord.core.entity/Entitlement // dev.kord.core.event.entitlement/EntitlementDeleteEvent.entitlement.|(){}[0] + final val kord // dev.kord.core.event.entitlement/EntitlementDeleteEvent.kord|{}kord[0] + final fun (): dev.kord.core/Kord // dev.kord.core.event.entitlement/EntitlementDeleteEvent.kord.|(){}[0] + final val shard // dev.kord.core.event.entitlement/EntitlementDeleteEvent.shard|{}shard[0] + final fun (): kotlin/Int // dev.kord.core.event.entitlement/EntitlementDeleteEvent.shard.|(){}[0] + + final fun toString(): kotlin/String // dev.kord.core.event.entitlement/EntitlementDeleteEvent.toString|toString(){}[0] +} + +final class dev.kord.core.event.entitlement/EntitlementUpdateEvent : dev.kord.core.event/Event { // dev.kord.core.event.entitlement/EntitlementUpdateEvent|null[0] + constructor (dev.kord.core.entity/Entitlement, dev.kord.core.entity/Entitlement?, kotlin/Int, kotlin/Any?, dev.kord.core/Kord) // dev.kord.core.event.entitlement/EntitlementUpdateEvent.|(dev.kord.core.entity.Entitlement;dev.kord.core.entity.Entitlement?;kotlin.Int;kotlin.Any?;dev.kord.core.Kord){}[0] + + final val customContext // dev.kord.core.event.entitlement/EntitlementUpdateEvent.customContext|{}customContext[0] + final fun (): kotlin/Any? // dev.kord.core.event.entitlement/EntitlementUpdateEvent.customContext.|(){}[0] + final val entitlement // dev.kord.core.event.entitlement/EntitlementUpdateEvent.entitlement|{}entitlement[0] + final fun (): dev.kord.core.entity/Entitlement // dev.kord.core.event.entitlement/EntitlementUpdateEvent.entitlement.|(){}[0] + final val kord // dev.kord.core.event.entitlement/EntitlementUpdateEvent.kord|{}kord[0] + final fun (): dev.kord.core/Kord // dev.kord.core.event.entitlement/EntitlementUpdateEvent.kord.|(){}[0] + final val old // dev.kord.core.event.entitlement/EntitlementUpdateEvent.old|{}old[0] + final fun (): dev.kord.core.entity/Entitlement? // dev.kord.core.event.entitlement/EntitlementUpdateEvent.old.|(){}[0] + final val shard // dev.kord.core.event.entitlement/EntitlementUpdateEvent.shard|{}shard[0] + final fun (): kotlin/Int // dev.kord.core.event.entitlement/EntitlementUpdateEvent.shard.|(){}[0] + + final fun toString(): kotlin/String // dev.kord.core.event.entitlement/EntitlementUpdateEvent.toString|toString(){}[0] +} + final class dev.kord.core.event.gateway/ConnectEvent : dev.kord.core.event.gateway/GatewayEvent { // dev.kord.core.event.gateway/ConnectEvent|null[0] constructor (dev.kord.core/Kord, kotlin/Int, kotlin/Any?) // dev.kord.core.event.gateway/ConnectEvent.|(dev.kord.core.Kord;kotlin.Int;kotlin.Any?){}[0] @@ -10864,6 +11051,7 @@ final class dev.kord.core.exception/EntityNotFoundException : kotlin/Exception { final inline fun autoModerationRuleNotFound(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): kotlin/Nothing // dev.kord.core.exception/EntityNotFoundException.Companion.autoModerationRuleNotFound|autoModerationRuleNotFound(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final inline fun banNotFound(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): kotlin/Nothing // dev.kord.core.exception/EntityNotFoundException.Companion.banNotFound|banNotFound(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final inline fun emojiNotFound(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): kotlin/Nothing // dev.kord.core.exception/EntityNotFoundException.Companion.emojiNotFound|emojiNotFound(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final inline fun entitlementNotFound(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): kotlin/Nothing // dev.kord.core.exception/EntityNotFoundException.Companion.entitlementNotFound|entitlementNotFound(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final inline fun entityNotFound(kotlin/String, dev.kord.common.entity/Snowflake): kotlin/Nothing // dev.kord.core.exception/EntityNotFoundException.Companion.entityNotFound|entityNotFound(kotlin.String;dev.kord.common.entity.Snowflake){}[0] final inline fun followupMessageNotFound(kotlin/String, dev.kord.common.entity/Snowflake): kotlin/Nothing // dev.kord.core.exception/EntityNotFoundException.Companion.followupMessageNotFound|followupMessageNotFound(kotlin.String;dev.kord.common.entity.Snowflake){}[0] final inline fun guildEntityNotFound(kotlin/String, dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): kotlin/Nothing // dev.kord.core.exception/EntityNotFoundException.Companion.guildEntityNotFound|guildEntityNotFound(kotlin.String;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] @@ -11102,6 +11290,8 @@ final class dev.kord.core.supplier/CacheEntitySupplier : dev.kord.core.supplier/ final suspend fun getAutoModerationRuleOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.automoderation/AutoModerationRule? // dev.kord.core.supplier/CacheEntitySupplier.getAutoModerationRuleOrNull|getAutoModerationRuleOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final suspend fun getChannelOrNull(dev.kord.common.entity/Snowflake): dev.kord.core.entity.channel/Channel? // dev.kord.core.supplier/CacheEntitySupplier.getChannelOrNull|getChannelOrNull(dev.kord.common.entity.Snowflake){}[0] final suspend fun getEmojiOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/GuildEmoji? // dev.kord.core.supplier/CacheEntitySupplier.getEmojiOrNull|getEmojiOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlementOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/Entitlement? // dev.kord.core.supplier/CacheEntitySupplier.getEntitlementOrNull|getEntitlementOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlements(dev.kord.common.entity/Snowflake, dev.kord.rest.json.request/EntitlementsListRequest): kotlinx.coroutines.flow/Flow // dev.kord.core.supplier/CacheEntitySupplier.getEntitlements|getEntitlements(dev.kord.common.entity.Snowflake;dev.kord.rest.json.request.EntitlementsListRequest){}[0] final suspend fun getFollowupMessageOrNull(dev.kord.common.entity/Snowflake, kotlin/String, dev.kord.common.entity/Snowflake): dev.kord.core.entity.interaction.followup/FollowupMessage? // dev.kord.core.supplier/CacheEntitySupplier.getFollowupMessageOrNull|getFollowupMessageOrNull(dev.kord.common.entity.Snowflake;kotlin.String;dev.kord.common.entity.Snowflake){}[0] final suspend fun getGlobalApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GlobalApplicationCommand? // dev.kord.core.supplier/CacheEntitySupplier.getGlobalApplicationCommandOrNull|getGlobalApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final suspend fun getGuildApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GuildApplicationCommand? // dev.kord.core.supplier/CacheEntitySupplier.getGuildApplicationCommandOrNull|getGuildApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] @@ -11174,6 +11364,8 @@ final class dev.kord.core.supplier/RestEntitySupplier : dev.kord.core.supplier/E final suspend fun getAutoModerationRuleOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.automoderation/AutoModerationRule? // dev.kord.core.supplier/RestEntitySupplier.getAutoModerationRuleOrNull|getAutoModerationRuleOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final suspend fun getChannelOrNull(dev.kord.common.entity/Snowflake): dev.kord.core.entity.channel/Channel? // dev.kord.core.supplier/RestEntitySupplier.getChannelOrNull|getChannelOrNull(dev.kord.common.entity.Snowflake){}[0] final suspend fun getEmojiOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/GuildEmoji? // dev.kord.core.supplier/RestEntitySupplier.getEmojiOrNull|getEmojiOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlementOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/Entitlement? // dev.kord.core.supplier/RestEntitySupplier.getEntitlementOrNull|getEntitlementOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlements(dev.kord.common.entity/Snowflake, dev.kord.rest.json.request/EntitlementsListRequest): kotlinx.coroutines.flow/Flow // dev.kord.core.supplier/RestEntitySupplier.getEntitlements|getEntitlements(dev.kord.common.entity.Snowflake;dev.kord.rest.json.request.EntitlementsListRequest){}[0] final suspend fun getFollowupMessageOrNull(dev.kord.common.entity/Snowflake, kotlin/String, dev.kord.common.entity/Snowflake): dev.kord.core.entity.interaction.followup/FollowupMessage? // dev.kord.core.supplier/RestEntitySupplier.getFollowupMessageOrNull|getFollowupMessageOrNull(dev.kord.common.entity.Snowflake;kotlin.String;dev.kord.common.entity.Snowflake){}[0] final suspend fun getGlobalApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GlobalApplicationCommand? // dev.kord.core.supplier/RestEntitySupplier.getGlobalApplicationCommandOrNull|getGlobalApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final suspend fun getGuildApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GuildApplicationCommand? // dev.kord.core.supplier/RestEntitySupplier.getGuildApplicationCommandOrNull|getGuildApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] @@ -11247,6 +11439,8 @@ final class dev.kord.core.supplier/StoreEntitySupplier : dev.kord.core.supplier/ final suspend fun getAutoModerationRuleOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.automoderation/AutoModerationRule? // dev.kord.core.supplier/StoreEntitySupplier.getAutoModerationRuleOrNull|getAutoModerationRuleOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final suspend fun getChannelOrNull(dev.kord.common.entity/Snowflake): dev.kord.core.entity.channel/Channel? // dev.kord.core.supplier/StoreEntitySupplier.getChannelOrNull|getChannelOrNull(dev.kord.common.entity.Snowflake){}[0] final suspend fun getEmojiOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/GuildEmoji? // dev.kord.core.supplier/StoreEntitySupplier.getEmojiOrNull|getEmojiOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlementOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity/Entitlement? // dev.kord.core.supplier/StoreEntitySupplier.getEntitlementOrNull|getEntitlementOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlements(dev.kord.common.entity/Snowflake, dev.kord.rest.json.request/EntitlementsListRequest): kotlinx.coroutines.flow/Flow // dev.kord.core.supplier/StoreEntitySupplier.getEntitlements|getEntitlements(dev.kord.common.entity.Snowflake;dev.kord.rest.json.request.EntitlementsListRequest){}[0] final suspend fun getFollowupMessageOrNull(dev.kord.common.entity/Snowflake, kotlin/String, dev.kord.common.entity/Snowflake): dev.kord.core.entity.interaction.followup/FollowupMessage? // dev.kord.core.supplier/StoreEntitySupplier.getFollowupMessageOrNull|getFollowupMessageOrNull(dev.kord.common.entity.Snowflake;kotlin.String;dev.kord.common.entity.Snowflake){}[0] final suspend fun getGlobalApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GlobalApplicationCommand? // dev.kord.core.supplier/StoreEntitySupplier.getGlobalApplicationCommandOrNull|getGlobalApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] final suspend fun getGuildApplicationCommandOrNull(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GuildApplicationCommand? // dev.kord.core.supplier/StoreEntitySupplier.getGuildApplicationCommandOrNull|getGuildApplicationCommandOrNull(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] @@ -11324,10 +11518,15 @@ final class dev.kord.core/Kord : kotlinx.coroutines/CoroutineScope { // dev.kord final fun toString(): kotlin/String // dev.kord.core/Kord.toString|toString(){}[0] final suspend fun <#A1: kotlin/Any?> getGlobalApplicationCommandOf(dev.kord.common.entity/Snowflake): #A1 // dev.kord.core/Kord.getGlobalApplicationCommandOf|getGlobalApplicationCommandOf(dev.kord.common.entity.Snowflake){0§}[0] final suspend fun <#A1: kotlin/Any?> getGlobalApplicationCommandOfOrNull(dev.kord.common.entity/Snowflake): #A1? // dev.kord.core/Kord.getGlobalApplicationCommandOfOrNull|getGlobalApplicationCommandOfOrNull(dev.kord.common.entity.Snowflake){0§}[0] + final suspend fun createTestEntitlement(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/EntitlementOwnerType): dev.kord.core.entity/Entitlement // dev.kord.core/Kord.createTestEntitlement|createTestEntitlement(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.EntitlementOwnerType){}[0] + final suspend fun createTestEntitlement(dev.kord.common.entity/Snowflake, dev.kord.core.behavior/GuildBehavior): dev.kord.core.entity/Entitlement // dev.kord.core/Kord.createTestEntitlement|createTestEntitlement(dev.kord.common.entity.Snowflake;dev.kord.core.behavior.GuildBehavior){}[0] + final suspend fun createTestEntitlement(dev.kord.common.entity/Snowflake, dev.kord.core.behavior/UserBehavior): dev.kord.core.entity/Entitlement // dev.kord.core/Kord.createTestEntitlement|createTestEntitlement(dev.kord.common.entity.Snowflake;dev.kord.core.behavior.UserBehavior){}[0] final suspend fun editSelf(kotlin/Function1): dev.kord.core.entity/User // dev.kord.core/Kord.editSelf|editSelf(kotlin.Function1){}[0] final suspend fun getApplicationInfo(): dev.kord.core.entity/Application // dev.kord.core/Kord.getApplicationInfo|getApplicationInfo(){}[0] final suspend fun getApplicationRoleConnectionMetadataRecords(): kotlin.collections/List // dev.kord.core/Kord.getApplicationRoleConnectionMetadataRecords|getApplicationRoleConnectionMetadataRecords(){}[0] final suspend fun getChannel(dev.kord.common.entity/Snowflake, dev.kord.core.supplier/EntitySupplyStrategy<*> = ...): dev.kord.core.entity.channel/Channel? // dev.kord.core/Kord.getChannel|getChannel(dev.kord.common.entity.Snowflake;dev.kord.core.supplier.EntitySupplyStrategy<*>){}[0] + final suspend fun getEntitlement(dev.kord.common.entity/Snowflake): dev.kord.core.entity/Entitlement // dev.kord.core/Kord.getEntitlement|getEntitlement(dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlementOrNull(dev.kord.common.entity/Snowflake): dev.kord.core.entity/Entitlement? // dev.kord.core/Kord.getEntitlementOrNull|getEntitlementOrNull(dev.kord.common.entity.Snowflake){}[0] final suspend fun getGlobalApplicationCommand(dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GlobalApplicationCommand // dev.kord.core/Kord.getGlobalApplicationCommand|getGlobalApplicationCommand(dev.kord.common.entity.Snowflake){}[0] final suspend fun getGlobalApplicationCommandOrNull(dev.kord.common.entity/Snowflake): dev.kord.core.entity.application/GlobalApplicationCommand? // dev.kord.core/Kord.getGlobalApplicationCommandOrNull|getGlobalApplicationCommandOrNull(dev.kord.common.entity.Snowflake){}[0] final suspend fun getGuild(dev.kord.common.entity/Snowflake, dev.kord.core.supplier/EntitySupplyStrategy<*> = ...): dev.kord.core.entity/Guild // dev.kord.core/Kord.getGuild|getGuild(dev.kord.common.entity.Snowflake;dev.kord.core.supplier.EntitySupplyStrategy<*>){}[0] @@ -11339,6 +11538,7 @@ final class dev.kord.core/Kord : kotlinx.coroutines/CoroutineScope { // dev.kord final suspend fun getInvite(kotlin/String, kotlin/Boolean = ..., kotlin/Boolean = ..., dev.kord.common.entity/Snowflake? = ...): dev.kord.core.entity/Invite // dev.kord.core/Kord.getInvite|getInvite(kotlin.String;kotlin.Boolean;kotlin.Boolean;dev.kord.common.entity.Snowflake?){}[0] final suspend fun getInviteOrNull(kotlin/String, kotlin/Boolean = ..., kotlin/Boolean = ..., dev.kord.common.entity/Snowflake? = ...): dev.kord.core.entity/Invite? // dev.kord.core/Kord.getInviteOrNull|getInviteOrNull(kotlin.String;kotlin.Boolean;kotlin.Boolean;dev.kord.common.entity.Snowflake?){}[0] final suspend fun getSelf(dev.kord.core.supplier/EntitySupplyStrategy<*> = ...): dev.kord.core.entity/User // dev.kord.core/Kord.getSelf|getSelf(dev.kord.core.supplier.EntitySupplyStrategy<*>){}[0] + final suspend fun getSkus(): kotlin.collections/List // dev.kord.core/Kord.getSkus|getSkus(){}[0] final suspend fun getSticker(dev.kord.common.entity/Snowflake): dev.kord.core.entity/Sticker // dev.kord.core/Kord.getSticker|getSticker(dev.kord.common.entity.Snowflake){}[0] final suspend fun getUser(dev.kord.common.entity/Snowflake, dev.kord.core.supplier/EntitySupplyStrategy<*> = ...): dev.kord.core.entity/User? // dev.kord.core/Kord.getUser|getUser(dev.kord.common.entity.Snowflake;dev.kord.core.supplier.EntitySupplyStrategy<*>){}[0] final suspend fun getWebhook(dev.kord.common.entity/Snowflake, dev.kord.core.supplier/EntitySupplyStrategy<*> = ...): dev.kord.core.entity/Webhook // dev.kord.core/Kord.getWebhook|getWebhook(dev.kord.common.entity.Snowflake;dev.kord.core.supplier.EntitySupplyStrategy<*>){}[0] @@ -11360,6 +11560,7 @@ final class dev.kord.core/Kord : kotlinx.coroutines/CoroutineScope { // dev.kord final suspend inline fun createGuildMessageCommand(dev.kord.common.entity/Snowflake, kotlin/String, kotlin/Function1 = ...): dev.kord.core.entity.application/GuildMessageCommand // dev.kord.core/Kord.createGuildMessageCommand|createGuildMessageCommand(dev.kord.common.entity.Snowflake;kotlin.String;kotlin.Function1){}[0] final suspend inline fun createGuildUserCommand(dev.kord.common.entity/Snowflake, kotlin/String, kotlin/Function1 = ...): dev.kord.core.entity.application/GuildUserCommand // dev.kord.core/Kord.createGuildUserCommand|createGuildUserCommand(dev.kord.common.entity.Snowflake;kotlin.String;kotlin.Function1){}[0] final suspend inline fun editPresence(kotlin/Function1) // dev.kord.core/Kord.editPresence|editPresence(kotlin.Function1){}[0] + final suspend inline fun getEntitlements(dev.kord.core.supplier/EntitySupplyStrategy<*> = ..., kotlin/Function1 = ...): kotlinx.coroutines.flow/Flow // dev.kord.core/Kord.getEntitlements|getEntitlements(dev.kord.core.supplier.EntitySupplyStrategy<*>;kotlin.Function1){}[0] final suspend inline fun login(kotlin/Function1 = ...) // dev.kord.core/Kord.login|login(kotlin.Function1){}[0] final suspend inline fun updateApplicationRoleConnectionMetadataRecords(kotlin/Function1): kotlin.collections/List // dev.kord.core/Kord.updateApplicationRoleConnectionMetadataRecords|updateApplicationRoleConnectionMetadataRecords(kotlin.Function1){}[0] diff --git a/gateway/api/gateway.klib.api b/gateway/api/gateway.klib.api index a3a0da74c31c..36e8477050bf 100644 --- a/gateway/api/gateway.klib.api +++ b/gateway/api/gateway.klib.api @@ -783,6 +783,54 @@ final class dev.kord.gateway/DiscordThreadMembersUpdate { // dev.kord.gateway/Di } } +final class dev.kord.gateway/EntitlementCreate : dev.kord.gateway/DispatchEvent { // dev.kord.gateway/EntitlementCreate|null[0] + constructor (dev.kord.common.entity/DiscordEntitlement, kotlin/Int?) // dev.kord.gateway/EntitlementCreate.|(dev.kord.common.entity.DiscordEntitlement;kotlin.Int?){}[0] + + final val entitlement // dev.kord.gateway/EntitlementCreate.entitlement|{}entitlement[0] + final fun (): dev.kord.common.entity/DiscordEntitlement // dev.kord.gateway/EntitlementCreate.entitlement.|(){}[0] + final val sequence // dev.kord.gateway/EntitlementCreate.sequence|{}sequence[0] + final fun (): kotlin/Int? // dev.kord.gateway/EntitlementCreate.sequence.|(){}[0] + + final fun component1(): dev.kord.common.entity/DiscordEntitlement // dev.kord.gateway/EntitlementCreate.component1|component1(){}[0] + final fun component2(): kotlin/Int? // dev.kord.gateway/EntitlementCreate.component2|component2(){}[0] + final fun copy(dev.kord.common.entity/DiscordEntitlement = ..., kotlin/Int? = ...): dev.kord.gateway/EntitlementCreate // dev.kord.gateway/EntitlementCreate.copy|copy(dev.kord.common.entity.DiscordEntitlement;kotlin.Int?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.gateway/EntitlementCreate.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.gateway/EntitlementCreate.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.gateway/EntitlementCreate.toString|toString(){}[0] +} + +final class dev.kord.gateway/EntitlementDelete : dev.kord.gateway/DispatchEvent { // dev.kord.gateway/EntitlementDelete|null[0] + constructor (dev.kord.common.entity/DiscordEntitlement, kotlin/Int?) // dev.kord.gateway/EntitlementDelete.|(dev.kord.common.entity.DiscordEntitlement;kotlin.Int?){}[0] + + final val entitlement // dev.kord.gateway/EntitlementDelete.entitlement|{}entitlement[0] + final fun (): dev.kord.common.entity/DiscordEntitlement // dev.kord.gateway/EntitlementDelete.entitlement.|(){}[0] + final val sequence // dev.kord.gateway/EntitlementDelete.sequence|{}sequence[0] + final fun (): kotlin/Int? // dev.kord.gateway/EntitlementDelete.sequence.|(){}[0] + + final fun component1(): dev.kord.common.entity/DiscordEntitlement // dev.kord.gateway/EntitlementDelete.component1|component1(){}[0] + final fun component2(): kotlin/Int? // dev.kord.gateway/EntitlementDelete.component2|component2(){}[0] + final fun copy(dev.kord.common.entity/DiscordEntitlement = ..., kotlin/Int? = ...): dev.kord.gateway/EntitlementDelete // dev.kord.gateway/EntitlementDelete.copy|copy(dev.kord.common.entity.DiscordEntitlement;kotlin.Int?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.gateway/EntitlementDelete.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.gateway/EntitlementDelete.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.gateway/EntitlementDelete.toString|toString(){}[0] +} + +final class dev.kord.gateway/EntitlementUpdate : dev.kord.gateway/DispatchEvent { // dev.kord.gateway/EntitlementUpdate|null[0] + constructor (dev.kord.common.entity/DiscordEntitlement, kotlin/Int?) // dev.kord.gateway/EntitlementUpdate.|(dev.kord.common.entity.DiscordEntitlement;kotlin.Int?){}[0] + + final val entitlement // dev.kord.gateway/EntitlementUpdate.entitlement|{}entitlement[0] + final fun (): dev.kord.common.entity/DiscordEntitlement // dev.kord.gateway/EntitlementUpdate.entitlement.|(){}[0] + final val sequence // dev.kord.gateway/EntitlementUpdate.sequence|{}sequence[0] + final fun (): kotlin/Int? // dev.kord.gateway/EntitlementUpdate.sequence.|(){}[0] + + final fun component1(): dev.kord.common.entity/DiscordEntitlement // dev.kord.gateway/EntitlementUpdate.component1|component1(){}[0] + final fun component2(): kotlin/Int? // dev.kord.gateway/EntitlementUpdate.component2|component2(){}[0] + final fun copy(dev.kord.common.entity/DiscordEntitlement = ..., kotlin/Int? = ...): dev.kord.gateway/EntitlementUpdate // dev.kord.gateway/EntitlementUpdate.copy|copy(dev.kord.common.entity.DiscordEntitlement;kotlin.Int?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.gateway/EntitlementUpdate.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.gateway/EntitlementUpdate.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.gateway/EntitlementUpdate.toString|toString(){}[0] +} + final class dev.kord.gateway/GatewayConfiguration { // dev.kord.gateway/GatewayConfiguration|null[0] constructor (kotlin/String, kotlin/String, dev.kord.common.entity/DiscordShard, dev.kord.common.entity.optional/Optional = ..., kotlin/Int, dev.kord.gateway/Intents) // dev.kord.gateway/GatewayConfiguration.|(kotlin.String;kotlin.String;dev.kord.common.entity.DiscordShard;dev.kord.common.entity.optional.Optional;kotlin.Int;dev.kord.gateway.Intents){}[0] diff --git a/rest/api/rest.api b/rest/api/rest.api index da14f5e576c7..9f764ee1e388 100644 --- a/rest/api/rest.api +++ b/rest/api/rest.api @@ -5334,13 +5334,13 @@ public final class dev/kord/rest/json/request/TestEntitlementCreateRequest { public fun toString ()Ljava/lang/String; } -public final class dev/kord/rest/json/request/TestEntitlementCreateRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { +public synthetic class dev/kord/rest/json/request/TestEntitlementCreateRequest$$serializer : kotlinx/serialization/internal/GeneratedSerializer { public static final field INSTANCE Ldev/kord/rest/json/request/TestEntitlementCreateRequest$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/rest/json/request/TestEntitlementCreateRequest; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/rest/json/request/TestEntitlementCreateRequest; public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/rest/json/request/TestEntitlementCreateRequest;)V + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/rest/json/request/TestEntitlementCreateRequest;)V public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; } diff --git a/rest/api/rest.klib.api b/rest/api/rest.klib.api index 569a77c7fb97..1c7c8d8924f1 100644 --- a/rest/api/rest.klib.api +++ b/rest/api/rest.klib.api @@ -43,6 +43,7 @@ final enum class dev.kord.rest.json/JsonErrorCode : kotlin/Enum) // dev.kord.rest.builder.component/ActionRowBuilder.interactionButton|interactionButton(dev.kord.common.entity.ButtonStyle;kotlin.String;kotlin.Function1){}[0] final inline fun linkButton(kotlin/String, kotlin/Function1) // dev.kord.rest.builder.component/ActionRowBuilder.linkButton|linkButton(kotlin.String;kotlin.Function1){}[0] final inline fun mentionableSelect(kotlin/String, kotlin/Function1 = ...) // dev.kord.rest.builder.component/ActionRowBuilder.mentionableSelect|mentionableSelect(kotlin.String;kotlin.Function1){}[0] + final inline fun premiumButton(dev.kord.common.entity/Snowflake, kotlin/Function1) // dev.kord.rest.builder.component/ActionRowBuilder.premiumButton|premiumButton(dev.kord.common.entity.Snowflake;kotlin.Function1){}[0] final inline fun roleSelect(kotlin/String, kotlin/Function1 = ...) // dev.kord.rest.builder.component/ActionRowBuilder.roleSelect|roleSelect(kotlin.String;kotlin.Function1){}[0] final inline fun stringSelect(kotlin/String, kotlin/Function1) // dev.kord.rest.builder.component/ActionRowBuilder.stringSelect|stringSelect(kotlin.String;kotlin.Function1){}[0] final inline fun textInput(dev.kord.common.entity/TextInputStyle, kotlin/String, kotlin/String, kotlin/Function1 = ...) // dev.kord.rest.builder.component/ActionRowBuilder.textInput|textInput(dev.kord.common.entity.TextInputStyle;kotlin.String;kotlin.String;kotlin.Function1){}[0] @@ -1655,6 +1658,16 @@ final class dev.kord.rest.builder.component/MentionableSelectBuilder : dev.kord. final fun (): kotlin.collections/MutableList // dev.kord.rest.builder.component/MentionableSelectBuilder.defaultUsers.|(){}[0] } +final class dev.kord.rest.builder.component/PremiumButtonBuilder : dev.kord.rest.builder.component/ActionRowComponentBuilder { // dev.kord.rest.builder.component/PremiumButtonBuilder|null[0] + constructor (dev.kord.common.entity/Snowflake) // dev.kord.rest.builder.component/PremiumButtonBuilder.|(dev.kord.common.entity.Snowflake){}[0] + + final var skuId // dev.kord.rest.builder.component/PremiumButtonBuilder.skuId|{}skuId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.rest.builder.component/PremiumButtonBuilder.skuId.|(){}[0] + final fun (dev.kord.common.entity/Snowflake) // dev.kord.rest.builder.component/PremiumButtonBuilder.skuId.|(dev.kord.common.entity.Snowflake){}[0] + + final fun build(): dev.kord.common.entity/DiscordChatComponent // dev.kord.rest.builder.component/PremiumButtonBuilder.build|build(){}[0] +} + final class dev.kord.rest.builder.component/RoleSelectBuilder : dev.kord.rest.builder.component/SelectMenuBuilder { // dev.kord.rest.builder.component/RoleSelectBuilder|null[0] constructor (kotlin/String) // dev.kord.rest.builder.component/RoleSelectBuilder.|(kotlin.String){}[0] @@ -1727,6 +1740,33 @@ final class dev.kord.rest.builder.component/UserSelectBuilder : dev.kord.rest.bu final fun (): kotlin.collections/MutableList // dev.kord.rest.builder.component/UserSelectBuilder.defaultUsers.|(){}[0] } +final class dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder : dev.kord.rest.builder/RequestBuilder { // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder|null[0] + constructor () // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.|(){}[0] + + final var excludeEnded // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.excludeEnded|{}excludeEnded[0] + final fun (): kotlin/Boolean? // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.excludeEnded.|(){}[0] + final fun (kotlin/Boolean?) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.excludeEnded.|(kotlin.Boolean?){}[0] + final var guildId // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.guildId|{}guildId[0] + final fun (): dev.kord.common.entity/Snowflake? // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.guildId.|(){}[0] + final fun (dev.kord.common.entity/Snowflake?) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.guildId.|(dev.kord.common.entity.Snowflake?){}[0] + final var limit // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.limit|{}limit[0] + final fun (): kotlin/Int? // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.limit.|(){}[0] + final fun (kotlin/Int?) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.limit.|(kotlin.Int?){}[0] + final var position // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.position|{}position[0] + final fun (): dev.kord.rest.route/Position.BeforeOrAfter? // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.position.|(){}[0] + final fun (dev.kord.rest.route/Position.BeforeOrAfter?) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.position.|(dev.kord.rest.route.Position.BeforeOrAfter?){}[0] + final var skuIds // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.skuIds|{}skuIds[0] + final fun (): kotlin.collections/MutableList // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.skuIds.|(){}[0] + final fun (kotlin.collections/MutableList) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.skuIds.|(kotlin.collections.MutableList){}[0] + final var userId // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.userId|{}userId[0] + final fun (): dev.kord.common.entity/Snowflake? // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.userId.|(){}[0] + final fun (dev.kord.common.entity/Snowflake?) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.userId.|(dev.kord.common.entity.Snowflake?){}[0] + + final fun after(dev.kord.common.entity/Snowflake) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.after|after(dev.kord.common.entity.Snowflake){}[0] + final fun before(dev.kord.common.entity/Snowflake) // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.before|before(dev.kord.common.entity.Snowflake){}[0] + final fun toRequest(): dev.kord.rest.json.request/EntitlementsListRequest // dev.kord.rest.builder.entitlement/EntitlementsListRequestBuilder.toRequest|toRequest(){}[0] +} + final class dev.kord.rest.builder.guild/CurrentVoiceStateModifyBuilder : dev.kord.rest.builder/RequestBuilder { // dev.kord.rest.builder.guild/CurrentVoiceStateModifyBuilder|null[0] constructor () // dev.kord.rest.builder.guild/CurrentVoiceStateModifyBuilder.|(){}[0] @@ -3899,6 +3939,34 @@ final class dev.kord.rest.json.request/EmojiModifyRequest { // dev.kord.rest.jso } } +final class dev.kord.rest.json.request/EntitlementsListRequest { // dev.kord.rest.json.request/EntitlementsListRequest|null[0] + constructor (dev.kord.common.entity/Snowflake? = ..., kotlin.collections/List = ..., dev.kord.rest.route/Position.BeforeOrAfter? = ..., kotlin/Int? = ..., dev.kord.common.entity/Snowflake? = ..., kotlin/Boolean? = ...) // dev.kord.rest.json.request/EntitlementsListRequest.|(dev.kord.common.entity.Snowflake?;kotlin.collections.List;dev.kord.rest.route.Position.BeforeOrAfter?;kotlin.Int?;dev.kord.common.entity.Snowflake?;kotlin.Boolean?){}[0] + + final val excludeEnded // dev.kord.rest.json.request/EntitlementsListRequest.excludeEnded|{}excludeEnded[0] + final fun (): kotlin/Boolean? // dev.kord.rest.json.request/EntitlementsListRequest.excludeEnded.|(){}[0] + final val guildId // dev.kord.rest.json.request/EntitlementsListRequest.guildId|{}guildId[0] + final fun (): dev.kord.common.entity/Snowflake? // dev.kord.rest.json.request/EntitlementsListRequest.guildId.|(){}[0] + final val limit // dev.kord.rest.json.request/EntitlementsListRequest.limit|{}limit[0] + final fun (): kotlin/Int? // dev.kord.rest.json.request/EntitlementsListRequest.limit.|(){}[0] + final val position // dev.kord.rest.json.request/EntitlementsListRequest.position|{}position[0] + final fun (): dev.kord.rest.route/Position.BeforeOrAfter? // dev.kord.rest.json.request/EntitlementsListRequest.position.|(){}[0] + final val skuIds // dev.kord.rest.json.request/EntitlementsListRequest.skuIds|{}skuIds[0] + final fun (): kotlin.collections/List // dev.kord.rest.json.request/EntitlementsListRequest.skuIds.|(){}[0] + final val userId // dev.kord.rest.json.request/EntitlementsListRequest.userId|{}userId[0] + final fun (): dev.kord.common.entity/Snowflake? // dev.kord.rest.json.request/EntitlementsListRequest.userId.|(){}[0] + + final fun component1(): dev.kord.common.entity/Snowflake? // dev.kord.rest.json.request/EntitlementsListRequest.component1|component1(){}[0] + final fun component2(): kotlin.collections/List // dev.kord.rest.json.request/EntitlementsListRequest.component2|component2(){}[0] + final fun component3(): dev.kord.rest.route/Position.BeforeOrAfter? // dev.kord.rest.json.request/EntitlementsListRequest.component3|component3(){}[0] + final fun component4(): kotlin/Int? // dev.kord.rest.json.request/EntitlementsListRequest.component4|component4(){}[0] + final fun component5(): dev.kord.common.entity/Snowflake? // dev.kord.rest.json.request/EntitlementsListRequest.component5|component5(){}[0] + final fun component6(): kotlin/Boolean? // dev.kord.rest.json.request/EntitlementsListRequest.component6|component6(){}[0] + final fun copy(dev.kord.common.entity/Snowflake? = ..., kotlin.collections/List = ..., dev.kord.rest.route/Position.BeforeOrAfter? = ..., kotlin/Int? = ..., dev.kord.common.entity/Snowflake? = ..., kotlin/Boolean? = ...): dev.kord.rest.json.request/EntitlementsListRequest // dev.kord.rest.json.request/EntitlementsListRequest.copy|copy(dev.kord.common.entity.Snowflake?;kotlin.collections.List;dev.kord.rest.route.Position.BeforeOrAfter?;kotlin.Int?;dev.kord.common.entity.Snowflake?;kotlin.Boolean?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.rest.json.request/EntitlementsListRequest.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.rest.json.request/EntitlementsListRequest.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.rest.json.request/EntitlementsListRequest.toString|toString(){}[0] +} + final class dev.kord.rest.json.request/FollowupMessageCreateRequest { // dev.kord.rest.json.request/FollowupMessageCreateRequest|null[0] constructor (dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/OptionalBoolean = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional> = ..., dev.kord.common.entity.optional/Optional = ...) // dev.kord.rest.json.request/FollowupMessageCreateRequest.|(dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.OptionalBoolean;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional>;dev.kord.common.entity.optional.Optional){}[0] @@ -5754,6 +5822,38 @@ final class dev.kord.rest.json.request/StartThreadRequest { // dev.kord.rest.jso } } +final class dev.kord.rest.json.request/TestEntitlementCreateRequest { // dev.kord.rest.json.request/TestEntitlementCreateRequest|null[0] + constructor (dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, dev.kord.common.entity/EntitlementOwnerType) // dev.kord.rest.json.request/TestEntitlementCreateRequest.|(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.EntitlementOwnerType){}[0] + + final val ownerId // dev.kord.rest.json.request/TestEntitlementCreateRequest.ownerId|{}ownerId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.rest.json.request/TestEntitlementCreateRequest.ownerId.|(){}[0] + final val ownerType // dev.kord.rest.json.request/TestEntitlementCreateRequest.ownerType|{}ownerType[0] + final fun (): dev.kord.common.entity/EntitlementOwnerType // dev.kord.rest.json.request/TestEntitlementCreateRequest.ownerType.|(){}[0] + final val skuId // dev.kord.rest.json.request/TestEntitlementCreateRequest.skuId|{}skuId[0] + final fun (): dev.kord.common.entity/Snowflake // dev.kord.rest.json.request/TestEntitlementCreateRequest.skuId.|(){}[0] + + final fun component1(): dev.kord.common.entity/Snowflake // dev.kord.rest.json.request/TestEntitlementCreateRequest.component1|component1(){}[0] + final fun component2(): dev.kord.common.entity/Snowflake // dev.kord.rest.json.request/TestEntitlementCreateRequest.component2|component2(){}[0] + final fun component3(): dev.kord.common.entity/EntitlementOwnerType // dev.kord.rest.json.request/TestEntitlementCreateRequest.component3|component3(){}[0] + final fun copy(dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/Snowflake = ..., dev.kord.common.entity/EntitlementOwnerType = ...): dev.kord.rest.json.request/TestEntitlementCreateRequest // dev.kord.rest.json.request/TestEntitlementCreateRequest.copy|copy(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;dev.kord.common.entity.EntitlementOwnerType){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // dev.kord.rest.json.request/TestEntitlementCreateRequest.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // dev.kord.rest.json.request/TestEntitlementCreateRequest.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // dev.kord.rest.json.request/TestEntitlementCreateRequest.toString|toString(){}[0] + + final object $serializer : kotlinx.serialization.internal/GeneratedSerializer { // dev.kord.rest.json.request/TestEntitlementCreateRequest.$serializer|null[0] + final val descriptor // dev.kord.rest.json.request/TestEntitlementCreateRequest.$serializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // dev.kord.rest.json.request/TestEntitlementCreateRequest.$serializer.descriptor.|(){}[0] + + final fun childSerializers(): kotlin/Array> // dev.kord.rest.json.request/TestEntitlementCreateRequest.$serializer.childSerializers|childSerializers(){}[0] + final fun deserialize(kotlinx.serialization.encoding/Decoder): dev.kord.rest.json.request/TestEntitlementCreateRequest // dev.kord.rest.json.request/TestEntitlementCreateRequest.$serializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, dev.kord.rest.json.request/TestEntitlementCreateRequest) // dev.kord.rest.json.request/TestEntitlementCreateRequest.$serializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;dev.kord.rest.json.request.TestEntitlementCreateRequest){}[0] + } + + final object Companion { // dev.kord.rest.json.request/TestEntitlementCreateRequest.Companion|null[0] + final fun serializer(): kotlinx.serialization/KSerializer // dev.kord.rest.json.request/TestEntitlementCreateRequest.Companion.serializer|serializer(){}[0] + } +} + final class dev.kord.rest.json.request/UserAddDMRequest { // dev.kord.rest.json.request/UserAddDMRequest|null[0] constructor (kotlin/String, kotlin/String) // dev.kord.rest.json.request/UserAddDMRequest.|(kotlin.String;kotlin.String){}[0] @@ -6602,6 +6702,16 @@ final class dev.kord.rest.service/EmojiService : dev.kord.rest.service/RestServi final suspend inline fun modifyEmoji(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake, kotlin/Function1): dev.kord.common.entity/DiscordEmoji // dev.kord.rest.service/EmojiService.modifyEmoji|modifyEmoji(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake;kotlin.Function1){}[0] } +final class dev.kord.rest.service/EntitlementService : dev.kord.rest.service/RestService { // dev.kord.rest.service/EntitlementService|null[0] + constructor (dev.kord.rest.request/RequestHandler) // dev.kord.rest.service/EntitlementService.|(dev.kord.rest.request.RequestHandler){}[0] + + final suspend fun consumeEntitlement(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake) // dev.kord.rest.service/EntitlementService.consumeEntitlement|consumeEntitlement(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun createTestEntitlement(dev.kord.common.entity/Snowflake, dev.kord.rest.json.request/TestEntitlementCreateRequest): dev.kord.common.entity/DiscordEntitlement // dev.kord.rest.service/EntitlementService.createTestEntitlement|createTestEntitlement(dev.kord.common.entity.Snowflake;dev.kord.rest.json.request.TestEntitlementCreateRequest){}[0] + final suspend fun deleteTestEntitlement(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake) // dev.kord.rest.service/EntitlementService.deleteTestEntitlement|deleteTestEntitlement(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun getEntitlement(dev.kord.common.entity/Snowflake, dev.kord.common.entity/Snowflake): dev.kord.common.entity/DiscordEntitlement // dev.kord.rest.service/EntitlementService.getEntitlement|getEntitlement(dev.kord.common.entity.Snowflake;dev.kord.common.entity.Snowflake){}[0] + final suspend fun listEntitlements(dev.kord.common.entity/Snowflake, dev.kord.rest.json.request/EntitlementsListRequest): kotlin.collections/List // dev.kord.rest.service/EntitlementService.listEntitlements|listEntitlements(dev.kord.common.entity.Snowflake;dev.kord.rest.json.request.EntitlementsListRequest){}[0] +} + final class dev.kord.rest.service/GuildService : dev.kord.rest.service/RestService { // dev.kord.rest.service/GuildService|null[0] constructor (dev.kord.rest.request/RequestHandler) // dev.kord.rest.service/GuildService.|(dev.kord.rest.request.RequestHandler){}[0] @@ -6742,12 +6852,16 @@ final class dev.kord.rest.service/RestClient : dev.kord.rest.service/RestService final fun (): dev.kord.rest.service/ChannelService // dev.kord.rest.service/RestClient.channel.|(){}[0] final val emoji // dev.kord.rest.service/RestClient.emoji|{}emoji[0] final fun (): dev.kord.rest.service/EmojiService // dev.kord.rest.service/RestClient.emoji.|(){}[0] + final val entitlement // dev.kord.rest.service/RestClient.entitlement|{}entitlement[0] + final fun (): dev.kord.rest.service/EntitlementService // dev.kord.rest.service/RestClient.entitlement.|(){}[0] final val guild // dev.kord.rest.service/RestClient.guild|{}guild[0] final fun (): dev.kord.rest.service/GuildService // dev.kord.rest.service/RestClient.guild.|(){}[0] final val interaction // dev.kord.rest.service/RestClient.interaction|{}interaction[0] final fun (): dev.kord.rest.service/InteractionService // dev.kord.rest.service/RestClient.interaction.|(){}[0] final val invite // dev.kord.rest.service/RestClient.invite|{}invite[0] final fun (): dev.kord.rest.service/InviteService // dev.kord.rest.service/RestClient.invite.|(){}[0] + final val sku // dev.kord.rest.service/RestClient.sku|{}sku[0] + final fun (): dev.kord.rest.service/SkuService // dev.kord.rest.service/RestClient.sku.|(){}[0] final val stageInstance // dev.kord.rest.service/RestClient.stageInstance|{}stageInstance[0] final fun (): dev.kord.rest.service/StageInstanceService // dev.kord.rest.service/RestClient.stageInstance.|(){}[0] final val sticker // dev.kord.rest.service/RestClient.sticker|{}sticker[0] @@ -6764,6 +6878,12 @@ final class dev.kord.rest.service/RestClient : dev.kord.rest.service/RestService final suspend inline fun <#A1: kotlin/Any?> unsafe(dev.kord.rest.route/Route<#A1>, kotlin/Function1, kotlin/Unit>): #A1 // dev.kord.rest.service/RestClient.unsafe|unsafe(dev.kord.rest.route.Route<0:0>;kotlin.Function1,kotlin.Unit>){0§}[0] } +final class dev.kord.rest.service/SkuService : dev.kord.rest.service/RestService { // dev.kord.rest.service/SkuService|null[0] + constructor (dev.kord.rest.request/RequestHandler) // dev.kord.rest.service/SkuService.|(dev.kord.rest.request.RequestHandler){}[0] + + final suspend fun listSkus(dev.kord.common.entity/Snowflake): kotlin.collections/List // dev.kord.rest.service/SkuService.listSkus|listSkus(dev.kord.common.entity.Snowflake){}[0] +} + final class dev.kord.rest.service/StageInstanceService : dev.kord.rest.service/RestService { // dev.kord.rest.service/StageInstanceService|null[0] constructor (dev.kord.rest.request/RequestHandler) // dev.kord.rest.service/StageInstanceService.|(dev.kord.rest.request.RequestHandler){}[0] @@ -7097,6 +7217,14 @@ sealed class <#A: kotlin/Any?> dev.kord.rest.route/Route { // dev.kord.rest.rout final object EmojiId : dev.kord.rest.route/Route.Key // dev.kord.rest.route/Route.EmojiId|null[0] + final object EntitlementConsume : dev.kord.rest.route/Route // dev.kord.rest.route/Route.EntitlementConsume|null[0] + + final object EntitlementGet : dev.kord.rest.route/Route // dev.kord.rest.route/Route.EntitlementGet|null[0] + + final object EntitlementId : dev.kord.rest.route/Route.Key // dev.kord.rest.route/Route.EntitlementId|null[0] + + final object EntitlementsList : dev.kord.rest.route/Route> // dev.kord.rest.route/Route.EntitlementsList|null[0] + final object ExecuteGithubWebhookPost : dev.kord.rest.route/Route // dev.kord.rest.route/Route.ExecuteGithubWebhookPost|null[0] final object ExecuteSlackWebhookPost : dev.kord.rest.route/Route // dev.kord.rest.route/Route.ExecuteSlackWebhookPost|null[0] @@ -7355,6 +7483,8 @@ sealed class <#A: kotlin/Any?> dev.kord.rest.route/Route { // dev.kord.rest.rout final object SelfVoiceStatePatch : dev.kord.rest.route/Route // dev.kord.rest.route/Route.SelfVoiceStatePatch|null[0] + final object SkusList : dev.kord.rest.route/Route> // dev.kord.rest.route/Route.SkusList|null[0] + final object StageInstanceDelete : dev.kord.rest.route/Route // dev.kord.rest.route/Route.StageInstanceDelete|null[0] final object StageInstanceGet : dev.kord.rest.route/Route // dev.kord.rest.route/Route.StageInstanceGet|null[0] @@ -7381,6 +7511,10 @@ sealed class <#A: kotlin/Any?> dev.kord.rest.route/Route { // dev.kord.rest.rout final object TemplateSyncPut : dev.kord.rest.route/Route // dev.kord.rest.route/Route.TemplateSyncPut|null[0] + final object TestEntitlementCreate : dev.kord.rest.route/Route // dev.kord.rest.route/Route.TestEntitlementCreate|null[0] + + final object TestEntitlementDelete : dev.kord.rest.route/Route // dev.kord.rest.route/Route.TestEntitlementDelete|null[0] + final object ThreadMembersGet : dev.kord.rest.route/Route> // dev.kord.rest.route/Route.ThreadMembersGet|null[0] final object TypingIndicatorPost : dev.kord.rest.route/Route // dev.kord.rest.route/Route.TypingIndicatorPost|null[0]