package dev.inmo.tgbotapi.requests.edit.LiveLocation import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.location.LiveLocation import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass import dev.inmo.tgbotapi.types.message.content.LocationContent import dev.inmo.tgbotapi.utils.throwRangeError import kotlinx.serialization.* private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() @Serializable data class EditChatMessageLiveLocation( @SerialName(chatIdField) override val chatId: ChatIdentifier, @SerialName(messageIdField) override val messageId: MessageIdentifier, @SerialName(latitudeField) override val latitude: Double, @SerialName(longitudeField) override val longitude: Double, @SerialName(horizontalAccuracyField) override val horizontalAccuracy: Meters? = null, @SerialName(headingField) override val heading: Degrees? = null, @SerialName(proximityAlertRadiusField) override val proximityAlertRadius: Meters? = null, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null ) : EditChatMessage, EditReplyMessage, EditLocationMessage { override fun method(): String = "editMessageLiveLocation" override val resultDeserializer: DeserializationStrategy> get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() init { if (horizontalAccuracy != null && horizontalAccuracy !in horizontalAccuracyLimit) { throwRangeError("horizontalAccuracy", horizontalAccuracyLimit, horizontalAccuracy) } } }