From 83b4d2155f456c6e26843b31a1f8eb8f4568574b Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 20 Feb 2026 13:55:19 +0600 Subject: [PATCH] add is_burned support --- tgbotapi.core/api/tgbotapi.core.api | 59 +++++++++++++++---- .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 1 + .../dev/inmo/tgbotapi/types/gifts/Gift.kt | 25 +++++--- .../tgbotapi/types/gifts/UniqueGiftName.kt | 14 +++++ .../tgbotapi/types/stories/StoryAreaType.kt | 7 ++- 5 files changed, 83 insertions(+), 23 deletions(-) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/UniqueGiftName.kt diff --git a/tgbotapi.core/api/tgbotapi.core.api b/tgbotapi.core/api/tgbotapi.core.api index 8c3ac4207f..fc24a296e4 100644 --- a/tgbotapi.core/api/tgbotapi.core.api +++ b/tgbotapi.core/api/tgbotapi.core.api @@ -10568,6 +10568,7 @@ public final class dev/inmo/tgbotapi/types/CommonKt { public static final field isBigField Ljava/lang/String; public static final field isBlurredField Ljava/lang/String; public static final field isBotField Ljava/lang/String; + public static final field isBurnedField Ljava/lang/String; public static final field isCanceledField Ljava/lang/String; public static final field isClosedField Ljava/lang/String; public static final field isDarkField Ljava/lang/String; @@ -10587,7 +10588,6 @@ public final class dev/inmo/tgbotapi/types/CommonKt { public static final field isPersistentField Ljava/lang/String; public static final field isPersonalField Ljava/lang/String; public static final field isPremiumField Ljava/lang/String; - public static final field isPremiumField2 Ljava/lang/String; public static final field isPrimaryField Ljava/lang/String; public static final field isPrivateField Ljava/lang/String; public static final field isPublicField Ljava/lang/String; @@ -21796,32 +21796,34 @@ public final class dev/inmo/tgbotapi/types/gifts/Gift$Regular$Unlimited$Companio public final class dev/inmo/tgbotapi/types/gifts/Gift$Unique : dev/inmo/tgbotapi/types/gifts/Gift { public static final field Companion Ldev/inmo/tgbotapi/types/gifts/Gift$Unique$Companion; - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;Ldev/inmo/tgbotapi/types/chat/PreviewChat;ZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;Ldev/inmo/tgbotapi/types/chat/PreviewChat;ZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;ZZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;Ldev/inmo/tgbotapi/types/chat/PreviewChat;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;ZZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;Ldev/inmo/tgbotapi/types/chat/PreviewChat;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1-FhTg01o ()Ljava/lang/String; public final fun component10 ()Z public final fun component11 ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors; + public final fun component12 ()Ldev/inmo/tgbotapi/types/chat/PreviewChat; public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Ljava/lang/String; + public final fun component3-4ZXEuVc ()Ljava/lang/String; public final fun component4 ()I public final fun component5 ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel; public final fun component6 ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol; public final fun component7 ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop; - public final fun component8 ()Ldev/inmo/tgbotapi/types/chat/PreviewChat; + public final fun component8 ()Z public final fun component9 ()Z - public final fun copy-1InrkRY (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;Ldev/inmo/tgbotapi/types/chat/PreviewChat;ZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;)Ldev/inmo/tgbotapi/types/gifts/Gift$Unique; - public static synthetic fun copy-1InrkRY$default (Ldev/inmo/tgbotapi/types/gifts/Gift$Unique;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;Ldev/inmo/tgbotapi/types/chat/PreviewChat;ZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/gifts/Gift$Unique; + public final fun copy-ayg1UCc (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;ZZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;Ldev/inmo/tgbotapi/types/chat/PreviewChat;)Ldev/inmo/tgbotapi/types/gifts/Gift$Unique; + public static synthetic fun copy-ayg1UCc$default (Ldev/inmo/tgbotapi/types/gifts/Gift$Unique;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol;Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop;ZZZLdev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors;Ldev/inmo/tgbotapi/types/chat/PreviewChat;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/gifts/Gift$Unique; public fun equals (Ljava/lang/Object;)Z public final fun getBackdrop ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftBackdrop; public final fun getBaseName ()Ljava/lang/String; public final fun getColors ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftColors; public fun getId-FhTg01o ()Ljava/lang/String; public final fun getModel ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftModel; - public final fun getName ()Ljava/lang/String; + public final fun getName-4ZXEuVc ()Ljava/lang/String; public final fun getNumber ()I public fun getPublisherChat ()Ldev/inmo/tgbotapi/types/chat/PreviewChat; public final fun getSymbol ()Ldev/inmo/tgbotapi/types/gifts/unique/UniqueGiftSymbol; public fun hashCode ()I + public final fun isBurned ()Z public final fun isFromBlockchain ()Z public final fun isPremium ()Z public fun toString ()Ljava/lang/String; @@ -22298,6 +22300,37 @@ public final class dev/inmo/tgbotapi/types/gifts/Rarity$Uncommon : dev/inmo/tgbo public fun toString ()Ljava/lang/String; } +public final class dev/inmo/tgbotapi/types/gifts/UniqueGiftName { + public static final field Companion Ldev/inmo/tgbotapi/types/gifts/UniqueGiftName$Companion; + public static final synthetic fun box-impl (Ljava/lang/String;)Ldev/inmo/tgbotapi/types/gifts/UniqueGiftName; + public static fun constructor-impl (Ljava/lang/String;)Ljava/lang/String; + public fun equals (Ljava/lang/Object;)Z + public static fun equals-impl (Ljava/lang/String;Ljava/lang/Object;)Z + public static final fun equals-impl0 (Ljava/lang/String;Ljava/lang/String;)Z + public static final fun getNftLink-impl (Ljava/lang/String;)Ljava/lang/String; + public final fun getValue ()Ljava/lang/String; + public fun hashCode ()I + public static fun hashCode-impl (Ljava/lang/String;)I + public fun toString ()Ljava/lang/String; + public static fun toString-impl (Ljava/lang/String;)Ljava/lang/String; + public final synthetic fun unbox-impl ()Ljava/lang/String; +} + +public final synthetic class dev/inmo/tgbotapi/types/gifts/UniqueGiftName$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/gifts/UniqueGiftName$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun deserialize-4tr4HlA (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public final fun serialize-auPfXtg (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V + public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer; +} + +public final class dev/inmo/tgbotapi/types/gifts/UniqueGiftName$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + 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 @@ -32453,12 +32486,12 @@ public final class dev/inmo/tgbotapi/types/stories/StoryAreaType$Type$Companion public final class dev/inmo/tgbotapi/types/stories/StoryAreaType$UniqueGift : dev/inmo/tgbotapi/types/stories/StoryAreaType { public static final field Companion Ldev/inmo/tgbotapi/types/stories/StoryAreaType$UniqueGift$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/stories/StoryAreaType$UniqueGift; - public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/stories/StoryAreaType$UniqueGift;Ljava/lang/String;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/stories/StoryAreaType$UniqueGift; + public synthetic fun (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1-4ZXEuVc ()Ljava/lang/String; + public final fun copy-myabBg0 (Ljava/lang/String;)Ldev/inmo/tgbotapi/types/stories/StoryAreaType$UniqueGift; + public static synthetic fun copy-myabBg0$default (Ldev/inmo/tgbotapi/types/stories/StoryAreaType$UniqueGift;Ljava/lang/String;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/stories/StoryAreaType$UniqueGift; public fun equals (Ljava/lang/Object;)Z - public final fun getName ()Ljava/lang/String; + public final fun getName-4ZXEuVc ()Ljava/lang/String; public fun getType ()Ldev/inmo/tgbotapi/types/stories/StoryAreaType$Type; public fun hashCode ()I public fun toString ()Ljava/lang/String; 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 d4d12bee17..00aa53c72a 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 @@ -175,6 +175,7 @@ const val languageCodeField = "language_code" const val addedToAttachmentMenuField = "added_to_attachment_menu" const val allowsWriteToPMField = "allows_write_to_pm" const val isPremiumField = "is_premium" +const val isBurnedField = "is_burned" const val hasPrivateForwardsField = "has_private_forwards" const val hasRestrictedVoiceAndVideoMessagesField = "has_restricted_voice_and_video_messages" const val emojiStatusCustomEmojiIdField = "emoji_status_custom_emoji_id" 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 4af47d148d..2a11211535 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 @@ -33,6 +33,9 @@ sealed interface Gift { val background: dev.inmo.tgbotapi.types.gifts.GiftBackground? val uniqueGiftVariantCount: Int? + /** + * Represents a [Gift](https://core.telegram.org/bots/api#gift) for fields of unlimited gifts + */ @Serializable data class Unlimited( @SerialName(idField) @@ -64,6 +67,9 @@ sealed interface Gift { get() = null } + /** + * Represents a [Gift](https://core.telegram.org/bots/api#gift) for fields of limited gifts + */ @Serializable data class Limited( @SerialName(idField) @@ -173,6 +179,9 @@ sealed interface Gift { } } + /** + * Represents a [UniqueGift](https://core.telegram.org/bots/api#uniquegift) from telegram bots api + */ @Serializable data class Unique( @SerialName(giftIdField) @@ -180,7 +189,7 @@ sealed interface Gift { @SerialName(baseNameField) val baseName: String, @SerialName(nameField) - val name: String, + val name: UniqueGiftName, @SerialName(numberField) val number: Int, @SerialName(modelField) @@ -189,14 +198,16 @@ sealed interface Gift { val symbol: UniqueGiftSymbol, @SerialName(backdropField) val backdrop: UniqueGiftBackdrop, - @SerialName(publisherChatField) - override val publisherChat: PreviewChat? = null, - @SerialName(isFromBlockchainField) - val isFromBlockchain: Boolean = false, @SerialName(isPremiumField) val isPremium: Boolean = false, + @SerialName(isBurnedField) + val isBurned: Boolean = false, + @SerialName(isFromBlockchainField) + val isFromBlockchain: Boolean = false, @SerialName(colorsField) - val colors: UniqueGiftColors? = null + val colors: UniqueGiftColors? = null, + @SerialName(publisherChatField) + override val publisherChat: PreviewChat? = null, ) : Gift companion object : KSerializer { @@ -218,7 +229,7 @@ sealed interface Gift { val unique_gift_variant_count: Int? = null, // unique gift fields val base_name: String? = null, - val name: String? = null, + val name: UniqueGiftName? = null, val number: Int? = null, val model: UniqueGiftModel? = null, val symbol: UniqueGiftSymbol? = null, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/UniqueGiftName.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/UniqueGiftName.kt new file mode 100644 index 0000000000..9b64b58104 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/gifts/UniqueGiftName.kt @@ -0,0 +1,14 @@ +package dev.inmo.tgbotapi.types.gifts + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +/** + * Represents a name for a unique gift, encapsulating its value as a single, immutable string. + */ +@Serializable +@JvmInline +value class UniqueGiftName(val value: String) { + val nftLink + get() = "https://t.me/nft/$value" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/StoryAreaType.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/StoryAreaType.kt index 28e8f1a1e6..92b57a25f6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/StoryAreaType.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/StoryAreaType.kt @@ -4,6 +4,7 @@ package dev.inmo.tgbotapi.types.stories import dev.inmo.micro_utils.colors.common.HEXAColor import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.gifts.UniqueGiftName import dev.inmo.tgbotapi.types.location.LocationAddress import dev.inmo.tgbotapi.types.reactions.ReactionType import dev.inmo.tgbotapi.utils.IntRGB24HEXAColorSerializer @@ -94,7 +95,7 @@ sealed interface StoryAreaType { @Serializable data class UniqueGift( @SerialName(nameField) - val name: String + val name: UniqueGiftName ) : StoryAreaType { @EncodeDefault override val type: Type = Companion @@ -194,7 +195,7 @@ sealed interface StoryAreaType { ) is UniqueGift -> Surrogate( type = value.type.name, - name = value.name + name = value.name.value ) is Unknown -> Surrogate( type = value.type.name @@ -227,7 +228,7 @@ sealed interface StoryAreaType { backgroundColor = surrogate.backgroundColor ?: return unknown ) UniqueGift.name -> UniqueGift( - name = surrogate.name ?: return unknown + name = surrogate.name ?.let(::UniqueGiftName) ?: return unknown ) else -> unknown }