From 56f36523dbc77661e68f829b5dd60b2be419f8e3 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 11:50:46 +0600 Subject: [PATCH] "RawMessage" usages replaced by "Message" usages --- CHANGELOG.md | 6 +++++ .../bot/Ktor/KtorRequestsExecutor.kt | 13 +++++---- .../Ktor/base/MultipartRequestCallFactory.kt | 8 +++--- .../bot/exceptions/RequestException.kt | 10 +++---- .../TelegramBotAPI/requests/DeleteMessage.kt | 2 +- .../TelegramBotAPI/requests/ForwardMessage.kt | 7 ++--- .../TelegramBotAPI/requests/GetMe.kt | 2 +- .../TelegramBotAPI/requests/GetUpdates.kt | 2 +- .../TelegramBotAPI/requests/StopPoll.kt | 2 +- .../requests/abstracts/Request.kt | 11 ++++---- .../requests/answers/AnswerCallbackQuery.kt | 2 +- .../requests/answers/AnswerInlineQuery.kt | 2 +- .../abstracts/AnswerPreCheckoutQuery.kt | 2 +- .../payments/abstracts/AnswerShippingQuery.kt | 2 +- .../requests/chat/ExportChatInviteLink.kt | 2 +- .../TelegramBotAPI/requests/chat/LeaveChat.kt | 2 +- .../requests/chat/get/GetChat.kt | 2 +- .../chat/get/GetChatAdministrators.kt | 2 +- .../requests/chat/get/GetChatMembersCount.kt | 2 +- .../requests/chat/members/GetChatMember.kt | 2 +- .../requests/chat/members/KickChatMember.kt | 2 +- .../chat/members/PromoteChatMember.kt | 2 +- .../chat/members/RestrictChatMember.kt | 2 +- .../requests/chat/members/UnbanChatMember.kt | 2 +- .../requests/chat/modify/DeleteChatPhoto.kt | 2 +- .../requests/chat/modify/PinChatMessage.kt | 2 +- .../chat/modify/SetChatDescription.kt | 2 +- .../chat/modify/SetChatPermissions.kt | 2 +- .../requests/chat/modify/SetChatPhoto.kt | 2 +- .../requests/chat/modify/SetChatTitle.kt | 2 +- .../requests/chat/modify/UnpinChatMessage.kt | 2 +- .../chat/stickers/DeleteChatStickerSet.kt | 2 +- .../chat/stickers/SetChatStickerSet.kt | 2 +- .../EditChatMessageLiveLocation.kt | 5 ++-- .../StopChatMessageLiveLocation.kt | 5 ++-- .../ReplyMarkup/EditChatMessageReplyMarkup.kt | 5 ++-- .../edit/abstracts/EditChatMessage.kt | 4 +-- .../edit/abstracts/EditInlineMessage.kt | 2 +- .../edit/caption/EditChatMessageCaption.kt | 5 ++-- .../edit/media/EditChatMessageMedia.kt | 5 ++-- .../requests/edit/text/EditChatMessageText.kt | 5 ++-- .../games/abstracts/GetGameHighScores.kt | 2 +- .../requests/games/abstracts/SetGameScore.kt | 2 +- .../TelegramBotAPI/requests/get/GetFile.kt | 2 +- .../requests/get/GetStickerSet.kt | 2 +- .../requests/get/GetUserProfilePhotos.kt | 2 +- .../requests/send/SendAction.kt | 2 +- .../requests/send/SendContact.kt | 9 ++++--- .../requests/send/SendLocation.kt | 11 ++++---- .../requests/send/SendMessage.kt | 11 ++++---- .../TelegramBotAPI/requests/send/SendPoll.kt | 9 ++++--- .../TelegramBotAPI/requests/send/SendVenue.kt | 13 ++++----- .../requests/send/games/SendGame.kt | 7 ++--- .../requests/send/media/SendAnimation.kt | 21 ++++++++------- .../requests/send/media/SendAudio.kt | 21 ++++++++------- .../requests/send/media/SendDocument.kt | 17 ++++++------ .../requests/send/media/SendMediaGroup.kt | 12 ++++----- .../requests/send/media/SendPhoto.kt | 15 ++++++----- .../requests/send/media/SendSticker.kt | 11 ++++---- .../requests/send/media/SendVideo.kt | 21 ++++++++------- .../requests/send/media/SendVideoNote.kt | 21 ++++++++------- .../requests/send/media/SendVoice.kt | 19 ++++++------- .../send/media/base/MultipartRequestImpl.kt | 3 ++- .../requests/send/payments/SendInvoice.kt | 7 ++--- .../requests/stickers/DeleteStickerFromSet.kt | 2 +- .../stickers/SetStickerPositionInSet.kt | 2 +- .../requests/stickers/UploadStickerFile.kt | 2 +- .../stickers/abstracts/StickerSetAction.kt | 2 +- .../requests/webhook/DeleteWebhook.kt | 2 +- .../requests/webhook/GetWebhookInfo.kt | 2 +- .../requests/webhook/SetWebhook.kt | 2 +- .../types/CallbackQuery/RawCallbackQuery.kt | 9 ++++--- .../TelegramBotAPI/types/Response.kt | 11 +++----- .../abstracts/extended/ExtendedPublicChat.kt | 6 ++++- .../chat/extended/ExtendedChannelChatImpl.kt | 5 +++- .../chat/extended/ExtendedGroupChatImpl.kt | 5 +++- .../extended/ExtendedSupergroupChatImpl.kt | 5 +++- .../types/message/RawMessage.kt | 2 +- .../types/message/abstracts/Message.kt | 27 ++++++++++++++++++- .../types/message/content/ContactContent.kt | 4 +-- .../types/message/content/GameContent.kt | 4 +-- .../types/message/content/LocationContent.kt | 4 +-- .../types/message/content/PollContent.kt | 4 +-- .../types/message/content/TextContent.kt | 8 +++--- .../types/message/content/VenueContent.kt | 4 +-- .../content/abstracts/ResendableContent.kt | 6 ++--- .../message/content/media/AnimationContent.kt | 18 +++---------- .../message/content/media/AudioContent.kt | 4 +-- .../message/content/media/DocumentContent.kt | 4 +-- .../message/content/media/PhotoContent.kt | 4 +-- .../message/content/media/StickerContent.kt | 4 +-- .../message/content/media/VideoContent.kt | 4 +-- .../message/content/media/VideoNoteContent.kt | 6 ++--- .../message/content/media/VoiceContent.kt | 4 +-- .../TelegramBotAPI/types/update/RawUpdate.kt | 22 +++++++++------ .../utils/extensions/Executes.kt | 2 +- 96 files changed, 319 insertions(+), 256 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53e3a528a6..ac971f5ff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## 0.18.0 +* `RawMessage` now is internal class +* All `RawMessage` usages was replaced with `Message` interface + * `TelegramBotAPIMessageDeserializationStrategy` was created. It was used for deserialization of Telegram Bot API + incoming messages + * `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages + ## 0.17.0 Libraries updates: diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt index abc0e49fd8..dd9756ac87 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt @@ -7,6 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.newRequestExcep import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.EmptyLimiter import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.RequestLimiter import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request +import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.extractResult import com.github.insanusmokrassar.TelegramBotAPI.types.Response import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper @@ -16,6 +17,7 @@ import io.ktor.client.engine.HttpClientEngine import io.ktor.util.cio.toByteArray import kotlinx.coroutines.delay import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElementSerializer class KtorRequestsExecutor( telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, @@ -74,11 +76,11 @@ class KtorRequestsExecutor( val content = call.response.use { it.content.toByteArray().toString(Charsets.UTF_8) } - val responseObject = jsonFormatter.parse( - Response.serializer(request.resultSerializer()), - content - ) - responseObject.result ?: responseObject.parameters ?.let { + val responseObject = jsonFormatter.extractResult(content) + + val result = responseObject.result ?.let { + jsonFormatter.fromJson(request.resultDeserializer(), it) + } ?: responseObject.parameters ?.let { val error = it.error if (error is RetryAfterError) { delay(error.leftToRetry) @@ -93,6 +95,7 @@ class KtorRequestsExecutor( "Can't get result object from $content" ) } + result } } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt index aa5aad04ad..5884104497 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt @@ -3,9 +3,11 @@ package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.utils.mapWithCommonValues import io.ktor.client.HttpClient -import io.ktor.client.request.forms.* +import io.ktor.client.request.forms.MultiPartFormDataContent +import io.ktor.client.request.forms.formData import io.ktor.http.Headers import io.ktor.http.HttpHeaders +import kotlinx.io.core.readBytes class MultipartRequestCallFactory : AbstractRequestCallFactory() { @@ -21,9 +23,7 @@ class MultipartRequestCallFactory : AbstractRequestCallFactory() { when (value) { is MultipartFile -> append( key, - InputProvider { - value.file.asInput() - }, + value.file.asInput().readBytes(), Headers.build { append(HttpHeaders.ContentType, value.mimeType) append(HttpHeaders.ContentDisposition, "filename=${value.fileId}") diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt index 777ccec5d7..9fd0ef8e03 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.Response import java.io.IOException fun newRequestException( - response: Response<*>, + response: Response, plainAnswer: String, message: String? = null, cause: Throwable? = null @@ -15,7 +15,7 @@ fun newRequestException( } sealed class RequestException constructor( - val response: Response<*>, + val response: Response, val plainAnswer: String, message: String? = null, cause: Throwable? = null @@ -24,13 +24,13 @@ sealed class RequestException constructor( cause ) -class CommonRequestException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) : +class CommonRequestException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) : RequestException(response, plainAnswer, message, cause) -class UnauthorizedException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) : +class UnauthorizedException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) : RequestException(response, plainAnswer, message, cause) -class ReplyMessageNotFoundException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) : +class ReplyMessageNotFoundException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) : RequestException(response, plainAnswer, message, cause) @Deprecated( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt index 60158eafdf..f024b0c2b4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt @@ -15,5 +15,5 @@ data class DeleteMessage( ) : SimpleRequest, MessageAction { override fun method(): String = "deleteMessage" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt index 71294b1b7c..4b8f0cc6bc 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -16,12 +17,12 @@ data class ForwardMessage( override val messageId: MessageIdentifier, @SerialName(disableNotificationField) val disableNotification: Boolean = false -): SimpleRequest, MessageAction { +): SimpleRequest, MessageAction { @Transient override val chatId: ChatIdentifier get() = fromChatId override fun method(): String = "forwardMessage" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt index ae0b4eb48d..dc67a84e05 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt @@ -8,5 +8,5 @@ import kotlinx.serialization.Serializable @Serializable class GetMe : SimpleRequest { override fun method(): String = "getMe" - override fun resultSerializer(): KSerializer = User.serializer() + override fun resultDeserializer(): KSerializer = User.serializer() } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt index 3c697c3a7d..a79db0d088 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt @@ -38,5 +38,5 @@ data class GetUpdates( ): SimpleRequest> { override fun method(): String = "getUpdates" - override fun resultSerializer(): KSerializer> = ArrayListSerializer(RawUpdate.serializer()) + override fun resultDeserializer(): KSerializer> = ArrayListSerializer(RawUpdate.serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt index f5327fa719..09002cb049 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt @@ -18,5 +18,5 @@ data class StopPoll( override val replyMarkup: InlineKeyboardMarkup? = null ) : MessageAction, SimpleRequest, ReplyMarkup { override fun method(): String = "stopPoll" - override fun resultSerializer(): KSerializer = Poll.serializer() + override fun resultDeserializer(): KSerializer = Poll.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt index 3776c1c69d..617eb399ef 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt @@ -8,14 +8,13 @@ import kotlinx.serialization.json.JsonObject @Serializable(RequestSerializer::class) interface Request { fun method(): String - fun resultSerializer(): KSerializer + fun resultDeserializer(): DeserializationStrategy fun json(): JsonObject = toJsonWithoutNulls(RequestSerializer) } object RequestSerializer : KSerializer> by ContextSerializer(Request::class) -fun StringFormat.extractResult( - from: String, - dataSerializer: KSerializer -): Response { - return parse(Response.serializer(dataSerializer), from) +fun StringFormat.extractResult( + from: String +): Response { + return parse(Response.serializer(), from) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt index 08b7464bdc..3f911c8e0e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt @@ -20,7 +20,7 @@ data class AnswerCallbackQuery( val cachedTimeSeconds: Int? = null ) : SimpleRequest { override fun method(): String = "answerCallbackQuery" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } fun CallbackQuery.createAnswer( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt index ed4e3a29aa..7c47d11bb6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt @@ -28,7 +28,7 @@ data class AnswerInlineQuery( val switchPmParameter: String? = null ): SimpleRequest { override fun method(): String = "answerInlineQuery" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } fun InlineQuery.createAnswer( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt index b1b38da42b..d461c9a564 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.serializer interface AnswerPreCheckoutQuery : SimpleRequest { override fun method(): String = "answerPreCheckoutQuery" - override fun resultSerializer(): KSerializer = Boolean.serializer() + override fun resultDeserializer(): KSerializer = Boolean.serializer() val preCheckoutQueryId: PreCheckoutQueryId val isOk: Boolean diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt index 2888ef05a4..1f7ee5a80e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.serializer interface AnswerShippingQuery : SimpleRequest { override fun method(): String = "answerShippingQuery" - override fun resultSerializer(): KSerializer = Boolean.serializer() + override fun resultDeserializer(): KSerializer = Boolean.serializer() val shippingQueryId: ShippingQueryIdentifier val isOk: Boolean diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt index 722ed86f88..ecfd8f91b0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt @@ -13,5 +13,5 @@ data class ExportChatInviteLink( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "exportChatInviteLink" - override fun resultSerializer(): KSerializer = StringSerializer + override fun resultDeserializer(): KSerializer = StringSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt index f38465e7d7..fdadd6fc8e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt @@ -13,5 +13,5 @@ data class LeaveChat( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "leaveChat" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt index 275b772ff4..0f462ec9cf 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt @@ -14,5 +14,5 @@ data class GetChat( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "getChat" - override fun resultSerializer(): KSerializer = ExtendedChatSerializer + override fun resultDeserializer(): KSerializer = ExtendedChatSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt index 92f52b1e57..b756d41523 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt @@ -14,5 +14,5 @@ data class GetChatAdministrators( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest> { override fun method(): String = "getChatAdministrators" - override fun resultSerializer(): KSerializer> = ArrayListSerializer(RawChatMember.serializer()) + override fun resultDeserializer(): KSerializer> = ArrayListSerializer(RawChatMember.serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt index 643f138f82..303fd2ca91 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt @@ -13,5 +13,5 @@ data class GetChatMembersCount( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "getChatMembersCount" - override fun resultSerializer(): KSerializer = IntSerializer + override fun resultDeserializer(): KSerializer = IntSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt index 6ca8211236..a787b957a2 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt @@ -13,5 +13,5 @@ data class GetChatMember( override val userId: UserId ) : ChatMemberRequest { override fun method(): String = "getChatMember" - override fun resultSerializer(): KSerializer = RawChatMember.serializer() + override fun resultDeserializer(): KSerializer = RawChatMember.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt index 0bd97473a7..fcbd6df4f1 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt @@ -16,5 +16,5 @@ data class KickChatMember( override val untilDate: TelegramDate? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "kickChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt index 57e4fdf090..d741403d14 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt @@ -32,5 +32,5 @@ data class PromoteChatMember( private val canPromoteMembers: Boolean? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "promoteChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt index aa879b1ff8..71eac80c5b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt @@ -19,5 +19,5 @@ data class RestrictChatMember( val permissions: ChatPermissions ) : ChatMemberRequest, UntilDate { override fun method(): String = "restrictChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt index 70492e7f8c..ad2280bcff 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt @@ -13,5 +13,5 @@ data class UnbanChatMember( override val userId: UserId ) : ChatMemberRequest { override fun method(): String = "unbanChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt index 92f927d9a7..54216a5dc3 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt @@ -13,5 +13,5 @@ data class DeleteChatPhoto( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "deleteChatPhoto" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt index 8d7067c695..7800bcaf85 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt @@ -16,5 +16,5 @@ data class PinChatMessage ( override val disableNotification: Boolean = false ): ChatRequest, SimpleRequest, MessageAction, DisableNotification { override fun method(): String = "pinChatMessage" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt index d48e24a90b..a3d2c29ef7 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt @@ -20,5 +20,5 @@ data class SetChatDescription ( } override fun method(): String = "setChatDescription" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt index 3ebe1235b4..7d7e156325 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt @@ -15,5 +15,5 @@ data class SetChatPermissions ( val permissions: ChatPermissions ): ChatRequest, SimpleRequest { override fun method(): String = "setChatPermissions" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt index 212346bf6d..fd55982656 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt @@ -16,7 +16,7 @@ data class SetChatPhoto ( val photo: MultipartFile = throw IllegalArgumentException("Unfortunately, this type of objects can't be parsed automatically") ): ChatRequest, MultipartRequest { override fun method(): String = "setChatPhoto" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer override val mediaMap: Map = mapOf(photoField to photo) override val paramsJson: JsonObject = toJson(serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt index 79f2ce0ebb..61e3140015 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt @@ -20,5 +20,5 @@ data class SetChatTitle ( } override fun method(): String = "setChatTitle" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt index 3f362c72fc..8e3cae8855 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt @@ -13,5 +13,5 @@ data class UnpinChatMessage( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "unpinChatMessage" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt index c02109cda6..85eab03063 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt @@ -13,5 +13,5 @@ data class DeleteChatStickerSet( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "deleteChatStickerSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt index 3452572914..e3d8b057c0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt @@ -14,5 +14,5 @@ data class SetChatStickerSet( val stickerSetName: StickerSetName ): ChatRequest, SimpleRequest { override fun method(): String = "setChatStickerSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt index c492115e85..5bea2e5d66 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.LiveLocation import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -20,5 +21,5 @@ data class EditChatMessageLiveLocation( override val replyMarkup: InlineKeyboardMarkup? = null ) : EditChatMessage, EditReplyMessage, EditLocationMessage { override fun method(): String = "editMessageLiveLocation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt index 7780fa347c..bf4a1beae7 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditCh import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -17,5 +18,5 @@ data class StopChatMessageLiveLocation( override val replyMarkup: InlineKeyboardMarkup? = null ) : EditChatMessage, EditReplyMessage { override fun method(): String = "stopMessageLiveLocation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt index b8ea63b86a..d0b1a16f0e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditCh import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageReplyMarkupMethod = "editMessageReplyMarkup" @@ -20,5 +21,5 @@ data class EditChatMessageReplyMarkup( ) : EditChatMessage, EditReplyMessage { override fun method(): String = editMessageReplyMarkupMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt index 5400523a1d..967f228991 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt @@ -2,6 +2,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message -interface EditChatMessage : SimpleRequest, MessageAction +interface EditChatMessage : SimpleRequest, MessageAction diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt index 9efd879fb6..1e59a089c4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt @@ -7,5 +7,5 @@ import kotlinx.serialization.internal.BooleanSerializer interface EditInlineMessage : SimpleRequest { val inlineMessageId: InlineMessageIdentifier - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt index 2d281bb1e4..554585d623 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageCaptionMethod = "editMessageCaption" @@ -25,5 +26,5 @@ data class EditChatMessageCaption( ) : EditChatMessage, EditTextChatMessage, EditReplyMessage { override fun method(): String = editMessageCaptionMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt index 4ed80b8de2..a10ca2edd2 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageMediaMethod = "editMessageMedia" @@ -29,5 +30,5 @@ data class EditChatMessageMedia( } override fun method(): String = editMessageMediaMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt index e4d3c12977..4f431d8f61 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageTextMethod = "editMessageText" @@ -27,5 +28,5 @@ data class EditChatMessageText( ) : EditChatMessage, EditTextChatMessage, EditReplyMessage, EditDisableWebPagePreviewMessage { override fun method(): String = editMessageTextMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt index e0499783eb..9e329e38c6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt @@ -10,7 +10,7 @@ interface GetGameHighScores : SimpleRequest> { val userId: UserId override fun method(): String = "getGameHighScores" - override fun resultSerializer(): KSerializer> = GameHighScoresSerializer + override fun resultDeserializer(): KSerializer> = GameHighScoresSerializer } object GameHighScoresSerializer : KSerializer> by ArrayListSerializer(GameHighScore.serializer()) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt index 5ba912b016..f1f42144ef 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt @@ -12,5 +12,5 @@ interface SetGameScore : SimpleRequest { val disableEditMessage: Boolean override fun method(): String = "setGameScore" - override fun resultSerializer(): KSerializer = Boolean.serializer() + override fun resultDeserializer(): KSerializer = Boolean.serializer() } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt index 834cd3a8e9..9ffdc26483 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt @@ -12,5 +12,5 @@ data class GetFile( val fileId: FileId ): SimpleRequest { override fun method(): String = "getFile" - override fun resultSerializer(): KSerializer = PathedFile.serializer() + override fun resultDeserializer(): KSerializer = PathedFile.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt index c010d853a7..844808349f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt @@ -11,5 +11,5 @@ data class GetStickerSet( val name: String ): SimpleRequest { override fun method(): String = "getStickerSet" - override fun resultSerializer(): KSerializer = StickerSet.serializer() + override fun resultDeserializer(): KSerializer = StickerSet.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt index 6ff1017bb8..85dd7eadc8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt @@ -23,5 +23,5 @@ data class GetUserProfilePhotos( } override fun method(): String = "getUserProfilePhotos" - override fun resultSerializer(): KSerializer = UserProfilePhotos.serializer() + override fun resultDeserializer(): KSerializer = UserProfilePhotos.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt index 9d4a0bdb00..5559a5245b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt @@ -17,5 +17,5 @@ data class SendAction( val action: BotAction ): SendChatMessageRequest { override fun method(): String = "sendChatAction" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt index 8b7ef0f15e..6234bb6ef8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -23,8 +24,8 @@ data class SendContact( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest { constructor( chatId: ChatIdentifier, @@ -43,7 +44,7 @@ data class SendContact( ) override fun method(): String = "sendContact" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } fun Contact.toRequest( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt index 75778768d0..a3009dab9e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* // TODO:: Add location tracker for tracking location @@ -23,11 +24,11 @@ data class SendLocation( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest, - PositionedSendMessageRequest +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest, + PositionedSendMessageRequest { override fun method(): String = "sendLocation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt index 02b0e7d10f..72a16fe10b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt @@ -6,7 +6,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -25,9 +26,9 @@ data class SendMessage( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, DisableWebPagePreview { init { @@ -37,5 +38,5 @@ data class SendMessage( } override fun method(): String = "sendMessage" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt index 347a2b7bd9..943c76b60c 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -21,8 +22,8 @@ data class SendPoll( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest { +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest { init { if (question.length !in pollQuestionTextLength) { @@ -39,5 +40,5 @@ data class SendPoll( } override fun method(): String = "sendPoll" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt index 5c6c38eece..ce714015a4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -26,10 +27,10 @@ data class SendVenue( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - PositionedSendMessageRequest, - TitledSendMessageRequest, - ReplyingMarkupSendMessageRequest +) : SendMessageRequest, + PositionedSendMessageRequest, + TitledSendMessageRequest, + ReplyingMarkupSendMessageRequest { constructor( chatId: ChatIdentifier, @@ -50,7 +51,7 @@ data class SendVenue( ) override fun method(): String = "sendVenue" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } fun Venue.toRequest( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt index f3cc4c9352..617ade799a 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMar import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -19,8 +20,8 @@ data class SendGame ( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, +) : SendMessageRequest, ReplyMarkup { override fun method(): String = "sendGame" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt index e5d1e4394a..cfa34557e0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -23,7 +24,7 @@ fun SendAnimation( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val animationAsFileId = (animation as? FileId) ?.fileId val animationAsFile = animation as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -77,13 +78,13 @@ data class SendAnimationData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest, - SizedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest, + SizedSendMessageRequest { init { text ?.let { @@ -94,7 +95,7 @@ data class SendAnimationData internal constructor( } override fun method(): String = "sendAnimation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendAnimationFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt index c6317f0c00..c4d808e778 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt @@ -8,7 +8,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -24,7 +25,7 @@ fun SendAudio( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val audioAsFileId = (audio as? FileId) ?.fileId val audioAsFile = audio as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -78,13 +79,13 @@ data class SendAudioData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - TitledSendMessageRequest, - DuratedSendMessageRequest, +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + TitledSendMessageRequest, + DuratedSendMessageRequest, Performerable { init { @@ -96,7 +97,7 @@ data class SendAudioData internal constructor( } override fun method(): String = "sendAudio" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendAudioFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt index f3cc73279b..72143c7735 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -20,7 +21,7 @@ fun SendDocument( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val documentAsFileId = (document as? FileId) ?.fileId val documentAsFile = document as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -65,11 +66,11 @@ data class SendDocumentData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest { init { text ?.let { @@ -80,7 +81,7 @@ data class SendDocumentData internal constructor( } override fun method(): String = "sendDocument" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendDocumentFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt index 921afb4f8c..1755917ada 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt @@ -6,7 +6,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMe import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.* -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.internal.ArrayListSerializer @@ -19,7 +19,7 @@ fun SendMediaGroup( media: List, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null -): Request> { +): Request> { if (media.size !in membersCountInMediaGroup) { throw IllegalArgumentException("Count of members for media group must be in $membersCountInMediaGroup range") } @@ -52,7 +52,7 @@ fun SendMediaGroup( } } -private val serializer = ArrayListSerializer(RawMessage.serializer()) +private val serializer = ArrayListSerializer(TelegramBotAPIMessageDeserializeOnlySerializer) @Serializable data class SendMediaGroupData internal constructor( @@ -63,8 +63,8 @@ data class SendMediaGroupData internal constructor( override val disableNotification: Boolean = false, @SerialName(replyToMessageIdField) override val replyToMessageId: MessageIdentifier? = null -) : DataRequest>, - SendMessageRequest> +) : DataRequest>, + SendMessageRequest> { @SerialName(mediaField) private val convertedMedia: String @@ -76,7 +76,7 @@ data class SendMediaGroupData internal constructor( override fun method(): String = "sendMediaGroup" - override fun resultSerializer(): KSerializer> = serializer + override fun resultDeserializer(): DeserializationStrategy> = serializer } data class SendMediaGroupFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt index 78b418a0c7..15403b4730 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* fun SendPhoto( @@ -18,7 +19,7 @@ fun SendPhoto( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val data = SendPhotoData( chatId, (photo as? FileId) ?.fileId, @@ -52,10 +53,10 @@ data class SendPhotoData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest { init { text ?.let { @@ -66,7 +67,7 @@ data class SendPhotoData internal constructor( } override fun method(): String = "sendPhoto" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendPhotoFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt index e9d16beb8b..b1add1b9cc 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.json.JsonObject @@ -16,7 +17,7 @@ fun SendSticker( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request = SendStickerByFileId( +): Request = SendStickerByFileId( chatId, sticker as? FileId, disableNotification, @@ -41,16 +42,16 @@ data class SendStickerByFileId internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, ReplyingMarkupSendMessageRequest { +) : SendMessageRequest, ReplyingMarkupSendMessageRequest { override fun method(): String = "sendSticker" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendStickerByFile internal constructor( @Transient private val sendStickerByFileId: SendStickerByFileId, val sticker: MultipartFile -) : MultipartRequest, Request by sendStickerByFileId { +) : MultipartRequest, Request by sendStickerByFileId { override val mediaMap: Map = mapOf(stickerField to sticker) override val paramsJson: JsonObject = sendStickerByFileId.toJsonWithoutNulls(SendStickerByFileId.serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt index 03c69b4d39..23e803c1af 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -24,7 +25,7 @@ fun SendVideo( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val videoAsFileId = (video as? FileId) ?.fileId val videoAsFile = video as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -81,13 +82,13 @@ data class SendVideoData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest, - SizedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest, + SizedSendMessageRequest { init { text ?.let { @@ -98,7 +99,7 @@ data class SendVideoData internal constructor( } override fun method(): String = "sendVideo" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendVideoFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt index 88de4f17a0..92d8dbcc05 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -22,7 +23,7 @@ fun SendVideoNote( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val videoNoteAsFileId = (videoNote as? FileId) ?.fileId val videoNoteAsFile = videoNote as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -73,13 +74,13 @@ data class SendVideoNoteData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest, - SizedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest, + SizedSendMessageRequest { @Transient override val height: Int? @@ -94,7 +95,7 @@ data class SendVideoNoteData internal constructor( } override fun method(): String = "sendVideoNote" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendVideoNoteFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt index c167b8ed3d..ebc1425dda 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -21,7 +22,7 @@ fun SendVoice( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val voiceAsFileId = (voice as? FileId) ?.fileId val voiceAsFile = voice as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -69,12 +70,12 @@ data class SendVoiceData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest { init { text ?.let { @@ -85,7 +86,7 @@ data class SendVoiceData internal constructor( } override fun method(): String = "sendVoice" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendVoiceFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt index c00917c99a..55a694dcc3 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt @@ -2,6 +2,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartFile import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartRequest +import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.KSerializer import kotlinx.serialization.json.JsonObject @@ -13,7 +14,7 @@ class MultipartRequestImpl, F: Files, R: Any>( val files: F ) : MultipartRequest { override fun method(): String = data.method() - override fun resultSerializer(): KSerializer = data.resultSerializer() + override fun resultDeserializer(): DeserializationStrategy = data.resultDeserializer() override val paramsJson: JsonObject = data.json() override val mediaMap: Map = files } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt index 9dc46a4ffa..d41499b200 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.* import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.types.payments.LabeledPrice import com.github.insanusmokrassar.TelegramBotAPI.types.payments.LabeledPricesSerializer import com.github.insanusmokrassar.TelegramBotAPI.types.payments.abstracts.* @@ -62,9 +63,9 @@ data class SendInvoice( DisableNotification, ReplyMessageId, ReplyMarkup, - SendMessageRequest { + SendMessageRequest { override fun method(): String = "sendInvoice" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy @SerialName(photoUrlField) var photoUrl: String? = null diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt index 8f64e743b2..00048ba963 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt @@ -12,5 +12,5 @@ data class DeleteStickerFromSet( val sticker: FileId ) : SimpleRequest { override fun method(): String = "deleteStickerFromSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt index 0e97d18b6b..f8ef9bd32e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt @@ -21,5 +21,5 @@ data class SetStickerPositionInSet( } override fun method(): String = "setStickerPositionInSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt index 8267d8f809..7bdc656e03 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt @@ -24,5 +24,5 @@ data class UploadStickerFile( override val mediaMap: Map = mapOf(pngStickerField to sticker) @Transient override val paramsJson: JsonObject = toJsonWithoutNulls(serializer()) - override fun resultSerializer(): KSerializer = File.serializer() + override fun resultDeserializer(): KSerializer = File.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt index d53110b07e..0f10097952 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt @@ -12,5 +12,5 @@ interface StickerSetAction : SimpleRequest { val emojis: String // must be more than one val maskPosition: MaskPosition? - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt index 2260816fe1..d0e3b8a9b7 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt @@ -9,5 +9,5 @@ import kotlinx.serialization.internal.BooleanSerializer class DeleteWebhook : SimpleRequest { override fun method(): String = "deleteWebhook" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt index 27b686964a..d3f82ab3d6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt @@ -9,5 +9,5 @@ import kotlinx.serialization.Serializable class GetWebhookInfo : SimpleRequest { override fun method(): String = "getWebhookInfo" - override fun resultSerializer(): KSerializer = WebhookInfo.serializer() + override fun resultDeserializer(): KSerializer = WebhookInfo.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt index bae1ad4a4c..120384c211 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt @@ -51,7 +51,7 @@ data class SetWebhook internal constructor( val allowedUpdates: List? = null ) : DataRequest { override fun method(): String = "setWebhook" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer init { maxAllowedConnections ?.let { diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt index fc84587435..d95a26e80b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt @@ -2,6 +2,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.* @Serializable @@ -10,7 +12,8 @@ data class RawCallbackQuery( val id: CallbackQueryIdentifier, @SerialName(fromField) val from: User, - val message: RawMessage? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + val message: Message? = null, @SerialName(inlineMessageIdField) val inlineMessageId: InlineMessageIdentifier? = null, @SerialName("chat_instance") @@ -22,8 +25,8 @@ data class RawCallbackQuery( @Transient val asCallbackQuery: CallbackQuery by lazy { when { - message != null && data != null -> MessageDataCallbackQuery(id, from, chatInstance, message.asMessage, data) - message != null && gameShortName != null -> MessageGameShortNameCallbackQuery(id, from, chatInstance, message.asMessage, gameShortName) + message != null && data != null -> MessageDataCallbackQuery(id, from, chatInstance, message, data) + message != null && gameShortName != null -> MessageGameShortNameCallbackQuery(id, from, chatInstance, message, gameShortName) inlineMessageId != null && data != null -> InlineMessageIdDataCallbackQuery(id, from, chatInstance, inlineMessageId, data) inlineMessageId != null && gameShortName != null -> InlineMessageIdGameShortNameCallbackQuery(id, from, chatInstance, inlineMessageId, gameShortName) else -> throw IllegalStateException("Strange answer from server, can't create callback query") diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt index c5093b3997..6a5bfa4c62 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt @@ -2,19 +2,14 @@ package com.github.insanusmokrassar.TelegramBotAPI.types import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable - -@Deprecated( - "Deprecated because incorrect name", - ReplaceWith("Response") -) -typealias ResponseParameters = Response +import kotlinx.serialization.json.JsonElement @Serializable -data class Response( +data class Response( val ok: Boolean = false, val description: String? = null, @SerialName("error_code") val errorCode: Int? = null, - val result: T? = null, + val result: JsonElement? = null, val parameters: ResponseParametersRaw? = null ) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt index 5f10a77528..d42cce3d2b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt @@ -2,9 +2,13 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PublicChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer +import kotlinx.serialization.Serializable interface ExtendedPublicChat : ExtendedChat, PublicChat { val description: String val inviteLink: String? - val pinnedMessage: RawMessage? + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + val pinnedMessage: Message? } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt index d1fa0dd594..ee5034e18f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt @@ -3,6 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.extended import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedChannelChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -21,5 +23,6 @@ data class ExtendedChannelChatImpl( @SerialName(inviteLinkField) override val inviteLink: String? = null, @SerialName(pinnedMessageField) - override val pinnedMessage: RawMessage? = null + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null ) : ExtendedChannelChat diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt index 2eb20fc6ca..5a22610531 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt @@ -4,6 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedGroupChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -22,5 +24,6 @@ data class ExtendedGroupChatImpl( @SerialName(inviteLinkField) override val inviteLink: String? = null, @SerialName(pinnedMessageField) - override val pinnedMessage: RawMessage? = null + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null ) : ExtendedGroupChat diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt index 1e352548b2..b87d2e4868 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt @@ -4,6 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedSupergroupChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -24,7 +26,8 @@ data class ExtendedSupergroupChatImpl( @SerialName(inviteLinkField) override val inviteLink: String? = null, @SerialName(pinnedMessageField) - override val pinnedMessage: RawMessage? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null, @SerialName(stickerSetNameFullField) override val stickerSetName: StickerSetName? = null, @SerialName(canSetStickerSetField) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt index c2b8e36704..16be55b091 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt @@ -24,7 +24,7 @@ import kotlin.reflect.KClass // TODO:: add PassportData type @Serializable -data class RawMessage( +internal data class RawMessage( @SerialName(messageIdField) val messageId: MessageIdentifier, @SerialName(dateField) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt index 602afa1aac..9c500b31cd 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt @@ -2,10 +2,35 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.Chat +import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor import org.joda.time.DateTime interface Message { val messageId: MessageIdentifier val chat: Chat val date: DateTime -} \ No newline at end of file +} + +object TelegramBotAPIMessageDeserializationStrategy : DeserializationStrategy { + override val descriptor: SerialDescriptor = StringDescriptor.withName("TelegramBotAPIMessageSerializer") + + override fun patch(decoder: Decoder, old: Message): Message = throw UpdateNotSupportedException(descriptor.name) + override fun deserialize(decoder: Decoder): Message { + return RawMessage.serializer().deserialize(decoder).asMessage + } +} + +object TelegramBotAPIMessageDeserializeOnlySerializer : KSerializer { + override val descriptor: SerialDescriptor + get() = TelegramBotAPIMessageDeserializationStrategy.descriptor + + override fun deserialize(decoder: Decoder): Message { + return TelegramBotAPIMessageDeserializationStrategy.deserialize(decoder) + } + + override fun serialize(encoder: Encoder, obj: Message) { + throw IllegalStateException("Currently, Message objects can't be serialized y this serializer") + } +} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt index a5cca887cf..64cdea6bd0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendContact import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class ContactContent( @@ -15,7 +15,7 @@ data class ContactContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendContact( + ): Request = SendContact( chatId, contact, disableNotification, replyToMessageId, replyMarkup ) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt index bbafa16285..257cd648e0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt @@ -6,7 +6,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.games.Game -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class GameContent( @@ -17,7 +17,7 @@ data class GameContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendGame( + ): Request = SendGame( chatId, game.title, disableNotification, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt index 8c3c20d7b2..89ba7c4aab 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendLocation import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class LocationContent( @@ -15,7 +15,7 @@ data class LocationContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendLocation( + ): Request = SendLocation( chatId, location.latitude, location.longitude, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt index e6eef2fdff..1b27e1278e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt @@ -5,7 +5,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendPoll import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent import com.github.insanusmokrassar.TelegramBotAPI.types.polls.Poll @@ -17,7 +17,7 @@ data class PollContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendPoll( + ): Request = SendPoll( chatId, poll.question, poll.options.map { it.text }, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt index 1676614d7c..0dfa2f56f4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt @@ -7,7 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEnt import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlTexts import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownTexts @@ -21,7 +21,7 @@ data class TextContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendMessage( + ): Request = SendMessage( chatId, toHtmlTexts().first(), HTMLParseMode, @@ -36,7 +36,7 @@ data class TextContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): List> = createResends( + ): List> = createResends( chatId, disableNotification, replyToMessageId, @@ -50,7 +50,7 @@ data class TextContent( replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup?, parseMode: ParseMode = HTMLParseMode - ): List> = when (parseMode) { + ): List> = when (parseMode) { is MarkdownParseMode -> toMarkdownTexts() is HTMLParseMode -> toHtmlTexts() }.map { diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt index 871b75ff71..671937ebef 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendVenue import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class VenueContent( @@ -15,7 +15,7 @@ data class VenueContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVenue( + ): Request = SendVenue( chatId, venue, disableNotification, replyToMessageId, replyMarkup ) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt index 2d53a39568..69fd38aa35 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message interface ResendableContent { fun createResend( @@ -12,12 +12,12 @@ interface ResendableContent { disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null - ): Request + ): Request fun createResends( chatId: ChatIdentifier, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null - ): List> = listOf(createResend(chatId, disableNotification, replyToMessageId, replyMarkup)) + ): List> = listOf(createResend(chatId, disableNotification, replyToMessageId, replyMarkup)) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt index c4934231fc..5548b804b4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt @@ -11,7 +11,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.AnimationFile import com.github.insanusmokrassar.TelegramBotAPI.types.files.DocumentFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -26,22 +26,12 @@ data class AnimationContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = createResend(chatId, toHtmlCaptions().firstOrNull(), HTMLParseMode, disableNotification, replyToMessageId, replyMarkup) - - @Deprecated("Will be fully replaced by default method") - fun createResend( - chatId: ChatIdentifier, - caption: String?, - parseMode: ParseMode? = null, - disableNotification: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - replyMarkup: KeyboardMarkup? = null - ): Request = SendAnimation( + ): Request = SendAnimation( chatId, media.fileId, media.thumb ?.fileId, - caption, - parseMode, + toHtmlCaptions().firstOrNull(), + HTMLParseMode, media.duration, media.width, media.height, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt index 778498771c..346826b0b1 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt @@ -9,7 +9,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.AudioFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -23,7 +23,7 @@ data class AudioContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendAudio( + ): Request = SendAudio( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt index dba87ea226..2b6b31cb8b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt @@ -9,7 +9,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.DocumentFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -23,7 +23,7 @@ data class DocumentContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendDocument( + ): Request = SendDocument( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt index c0589cb9d7..d358b88ebe 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt @@ -11,7 +11,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize import com.github.insanusmokrassar.TelegramBotAPI.types.files.biggest -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaCollectionContent import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaGroupContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -28,7 +28,7 @@ data class PhotoContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendPhoto( + ): Request = SendPhoto( chatId, media.fileId, toHtmlCaptions().firstOrNull(), diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt index 70d87d4fec..9fccfee65f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt @@ -6,7 +6,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.Sticker -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent data class StickerContent( @@ -17,7 +17,7 @@ data class StickerContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendSticker( + ): Request = SendSticker( chatId, media.fileId, disableNotification, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt index 2de7f425ba..718845cafb 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt @@ -10,7 +10,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VideoFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaGroupContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -24,7 +24,7 @@ data class VideoContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVideo( + ): Request = SendVideo( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt index 7a52e92e08..422b9b0910 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt @@ -7,7 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VideoNoteFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent data class VideoNoteContent( @@ -18,7 +18,7 @@ data class VideoNoteContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = createResend(chatId, null, null, disableNotification, replyToMessageId, replyMarkup) + ): Request = createResend(chatId, null, null, disableNotification, replyToMessageId, replyMarkup) fun createResend( chatId: ChatIdentifier, @@ -27,7 +27,7 @@ data class VideoNoteContent( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null - ): Request = SendVideoNote( + ): Request = SendVideoNote( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt index e29db55dee..63c07dbb5c 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt @@ -9,7 +9,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VoiceFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -23,7 +23,7 @@ data class VoiceContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVoice( + ): Request = SendVoice( chatId, media.fileId, null, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt index 1e5c541bb7..9299cbce03 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt @@ -5,6 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.ChosenInli import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.query.RawInlineQuery import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import com.github.insanusmokrassar.TelegramBotAPI.types.payments.PreCheckoutQuery import com.github.insanusmokrassar.TelegramBotAPI.types.payments.ShippingQuery import com.github.insanusmokrassar.TelegramBotAPI.types.polls.Poll @@ -18,10 +20,14 @@ import kotlinx.serialization.* data class RawUpdate constructor( @SerialName(updateIdField) val updateId: UpdateIdentifier, - private val edited_message: RawMessage? = null, - private val message: RawMessage? = null, - private val edited_channel_post: RawMessage? = null, - private val channel_post: RawMessage? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val edited_message: Message? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val message: Message? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val edited_channel_post: Message? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val channel_post: Message? = null, private val inline_query: RawInlineQuery? = null, private val chosen_inline_result: RawChosenInlineResult? = null, private val callback_query: RawCallbackQuery? = null, @@ -32,10 +38,10 @@ data class RawUpdate constructor( @Transient val asUpdate: Update by lazy { when { - edited_message != null -> EditMessageUpdate(updateId, edited_message.asMessage) - message != null -> MessageUpdate(updateId, message.asMessage) - edited_channel_post != null -> EditChannelPostUpdate(updateId, edited_channel_post.asMessage) - channel_post != null -> ChannelPostUpdate(updateId, channel_post.asMessage) + edited_message != null -> EditMessageUpdate(updateId, edited_message) + message != null -> MessageUpdate(updateId, message) + edited_channel_post != null -> EditChannelPostUpdate(updateId, edited_channel_post) + channel_post != null -> ChannelPostUpdate(updateId, channel_post) chosen_inline_result != null -> ChosenInlineResultUpdate(updateId, chosen_inline_result.asChosenInlineResult) inline_query != null -> InlineQueryUpdate(updateId, inline_query.asInlineQuery) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt index eb8b2f2679..ebb3f462ae 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt @@ -9,7 +9,7 @@ import kotlinx.coroutines.* fun RequestsExecutor.executeAsync( request: Request, - onFail: (suspend (Response<*>) -> Unit)? = null, + onFail: (suspend (Response) -> Unit)? = null, scope: CoroutineScope = GlobalScope, onSuccess: (suspend (T) -> Unit)? = null ): Job {