diff --git a/tgbotapi.core/api/tgbotapi.core.api b/tgbotapi.core/api/tgbotapi.core.api index 43699b1901..8c3ac4207f 100644 --- a/tgbotapi.core/api/tgbotapi.core.api +++ b/tgbotapi.core/api/tgbotapi.core.api @@ -10747,6 +10747,7 @@ public final class dev/inmo/tgbotapi/types/CommonKt { public static final field quoteField Ljava/lang/String; public static final field quoteParseModeField Ljava/lang/String; public static final field quotePositionField Ljava/lang/String; + public static final field rarityField Ljava/lang/String; public static final field rarityPerMilleField Ljava/lang/String; public static final field ratingField Ljava/lang/String; public static final field rawField Ljava/lang/String; @@ -22230,6 +22231,73 @@ public final class dev/inmo/tgbotapi/types/gifts/Gifts$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public abstract interface class dev/inmo/tgbotapi/types/gifts/Rarity { + public static final field Companion Ldev/inmo/tgbotapi/types/gifts/Rarity$Companion; + public abstract fun getName ()Ljava/lang/String; +} + +public final class dev/inmo/tgbotapi/types/gifts/Rarity$Companion : kotlinx/serialization/KSerializer { + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/gifts/Rarity; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun fromString (Ljava/lang/String;)Ldev/inmo/tgbotapi/types/gifts/Rarity; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/gifts/Rarity;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/inmo/tgbotapi/types/gifts/Rarity$Custom : dev/inmo/tgbotapi/types/gifts/Rarity { + public static final field Companion Ldev/inmo/tgbotapi/types/gifts/Rarity$Custom$Companion; + public fun (Ljava/lang/String;)V + public final fun component1 ()Ljava/lang/String; + public final fun copy (Ljava/lang/String;)Ldev/inmo/tgbotapi/types/gifts/Rarity$Custom; + public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/gifts/Rarity$Custom;Ljava/lang/String;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/gifts/Rarity$Custom; + public fun equals (Ljava/lang/Object;)Z + public fun getName ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class dev/inmo/tgbotapi/types/gifts/Rarity$Custom$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/inmo/tgbotapi/types/gifts/Rarity$Epic : dev/inmo/tgbotapi/types/gifts/Rarity { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/gifts/Rarity$Epic; + public fun equals (Ljava/lang/Object;)Z + public fun getName ()Ljava/lang/String; + public fun hashCode ()I + public final fun serializer ()Lkotlinx/serialization/KSerializer; + public fun toString ()Ljava/lang/String; +} + +public final class dev/inmo/tgbotapi/types/gifts/Rarity$Legendary : dev/inmo/tgbotapi/types/gifts/Rarity { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/gifts/Rarity$Legendary; + public fun equals (Ljava/lang/Object;)Z + public fun getName ()Ljava/lang/String; + public fun hashCode ()I + public final fun serializer ()Lkotlinx/serialization/KSerializer; + public fun toString ()Ljava/lang/String; +} + +public final class dev/inmo/tgbotapi/types/gifts/Rarity$Rare : dev/inmo/tgbotapi/types/gifts/Rarity { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/gifts/Rarity$Rare; + public fun equals (Ljava/lang/Object;)Z + public fun getName ()Ljava/lang/String; + public fun hashCode ()I + public final fun serializer ()Lkotlinx/serialization/KSerializer; + public fun toString ()Ljava/lang/String; +} + +public final class dev/inmo/tgbotapi/types/gifts/Rarity$Uncommon : dev/inmo/tgbotapi/types/gifts/Rarity { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/gifts/Rarity$Uncommon; + public fun equals (Ljava/lang/Object;)Z + public fun getName ()Ljava/lang/String; + public fun hashCode ()I + public final fun serializer ()Lkotlinx/serialization/KSerializer; + public fun toString ()Ljava/lang/String; +} + public final class dev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop { public static final field Companion Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop$Companion; public fun (Ljava/lang/String;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdropColors;I)V @@ -22333,14 +22401,16 @@ public final class dev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors$Compani public final class dev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel { public static final field Companion Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel$Companion; - public fun (Ljava/lang/String;Ldev/inmo/tgbotapi/types/files/Sticker;I)V + public fun (Ljava/lang/String;Ldev/inmo/tgbotapi/types/files/Sticker;ILdev/inmo/tgbotapi/types/gifts/Rarity;)V public final fun component1 ()Ljava/lang/String; public final fun component2 ()Ldev/inmo/tgbotapi/types/files/Sticker; public final fun component3 ()I - public final fun copy (Ljava/lang/String;Ldev/inmo/tgbotapi/types/files/Sticker;I)Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel; - public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ljava/lang/String;Ldev/inmo/tgbotapi/types/files/Sticker;IILjava/lang/Object;)Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel; + public final fun component4 ()Ldev/inmo/tgbotapi/types/gifts/Rarity; + public final fun copy (Ljava/lang/String;Ldev/inmo/tgbotapi/types/files/Sticker;ILdev/inmo/tgbotapi/types/gifts/Rarity;)Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel; + public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ljava/lang/String;Ldev/inmo/tgbotapi/types/files/Sticker;ILdev/inmo/tgbotapi/types/gifts/Rarity;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel; public fun equals (Ljava/lang/Object;)Z public final fun getName ()Ljava/lang/String; + public final fun getRarity ()Ldev/inmo/tgbotapi/types/gifts/Rarity; public final fun getRarityPerMille ()I public final fun getSticker ()Ldev/inmo/tgbotapi/types/files/Sticker; public fun hashCode ()I diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index c40d9bdc6b..d4d12bee17 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -546,6 +546,7 @@ const val giftField = "gift" const val giftUpgradeSentField = "gift_upgrade_sent" const val giftsField = "gifts" const val rarityPerMilleField = "rarity_per_mille" +const val rarityField = "rarity" const val acceptedGiftTypesField = "accepted_gift_types" const val ownedGiftIdField = "owned_gift_id" const val convertStarCountField = "convert_star_count" @@ -754,7 +755,6 @@ const val paidMediaField = "paid_media" const val publisherChatField = "publisher_chat" const val personalTotalCountField = "personal_total_count" const val personalRemainingCountField = "personal_remaining_count" -const val isPremiumField2 = "is_premium" const val hasColorsField = "has_colors" const val uniqueGiftVariantCountField = "unique_gift_variant_count" const val uniqueGiftNumberField = "unique_gift_number" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/Gift.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/Gift.kt index 88a9e4ae15..4af47d148d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/Gift.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/Gift.kt @@ -49,7 +49,7 @@ sealed interface Gift { override val personalTotalCount: Int? = null, @SerialName(personalRemainingCountField) override val personalRemainingCount: Int? = null, - @SerialName(isPremiumField2) + @SerialName(isPremiumField) override val isPremium: Boolean = false, @SerialName(hasColorsField) override val hasColors: Boolean = false, @@ -84,7 +84,7 @@ sealed interface Gift { override val personalTotalCount: Int? = null, @SerialName(personalRemainingCountField) override val personalRemainingCount: Int? = null, - @SerialName(isPremiumField2) + @SerialName(isPremiumField) override val isPremium: Boolean = false, @SerialName(hasColorsField) override val hasColors: Boolean = false, @@ -193,7 +193,7 @@ sealed interface Gift { override val publisherChat: PreviewChat? = null, @SerialName(isFromBlockchainField) val isFromBlockchain: Boolean = false, - @SerialName(isPremiumField2) + @SerialName(isPremiumField) val isPremium: Boolean = false, @SerialName(colorsField) val colors: UniqueGiftColors? = null diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/Rarity.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/Rarity.kt new file mode 100644 index 0000000000..cd02d3b155 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/Rarity.kt @@ -0,0 +1,53 @@ +package dev.inmo.tgbotapi.types.gifts + +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +@Serializable(Rarity.Companion::class) +sealed interface Rarity { + val name: String + + @Suppress("SERIALIZER_TYPE_INCOMPATIBLE") + @Serializable(Rarity.Companion::class) + data object Uncommon : Rarity { override val name: String = "uncommon" } + @Suppress("SERIALIZER_TYPE_INCOMPATIBLE") + @Serializable(Rarity.Companion::class) + data object Rare : Rarity { override val name: String = "rare" } + @Suppress("SERIALIZER_TYPE_INCOMPATIBLE") + @Serializable(Rarity.Companion::class) + data object Epic : Rarity { override val name: String = "epic" } + @Suppress("SERIALIZER_TYPE_INCOMPATIBLE") + @Serializable(Rarity.Companion::class) + data object Legendary : Rarity { override val name: String = "legendary" } + @Suppress("SERIALIZER_TYPE_INCOMPATIBLE") + @Serializable(Rarity.Companion::class) + data class Custom(override val name: String) : Rarity + + companion object : KSerializer { + override val descriptor: SerialDescriptor = String.serializer().descriptor + + fun fromString(value: String): Rarity = when (value) { + Uncommon.name -> Uncommon + Rare.name -> Rare + Epic.name -> Epic + Legendary.name -> Legendary + else -> Custom(value) + } + + override fun deserialize(decoder: Decoder): Rarity { + val value = decoder.decodeString() + return fromString(value) + } + + override fun serialize( + encoder: Encoder, + value: Rarity + ) { + encoder.encodeString(value.name) + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel.kt index 28e3820c57..dec2155409 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel.kt @@ -1,7 +1,9 @@ package dev.inmo.tgbotapi.types.gifts.unique import dev.inmo.tgbotapi.types.files.Sticker +import dev.inmo.tgbotapi.types.gifts.Rarity import dev.inmo.tgbotapi.types.nameField +import dev.inmo.tgbotapi.types.rarityField import dev.inmo.tgbotapi.types.rarityPerMilleField import dev.inmo.tgbotapi.types.stickerField import kotlinx.serialization.SerialName @@ -15,5 +17,7 @@ data class UniqueGiftModel( @SerialName(stickerField) val sticker: Sticker, @SerialName(rarityPerMilleField) - val rarityPerMille: Int + val rarityPerMille: Int, + @SerialName(rarityField) + val rarity: Rarity )