package dev.inmo.tgbotapi.requests.edit.media import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.media.TelegramMedia import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass import dev.inmo.tgbotapi.types.message.content.MediaContent import kotlinx.serialization.* const val editMessageMediaMethod = "editMessageMedia" internal val MediaContentMessageResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() @Serializable data class EditChatMessageMedia( @SerialName(chatIdField) override val chatId: ChatIdentifier, @SerialName(messageIdField) override val messageId: MessageId, @SerialName(mediaField) override val media: TelegramMedia, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null ) : EditChatMessage, EditReplyMessage, EditMediaMessage { init { if (media.file is MultipartFile) { throw IllegalArgumentException("For editing of media messages you MUST use file id (according to documentation)") } } override fun method(): String = editMessageMediaMethod override val resultDeserializer: DeserializationStrategy> get() = MediaContentMessageResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() }