From a65971be00422bc3e2935841b3468e0fdcf2ae5c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 19 Aug 2023 00:31:36 +0600 Subject: [PATCH] start add stories --- .../inmo/tgbotapi/types/message/RawMessage.kt | 7 ++++ .../types/message/content/StoryContent.kt | 38 +++++++++++++++++++ .../dev/inmo/tgbotapi/types/stories/Story.kt | 6 +++ 3 files changed, 51 insertions(+) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/StoryContent.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/Story.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt index eb43475213..6a5d7f2c6a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt @@ -31,6 +31,7 @@ import dev.inmo.tgbotapi.types.payments.SuccessfulPayment import dev.inmo.tgbotapi.types.polls.Poll import dev.inmo.tgbotapi.types.request.ChatShared import dev.inmo.tgbotapi.types.request.UserShared +import dev.inmo.tgbotapi.types.stories.Story import dev.inmo.tgbotapi.types.venue.Venue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -65,6 +66,7 @@ internal data class RawMessage( private val caption: String? = null, private val caption_entities: RawMessageEntities? = null, private val has_media_spoiler: Boolean? = null, + private val story: Story? = null, private val audio: AudioFile? = null, private val document: DocumentFile? = null, private val animation: AnimationFile? = null, @@ -134,6 +136,11 @@ internal data class RawMessage( } ?: emptyList() when { + story != null -> StoryContent( + from ?: error("For story content field 'from' is required and should contains User info"), + messageId, + story + ) text != null -> TextContent(text, (entities ?: emptyList()).asTextSources(text)) audio != null -> AudioContent( audio, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/StoryContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/StoryContent.kt new file mode 100644 index 0000000000..201de4cbec --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/StoryContent.kt @@ -0,0 +1,38 @@ +package dev.inmo.tgbotapi.types.message.content + +import dev.inmo.tgbotapi.requests.ForwardMessage +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.MessageId +import dev.inmo.tgbotapi.types.MessageThreadId +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.message.abstracts.Message +import dev.inmo.tgbotapi.types.stories.Story +import kotlinx.serialization.Serializable + +@Serializable +data class StoryContent( + private val from: Chat, + private val messageId: MessageId, + val story: Story +) : MessageContent { + override fun createResend( + chatId: ChatIdentifier, + messageThreadId: MessageThreadId?, + disableNotification: Boolean, + protectContent: Boolean, + replyToMessageId: MessageId?, + allowSendingWithoutReply: Boolean?, + replyMarkup: KeyboardMarkup? + ): Request { + return ForwardMessage( + from.id, + toChatId = chatId, + messageId = messageId, + threadId = messageThreadId, + disableNotification = disableNotification, + protectContent = protectContent + ) + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/Story.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/Story.kt new file mode 100644 index 0000000000..592188a196 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stories/Story.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.stories + +import kotlinx.serialization.Serializable + +@Serializable +class Story