diff --git a/tgbotapi.api/api/tgbotapi.api.api b/tgbotapi.api/api/tgbotapi.api.api index 1be1e50052..436051bad6 100644 --- a/tgbotapi.api/api/tgbotapi.api.api +++ b/tgbotapi.api/api/tgbotapi.api.api @@ -2419,7 +2419,9 @@ public final class dev/inmo/tgbotapi/extensions/api/stories/PostStoryKt { public static final fun postStory-TVoEmL0 (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ljava/lang/String;Ldev/inmo/tgbotapi/types/stories/InputStoryContent;ILjava/util/List;Ljava/util/List;ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun postStory-TVoEmL0$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ljava/lang/String;Ldev/inmo/tgbotapi/types/stories/InputStoryContent;ILjava/util/List;Ljava/util/List;ZZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static final fun postStory-rseRIdU (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ljava/lang/String;Ldev/inmo/tgbotapi/types/stories/InputStoryContent;ILjava/lang/String;Ldev/inmo/tgbotapi/types/message/ParseMode;Ljava/util/List;ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun postStory-rseRIdU (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ljava/lang/String;Ldev/inmo/tgbotapi/types/stories/InputStoryContent;ILjava/util/List;ZZLdev/inmo/tgbotapi/types/message/textsources/TextSource;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun postStory-rseRIdU$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ljava/lang/String;Ldev/inmo/tgbotapi/types/stories/InputStoryContent;ILjava/lang/String;Ldev/inmo/tgbotapi/types/message/ParseMode;Ljava/util/List;ZZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public static synthetic fun postStory-rseRIdU$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ljava/lang/String;Ldev/inmo/tgbotapi/types/stories/InputStoryContent;ILjava/util/List;ZZLdev/inmo/tgbotapi/types/message/textsources/TextSource;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; } public final class dev/inmo/tgbotapi/extensions/api/thumbs/SetCustomEmojiStickerSetThumbKt { diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stories/PostStory.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stories/PostStory.kt index 7658de8a8d..e4d6d38a29 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stories/PostStory.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stories/PostStory.kt @@ -9,6 +9,8 @@ import dev.inmo.tgbotapi.types.message.textsources.TextSource import dev.inmo.tgbotapi.types.stories.InputStoryContent import dev.inmo.tgbotapi.types.stories.Story import dev.inmo.tgbotapi.types.stories.StoryArea +import dev.inmo.tgbotapi.utils.EntitiesBuilderBody +import dev.inmo.tgbotapi.utils.buildEntities public suspend fun TelegramBot.postStory( businessConnectionId: BusinessConnectionId, @@ -30,6 +32,27 @@ public suspend fun TelegramBot.postStory( ) ) +public suspend fun TelegramBot.postStory( + businessConnectionId: BusinessConnectionId, + content: InputStoryContent, + activePeriod: Seconds, + areas: List = emptyList(), + postToChatPage: Boolean = false, + protectContent: Boolean = false, + separator: TextSource? = null, + textBuilder: EntitiesBuilderBody +): Story = execute( + PostStory( + businessConnectionId = businessConnectionId, + content = content, + activePeriod = activePeriod, + textSources = buildEntities(separator, textBuilder), + areas = areas, + postToChatPage = postToChatPage, + protectContent = protectContent + ) +) + public suspend fun TelegramBot.postStory( businessConnectionId: BusinessConnectionId, content: InputStoryContent, diff --git a/tgbotapi.core/api/tgbotapi.core.api b/tgbotapi.core/api/tgbotapi.core.api index 3103492096..c67cf377ea 100644 --- a/tgbotapi.core/api/tgbotapi.core.api +++ b/tgbotapi.core/api/tgbotapi.core.api @@ -28201,7 +28201,8 @@ public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Photo : dev public fun equals (Ljava/lang/Object;)Z public fun getMedia ()Lkotlin/Pair; public final fun getPhoto ()Ldev/inmo/tgbotapi/requests/abstracts/MultipartFile; - public fun getType ()Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type; + public fun getType ()Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Photo$Type; + public synthetic fun getType ()Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type; public fun hashCode ()I public fun toString ()Ljava/lang/String; } @@ -28216,15 +28217,59 @@ public synthetic class dev/inmo/tgbotapi/types/stories/InputStoryContent$Photo$$ public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V } -public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Photo$Companion : dev/inmo/tgbotapi/types/stories/InputStoryContent$Type { +public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Photo$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Photo$Type : dev/inmo/tgbotapi/types/stories/InputStoryContent$Type { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Photo$Type; public fun getName ()Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } public abstract interface class dev/inmo/tgbotapi/types/stories/InputStoryContent$Type { + public static final field Companion Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type$Companion; public abstract fun getName ()Ljava/lang/String; } +public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Type$Companion : kotlinx/serialization/KSerializer { + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type; + 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/inmo/tgbotapi/types/stories/InputStoryContent$Type;)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/stories/InputStoryContent$Type$Companion$Unknown : dev/inmo/tgbotapi/types/stories/InputStoryContent$Type { + public static final field Companion Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type$Companion$Unknown$Companion; + public static final synthetic fun box-impl (Ljava/lang/String;)Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type$Companion$Unknown; + 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 fun getName ()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 synthetic class dev/inmo/tgbotapi/types/stories/InputStoryContent$Type$Companion$Unknown$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type$Companion$Unknown$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun deserialize-Nkg-lXw (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-QzjOhRc (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V +} + +public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Type$Companion$Unknown$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Video : dev/inmo/tgbotapi/types/stories/InputStoryContent { public static final field Companion Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Video$Companion; public fun (Ldev/inmo/tgbotapi/requests/abstracts/MultipartFile;Ljava/lang/Double;Ljava/lang/Double;Z)V @@ -28239,7 +28284,8 @@ public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Video : dev public final fun getCoverFrameTimeStamp ()Ljava/lang/Double; public final fun getDuration ()Ljava/lang/Double; public fun getMedia ()Lkotlin/Pair; - public fun getType ()Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type; + public synthetic fun getType ()Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Type; + public fun getType ()Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Video$Type; public final fun getVideo ()Ldev/inmo/tgbotapi/requests/abstracts/MultipartFile; public fun hashCode ()I public final fun isAnimation ()Z @@ -28256,7 +28302,12 @@ public synthetic class dev/inmo/tgbotapi/types/stories/InputStoryContent$Video$$ public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V } -public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Video$Companion : dev/inmo/tgbotapi/types/stories/InputStoryContent$Type { +public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Video$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/inmo/tgbotapi/types/stories/InputStoryContent$Video$Type : dev/inmo/tgbotapi/types/stories/InputStoryContent$Type { + public static final field INSTANCE Ldev/inmo/tgbotapi/types/stories/InputStoryContent$Video$Type; public fun getName ()Ljava/lang/String; public final fun serializer ()Lkotlinx/serialization/KSerializer; } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/InputStoryContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/InputStoryContent.kt index aef5239b5e..cb79add737 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/InputStoryContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/InputStoryContent.kt @@ -12,11 +12,31 @@ import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import kotlinx.serialization.json.JsonObject +import kotlin.jvm.JvmInline -@Serializable +@Serializable(InputStoryContent.Companion::class) sealed interface InputStoryContent { + @Serializable(Type.Companion::class) sealed interface Type { val name: String + companion object : KSerializer { + @Serializable + @JvmInline + value class Unknown(override val name: String) : Type + override val descriptor: SerialDescriptor + get() = String.serializer().descriptor + + override fun serialize(encoder: Encoder, value: Type) { encoder.encodeString(value.name) } + + override fun deserialize(decoder: Decoder): Type { + val name = decoder.decodeString() + return when (name) { + Photo.Type.name -> Photo.Type + Video.Type.name -> Video.Type + else -> Unknown(name) + } + } + } } val type : Type val media: Pair @@ -27,13 +47,14 @@ sealed interface InputStoryContent { val photo: MultipartFile ) : InputStoryContent { @EncodeDefault - override val type: Type = Companion + override val type: Type = Type override val media: Pair get() = photo.fileId to photo - companion object : Type { - override val name: String - get() = "photo" + @Serializable(InputStoryContent.Type.Companion::class) + object Type : InputStoryContent.Type { + @EncodeDefault + override val name: String = "photo" } } @Serializable @@ -48,14 +69,16 @@ sealed interface InputStoryContent { val isAnimation: Boolean = false ) : InputStoryContent { @EncodeDefault - override val type: Type = Companion + override val type: Type = Type override val media: Pair get() = video.fileId to video - companion object : Type { - override val name: String - get() = "video" + @Serializable(InputStoryContent.Type.Companion::class) + object Type : InputStoryContent.Type { + @EncodeDefault + override val name: String = "video" } + } companion object : KSerializer {