diff --git a/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionContextType.kt b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionContextType.kt new file mode 100644 index 000000000000..0be69ba02ab3 --- /dev/null +++ b/common/build/generated/ksp/metadata/commonMain/kotlin/dev/kord/common/entity/InteractionContextType.kt @@ -0,0 +1,87 @@ +// 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 [InteractionContextType]s in the + * [Discord Developer Documentation](https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-context-types). + */ +@Serializable(with = InteractionContextType.Serializer::class) +public sealed class InteractionContextType( + /** + * The raw type used by Discord. + */ + public val type: Int, +) { + final override fun equals(other: Any?): Boolean = this === other || + (other is InteractionContextType && this.type == other.type) + + final override fun hashCode(): Int = type.hashCode() + + final override fun toString(): String = + if (this is Unknown) "InteractionContextType.Unknown(type=$type)" + else "InteractionContextType.${this::class.simpleName}" + + /** + * An unknown [InteractionContextType]. + * + * This is used as a fallback for [InteractionContextType]s that haven't been added to Kord yet. + */ + public class Unknown internal constructor( + type: Int, + ) : InteractionContextType(type) + + public object Guild : InteractionContextType(0) + + public object BotDm : InteractionContextType(1) + + public object PrivateChannel : InteractionContextType(2) + + internal object Serializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("dev.kord.common.entity.InteractionContextType", + PrimitiveKind.INT) + + override fun serialize(encoder: Encoder, `value`: InteractionContextType) { + encoder.encodeInt(value.type) + } + + override fun deserialize(decoder: Decoder): InteractionContextType = + from(decoder.decodeInt()) + } + + public companion object { + /** + * A [List] of all known [InteractionContextType]s. + */ + public val entries: List by lazy(mode = PUBLICATION) { + listOf( + Guild, + BotDm, + PrivateChannel, + ) + } + + /** + * Returns an instance of [InteractionContextType] with [InteractionContextType.type] equal + * to the specified [type]. + */ + public fun from(type: Int): InteractionContextType = when (type) { + 0 -> Guild + 1 -> BotDm + 2 -> PrivateChannel + else -> Unknown(type) + } + } +} diff --git a/common/src/commonMain/kotlin/entity/Interactions.kt b/common/src/commonMain/kotlin/entity/Interactions.kt index 57e125fb7ac2..ba466f87c8e5 100644 --- a/common/src/commonMain/kotlin/entity/Interactions.kt +++ b/common/src/commonMain/kotlin/entity/Interactions.kt @@ -75,6 +75,16 @@ ], ) +@file:Generate( + INT_KORD_ENUM, name = "InteractionContextType", valueName = "type", + docUrl = "https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-context-types", + entries = [ + Entry("Guild", intValue = 0), + Entry("BotDm", intValue = 1), + Entry("PrivateChannel", intValue = 2), + ] +) + package dev.kord.common.entity import dev.kord.common.Locale @@ -113,7 +123,9 @@ public data class DiscordApplicationCommand( @SerialName("default_member_permissions") val defaultMemberPermissions: Permissions?, @SerialName("dm_permission") + @Deprecated("'dm_permission' is deprecated in favor of 'contexts'.") val dmPermission: OptionalBoolean = OptionalBoolean.Missing, + val contexts: Optional> = Optional.Missing(), @SerialName("default_permission") @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'.") val defaultPermission: OptionalBoolean? = OptionalBoolean.Missing, @@ -262,6 +274,7 @@ public data class DiscordInteraction( val guildLocale: Optional = Optional.Missing(), // Don't trust the docs: This can be missing val entitlements: Optional> = Optional.Missing(), + val context: Optional = Optional.Missing(), ) { /** diff --git a/common/src/commonTest/kotlin/json/InteractionTest.kt b/common/src/commonTest/kotlin/json/InteractionTest.kt index eaf6bb6aa796..43808641e0e3 100644 --- a/common/src/commonTest/kotlin/json/InteractionTest.kt +++ b/common/src/commonTest/kotlin/json/InteractionTest.kt @@ -62,6 +62,7 @@ class InteractionTest { arg.value shouldBe 1L appPermissions shouldBe perms entitlements shouldBe testEntitlements + context shouldBe InteractionContextType.Guild } } @@ -115,6 +116,7 @@ class InteractionTest { arg.value shouldBe 1L appPermissions shouldBe perms entitlements shouldBe testEntitlements + context shouldBe InteractionContextType.BotDm } } @@ -156,6 +158,7 @@ class InteractionTest { id shouldBe "847587388497854464" appPermissions shouldBe perms entitlements shouldBe testEntitlements + context shouldBe InteractionContextType.PrivateChannel } } diff --git a/common/src/commonTest/resources/json/interaction/groupsubcommand.json b/common/src/commonTest/resources/json/interaction/groupsubcommand.json index d006f7b3defb..ad85cbce1ac4 100644 --- a/common/src/commonTest/resources/json/interaction/groupsubcommand.json +++ b/common/src/commonTest/resources/json/interaction/groupsubcommand.json @@ -63,5 +63,6 @@ "type":8, "deleted":false } - ] + ], + "context": 0 } diff --git a/common/src/commonTest/resources/json/interaction/rootcommand.json b/common/src/commonTest/resources/json/interaction/rootcommand.json index e4cb9d35f24c..e6bc9faab1d7 100644 --- a/common/src/commonTest/resources/json/interaction/rootcommand.json +++ b/common/src/commonTest/resources/json/interaction/rootcommand.json @@ -51,5 +51,6 @@ "type":8, "deleted":false } - ] + ], + "context": 1 } diff --git a/common/src/commonTest/resources/json/interaction/selectmenu.json b/common/src/commonTest/resources/json/interaction/selectmenu.json index cdcabba75623..f9a3ab2977f2 100644 --- a/common/src/commonTest/resources/json/interaction/selectmenu.json +++ b/common/src/commonTest/resources/json/interaction/selectmenu.json @@ -131,5 +131,6 @@ "type":8, "deleted":false } - ] + ], + "context": 2 } diff --git a/core/src/commonMain/kotlin/cache/data/ApplicationCommandData.kt b/core/src/commonMain/kotlin/cache/data/ApplicationCommandData.kt index 03a1d544f4be..2f9d92b62cd0 100644 --- a/core/src/commonMain/kotlin/cache/data/ApplicationCommandData.kt +++ b/core/src/commonMain/kotlin/cache/data/ApplicationCommandData.kt @@ -20,7 +20,9 @@ public data class ApplicationCommandData( val guildId: OptionalSnowflake = OptionalSnowflake.Missing, val options: Optional> = Optional.Missing(), val defaultMemberPermissions: Permissions?, + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") val dmPermission: OptionalBoolean = OptionalBoolean.Missing, + val contexts: Optional> = Optional.Missing(), @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'.") val defaultPermission: OptionalBoolean? = OptionalBoolean.Missing, val nsfw: OptionalBoolean = OptionalBoolean.Missing, @@ -45,7 +47,8 @@ public data class ApplicationCommandData( guildId, options.mapList { ApplicationCommandOptionData.from(it) }, defaultMemberPermissions, - dmPermission, + @Suppress("DEPRECATION") dmPermission, + contexts, @Suppress("DEPRECATION") defaultPermission, nsfw, version diff --git a/core/src/commonMain/kotlin/cache/data/InteractionData.kt b/core/src/commonMain/kotlin/cache/data/InteractionData.kt index 9c224fe313b7..b42aebf21457 100644 --- a/core/src/commonMain/kotlin/cache/data/InteractionData.kt +++ b/core/src/commonMain/kotlin/cache/data/InteractionData.kt @@ -30,6 +30,7 @@ public data class InteractionData( val locale: Optional = Optional.Missing(), val guildLocale: Optional = Optional.Missing(), val entitlements: Optional> = Optional.Missing(), + val context: Optional = Optional.Missing(), ) { public companion object { public fun from(interaction: DiscordInteraction): InteractionData { @@ -55,6 +56,7 @@ public data class InteractionData( locale, guildLocale, entitlements.mapList { EntitlementData.from(it) }, + context, ) } } diff --git a/core/src/commonMain/kotlin/entity/application/ApplicationCommand.kt b/core/src/commonMain/kotlin/entity/application/ApplicationCommand.kt index 8df8edf08291..b9464329162d 100644 --- a/core/src/commonMain/kotlin/entity/application/ApplicationCommand.kt +++ b/core/src/commonMain/kotlin/entity/application/ApplicationCommand.kt @@ -3,6 +3,7 @@ package dev.kord.core.entity.application import dev.kord.common.Locale import dev.kord.common.entity.ApplicationCommandType import dev.kord.common.entity.ChannelType +import dev.kord.common.entity.InteractionContextType import dev.kord.common.entity.Permissions import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.orEmpty @@ -68,7 +69,14 @@ public interface GlobalApplicationCommand : ApplicationCommand, GlobalApplicatio /** * Whether this command is available in DMs with the application. */ - public val dmPermission: Boolean get() = data.dmPermission.orElse(true) + @Suppress("DeprecatedCallableAddReplaceWith") + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") + public val dmPermission: Boolean get() = @Suppress("DEPRECATION") data.dmPermission.orElse(true) + + /** + * Interaction context(s) where the command can be used. + */ + public val contexts: List? get() = data.contexts.value } public class UnknownGlobalApplicationCommand( override val data: ApplicationCommandData, diff --git a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt index 18cc561f4fe8..6b81dfcec7a9 100644 --- a/core/src/commonMain/kotlin/entity/interaction/Interaction.kt +++ b/core/src/commonMain/kotlin/entity/interaction/Interaction.kt @@ -1,6 +1,7 @@ package dev.kord.core.entity.interaction import dev.kord.common.Locale +import dev.kord.common.entity.InteractionContextType import dev.kord.common.entity.InteractionType import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.OptionalSnowflake @@ -63,6 +64,11 @@ public sealed interface Interaction : InteractionBehavior { */ public val entitlements: List get() = data.entitlements.mapList { Entitlement(it, kord) }.orEmpty() + /** + * Context where the interaction was triggered from + */ + public val context: InteractionContextType? get() = data.context.value + override fun withStrategy(strategy: EntitySupplyStrategy<*>): Interaction public companion object { diff --git a/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandBuilders.kt b/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandBuilders.kt index ce01d46a1c1b..5a6e382fc947 100644 --- a/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandBuilders.kt +++ b/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandBuilders.kt @@ -2,6 +2,7 @@ package dev.kord.rest.builder.interaction import dev.kord.common.annotation.KordDsl import dev.kord.common.entity.ApplicationCommandType +import dev.kord.common.entity.InteractionContextType import dev.kord.common.entity.Permissions import dev.kord.rest.builder.RequestBuilder import dev.kord.rest.json.request.ApplicationCommandCreateRequest @@ -32,12 +33,16 @@ public interface ApplicationCommandCreateBuilder : LocalizedNameCreateBuilder, @KordDsl public interface GlobalApplicationCommandCreateBuilder : ApplicationCommandCreateBuilder { + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") public var dmPermission: Boolean? + public var contexts: MutableList? } @KordDsl public interface GlobalApplicationCommandModifyBuilder : ApplicationCommandModifyBuilder { + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") public var dmPermission: Boolean? + public var contexts: MutableList? } @KordDsl diff --git a/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandStateHolder.kt b/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandStateHolder.kt index 211491d7b079..f098cb666252 100644 --- a/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandStateHolder.kt +++ b/rest/src/commonMain/kotlin/builder/interaction/ApplicationCommandStateHolder.kt @@ -1,6 +1,7 @@ package dev.kord.rest.builder.interaction import dev.kord.common.Locale +import dev.kord.common.entity.InteractionContextType import dev.kord.common.entity.Permissions import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.OptionalBoolean @@ -22,8 +23,9 @@ internal class ApplicationCommandModifyStateHolder { var options: Optional> = Optional.Missing() var defaultMemberPermissions: Optional = Optional.Missing() + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") var dmPermission: OptionalBoolean? = OptionalBoolean.Missing - + var contexts: Optional> = Optional.Missing() @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") @SerialName("default_permission") diff --git a/rest/src/commonMain/kotlin/builder/interaction/InputChatBuilders.kt b/rest/src/commonMain/kotlin/builder/interaction/InputChatBuilders.kt index dbd3c150f5ce..f940c63b73b6 100644 --- a/rest/src/commonMain/kotlin/builder/interaction/InputChatBuilders.kt +++ b/rest/src/commonMain/kotlin/builder/interaction/InputChatBuilders.kt @@ -3,6 +3,7 @@ package dev.kord.rest.builder.interaction import dev.kord.common.Locale import dev.kord.common.annotation.KordDsl import dev.kord.common.entity.ApplicationCommandType +import dev.kord.common.entity.InteractionContextType import dev.kord.common.entity.Permissions import dev.kord.common.entity.optional.Optional import dev.kord.common.entity.optional.delegate.delegate @@ -147,7 +148,9 @@ internal class ChatInputCreateBuilderImpl( override var options: MutableList? by state::options.delegate() override var defaultMemberPermissions: Permissions? by state::defaultMemberPermissions.delegate() - override var dmPermission: Boolean? by state::dmPermission.delegate() + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") + override var dmPermission: Boolean? by @Suppress("DEPRECATION") state::dmPermission.delegate() + override var contexts: MutableList? by state::contexts.delegate() @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") override var defaultPermission: Boolean? by @Suppress("DEPRECATION") state::defaultPermission.delegate() @@ -163,7 +166,8 @@ internal class ChatInputCreateBuilderImpl( state.descriptionLocalizations, state.options.mapList { it.toRequest() }, state.defaultMemberPermissions, - state.dmPermission, + @Suppress("DEPRECATION") state.dmPermission, + state.contexts, @Suppress("DEPRECATION") state.defaultPermission, nsfw = state.nsfw, ) @@ -192,7 +196,9 @@ internal class ChatInputModifyBuilderImpl : GlobalChatInputModifyBuilder { override var options: MutableList? by state::options.delegate() override var defaultMemberPermissions: Permissions? by state::defaultMemberPermissions.delegate() - override var dmPermission: Boolean? by state::dmPermission.delegate() + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") + override var dmPermission: Boolean? by @Suppress("DEPRECATION") state::dmPermission.delegate() + override var contexts: MutableList? by state::contexts.delegate() @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") override var defaultPermission: Boolean? by @Suppress("DEPRECATION") state::defaultPermission.delegate() @@ -207,7 +213,8 @@ internal class ChatInputModifyBuilderImpl : GlobalChatInputModifyBuilder { state.descriptionLocalizations, state.options.mapList { it.toRequest() }, state.defaultMemberPermissions, - state.dmPermission, + @Suppress("DEPRECATION") state.dmPermission, + state.contexts, @Suppress("DEPRECATION") state.defaultPermission, nsfw = state.nsfw, ) diff --git a/rest/src/commonMain/kotlin/builder/interaction/MessageCommandBuilders.kt b/rest/src/commonMain/kotlin/builder/interaction/MessageCommandBuilders.kt index 70b2676b48ce..aa661e5e2ad6 100644 --- a/rest/src/commonMain/kotlin/builder/interaction/MessageCommandBuilders.kt +++ b/rest/src/commonMain/kotlin/builder/interaction/MessageCommandBuilders.kt @@ -3,6 +3,7 @@ package dev.kord.rest.builder.interaction import dev.kord.common.Locale import dev.kord.common.annotation.KordDsl import dev.kord.common.entity.ApplicationCommandType +import dev.kord.common.entity.InteractionContextType import dev.kord.common.entity.Permissions import dev.kord.common.entity.optional.delegate.delegate import dev.kord.rest.json.request.ApplicationCommandCreateRequest @@ -24,7 +25,9 @@ internal class MessageCommandModifyBuilderImpl : GlobalMessageCommandModifyBuild override var nameLocalizations: MutableMap? by state::nameLocalizations.delegate() override var defaultMemberPermissions: Permissions? by state::defaultMemberPermissions.delegate() - override var dmPermission: Boolean? by state::dmPermission.delegate() + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") + override var dmPermission: Boolean? by @Suppress("DEPRECATION") state::dmPermission.delegate() + override var contexts: MutableList? by state::contexts.delegate() @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") override var defaultPermission: Boolean? by @Suppress("DEPRECATION") state::defaultPermission.delegate() @@ -35,7 +38,8 @@ internal class MessageCommandModifyBuilderImpl : GlobalMessageCommandModifyBuild return ApplicationCommandModifyRequest( name = state.name, nameLocalizations = state.nameLocalizations, - dmPermission = state.dmPermission, + dmPermission = @Suppress("DEPRECATION") state.dmPermission, + contexts = state.contexts, defaultMemberPermissions = state.defaultMemberPermissions, defaultPermission = @Suppress("DEPRECATION") state.defaultPermission, nsfw = state.nsfw, @@ -56,13 +60,14 @@ internal class MessageCommandCreateBuilderImpl(override var name: String) : Glob override val type: ApplicationCommandType get() = ApplicationCommandType.Message - private val state = ApplicationCommandModifyStateHolder() override var nameLocalizations: MutableMap? by state::nameLocalizations.delegate() override var defaultMemberPermissions: Permissions? by state::defaultMemberPermissions.delegate() - override var dmPermission: Boolean? by state::dmPermission.delegate() + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") + override var dmPermission: Boolean? by @Suppress("DEPRECATION") state::dmPermission.delegate() + override var contexts: MutableList? by state::contexts.delegate() @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") override var defaultPermission: Boolean? by @Suppress("DEPRECATION") state::defaultPermission.delegate() @@ -74,7 +79,8 @@ internal class MessageCommandCreateBuilderImpl(override var name: String) : Glob name = name, nameLocalizations = state.nameLocalizations, type = type, - dmPermission = state.dmPermission, + dmPermission = @Suppress("DEPRECATION") state.dmPermission, + contexts = state.contexts, defaultMemberPermissions = state.defaultMemberPermissions, defaultPermission = @Suppress("DEPRECATION") state.defaultPermission, nsfw = state.nsfw, diff --git a/rest/src/commonMain/kotlin/builder/interaction/UserCommandBuilders.kt b/rest/src/commonMain/kotlin/builder/interaction/UserCommandBuilders.kt index 12a7383749bb..ba3a95eb49d3 100644 --- a/rest/src/commonMain/kotlin/builder/interaction/UserCommandBuilders.kt +++ b/rest/src/commonMain/kotlin/builder/interaction/UserCommandBuilders.kt @@ -3,6 +3,7 @@ package dev.kord.rest.builder.interaction import dev.kord.common.Locale import dev.kord.common.annotation.KordDsl import dev.kord.common.entity.ApplicationCommandType +import dev.kord.common.entity.InteractionContextType import dev.kord.common.entity.Permissions import dev.kord.common.entity.optional.delegate.delegate import dev.kord.rest.json.request.ApplicationCommandCreateRequest @@ -23,7 +24,9 @@ internal class UserCommandModifyBuilderImpl : GlobalUserCommandModifyBuilder { override var nameLocalizations: MutableMap? by state::nameLocalizations.delegate() override var defaultMemberPermissions: Permissions? by state::defaultMemberPermissions.delegate() - override var dmPermission: Boolean? by state::dmPermission.delegate() + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") + override var dmPermission: Boolean? by @Suppress("DEPRECATION") state::dmPermission.delegate() + override var contexts: MutableList? by state::contexts.delegate() @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") override var defaultPermission: Boolean? by @Suppress("DEPRECATION") state::defaultPermission.delegate() @@ -34,7 +37,8 @@ internal class UserCommandModifyBuilderImpl : GlobalUserCommandModifyBuilder { return ApplicationCommandModifyRequest( name = state.name, nameLocalizations = state.nameLocalizations, - dmPermission = state.dmPermission, + dmPermission = @Suppress("DEPRECATION") state.dmPermission, + contexts = state.contexts, defaultMemberPermissions = state.defaultMemberPermissions, defaultPermission = @Suppress("DEPRECATION") state.defaultPermission, nsfw = state.nsfw, @@ -57,7 +61,9 @@ internal class UserCommandCreateBuilderImpl(override var name: String) : GlobalU override var nameLocalizations: MutableMap? by state::nameLocalizations.delegate() override var defaultMemberPermissions: Permissions? by state::defaultMemberPermissions.delegate() - override var dmPermission: Boolean? by state::dmPermission.delegate() + @Deprecated("'dm_permission' is deprecated in favor of 'contexts'.") + override var dmPermission: Boolean? by @Suppress("DEPRECATION") state::dmPermission.delegate() + override var contexts: MutableList? by state::contexts.delegate() @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") override var defaultPermission: Boolean? by @Suppress("DEPRECATION") state::defaultPermission.delegate() @@ -70,7 +76,8 @@ internal class UserCommandCreateBuilderImpl(override var name: String) : GlobalU nameLocalizations = state.nameLocalizations, type = type, defaultMemberPermissions = state.defaultMemberPermissions, - dmPermission = state.dmPermission, + dmPermission = @Suppress("DEPRECATION") state.dmPermission, + contexts = state.contexts, defaultPermission = @Suppress("DEPRECATION") state.defaultPermission, nsfw = state.nsfw, ) diff --git a/rest/src/commonMain/kotlin/json/request/InteractionsRequests.kt b/rest/src/commonMain/kotlin/json/request/InteractionsRequests.kt index f48beda6d53d..3a8d4bbec16a 100644 --- a/rest/src/commonMain/kotlin/json/request/InteractionsRequests.kt +++ b/rest/src/commonMain/kotlin/json/request/InteractionsRequests.kt @@ -20,8 +20,10 @@ public data class ApplicationCommandCreateRequest( val options: Optional> = Optional.Missing(), @SerialName("default_member_permissions") public val defaultMemberPermissions: Optional = Optional.Missing(), + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") @SerialName("dm_permission") public val dmPermission: OptionalBoolean? = OptionalBoolean.Missing, + val contexts: Optional> = Optional.Missing(), @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") @SerialName("default_permission") val defaultPermission: OptionalBoolean = OptionalBoolean.Missing, @@ -39,8 +41,10 @@ public data class ApplicationCommandModifyRequest( val options: Optional> = Optional.Missing(), @SerialName("default_member_permissions") public val defaultMemberPermissions: Optional = Optional.Missing(), + @Deprecated("'dmPermission' is deprecated in favor of 'contexts'.") @SerialName("dm_permission") public val dmPermission: OptionalBoolean? = OptionalBoolean.Missing, + val contexts: Optional> = Optional.Missing(), @Deprecated("'defaultPermission' is deprecated in favor of 'defaultMemberPermissions' and 'dmPermission'. Setting 'defaultPermission' to false can be replaced by setting 'defaultMemberPermissions' to empty Permissions and 'dmPermission' to false ('dmPermission' is only available for global commands).") @SerialName("default_permission") val defaultPermission: OptionalBoolean = OptionalBoolean.Missing,