diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt index 2f58255c54..66940cb2f1 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt @@ -3,10 +3,13 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.ForwardedMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* +private val AbleToBeForwardedMessageDeserializer = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class ForwardMessage( @SerialName(fromChatIdField) @@ -17,15 +20,14 @@ data class ForwardMessage( override val messageId: MessageIdentifier, @SerialName(disableNotificationField) val disableNotification: Boolean = false -): SimpleRequest, MessageAction { - @Transient +): SimpleRequest, MessageAction { override val chatId: ChatIdentifier get() = fromChatId override fun method(): String = "forwardMessage" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy + get() = AbleToBeForwardedMessageDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/UnpinChatMessage.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/UnpinChatMessage.kt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt index efc8548b7c..f05cb93352 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt @@ -3,23 +3,22 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier -import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember -import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMemberSerializerWithoutDeserialization +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField import kotlinx.serialization.* import kotlinx.serialization.internal.ArrayListSerializer private val chatMembersListSerializer = ArrayListSerializer( - ChatMemberSerializerWithoutDeserialization + AdministratorChatMemberSerializerWithoutDeserialization ) @Serializable data class GetChatAdministrators( @SerialName(chatIdField) override val chatId: ChatIdentifier -): ChatRequest, SimpleRequest> { +): ChatRequest, SimpleRequest> { override fun method(): String = "getChatAdministrators" - override val resultDeserializer: DeserializationStrategy> + override val resultDeserializer: DeserializationStrategy> get() = chatMembersListSerializer override val requestSerializer: SerializationStrategy<*> get() = serializer() diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt index 69ae5d756a..d0532f369e 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt @@ -3,10 +3,15 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.LocationContent +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent import kotlinx.serialization.* +private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() + @Serializable data class EditChatMessageLiveLocation( @SerialName(chatIdField) @@ -19,10 +24,10 @@ data class EditChatMessageLiveLocation( override val longitude: Double, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditReplyMessage, EditLocationMessage { +) : EditChatMessage, EditReplyMessage, EditLocationMessage { override fun method(): String = "editMessageLiveLocation" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt index 242606ca5f..46b6ae84e4 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt @@ -4,10 +4,14 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.LocationContent import kotlinx.serialization.* +private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() + @Serializable data class StopChatMessageLiveLocation( @SerialName(chatIdField) @@ -16,10 +20,10 @@ data class StopChatMessageLiveLocation( override val messageId: MessageIdentifier, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditReplyMessage { +) : EditChatMessage, EditReplyMessage { override fun method(): String = "stopMessageLiveLocation" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt index 5518ca379f..d6a83dc7df 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt @@ -4,12 +4,16 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent import kotlinx.serialization.* const val editMessageReplyMarkupMethod = "editMessageReplyMarkup" +private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() + @Serializable data class EditChatMessageReplyMarkup( @SerialName(chatIdField) @@ -18,11 +22,11 @@ data class EditChatMessageReplyMarkup( override val messageId: MessageIdentifier, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditReplyMessage { +) : EditChatMessage, EditReplyMessage { override fun method(): String = editMessageReplyMarkupMethod - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt index 967f228991..8736c10eaa 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt @@ -2,6 +2,7 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent -interface EditChatMessage : SimpleRequest, MessageAction +interface EditChatMessage : SimpleRequest>, MessageAction diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt index 37c7234708..3f87ceb67c 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt @@ -1,12 +1,15 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.caption import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.* +import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.media.MediaContentMessageResultDeserializer 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import kotlinx.serialization.* const val editMessageCaptionMethod = "editMessageCaption" @@ -23,11 +26,11 @@ data class EditChatMessageCaption( override val parseMode: ParseMode? = null, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditTextChatMessage, EditReplyMessage { +) : EditChatMessage, EditTextChatMessage, EditReplyMessage { override fun method(): String = editMessageCaptionMethod - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = MediaContentMessageResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt index f92222f1a7..45f44f26bd 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt @@ -5,12 +5,15 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import kotlinx.serialization.* const val editMessageMediaMethod = "editMessageMedia" +internal val MediaContentMessageResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() + @Serializable data class EditChatMessageMedia( @SerialName(chatIdField) @@ -21,7 +24,7 @@ data class EditChatMessageMedia( override val media: InputMedia, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditReplyMessage, EditMediaMessage { +) : EditChatMessage, EditReplyMessage, EditMediaMessage { init { if (media.file is MultipartFile) { @@ -30,8 +33,8 @@ data class EditChatMessageMedia( } override fun method(): String = editMessageMediaMethod - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = MediaContentMessageResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt index ab44007a91..e410849e10 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt @@ -1,12 +1,14 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.text import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.* +import com.github.insanusmokrassar.TelegramBotAPI.requests.send.TextContentMessageResultDeserializer 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent import kotlinx.serialization.* const val editMessageTextMethod = "editMessageText" @@ -25,11 +27,11 @@ data class EditChatMessageText( override val disableWebPagePreview: Boolean? = null, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditTextChatMessage, EditReplyMessage, EditDisableWebPagePreviewMessage { +) : EditChatMessage, EditTextChatMessage, EditReplyMessage, EditDisableWebPagePreviewMessage { override fun method(): String = editMessageTextMethod - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = TextContentMessageResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt index 62ee0e681c..19a7e4632a 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt @@ -4,10 +4,14 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.ContactContent import kotlinx.serialization.* +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendContact( @SerialName(chatIdField) @@ -24,8 +28,8 @@ data class SendContact( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest +) : SendMessageRequest>, + ReplyingMarkupSendMessageRequest> { constructor( chatId: ChatIdentifier, @@ -44,8 +48,8 @@ data class SendContact( ) override fun method(): String = "sendContact" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt index 156ce59a44..94c581c0c4 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt @@ -3,10 +3,15 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.LocationContent import kotlinx.serialization.* + +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + // TODO:: Add location tracker for tracking location @Serializable data class SendLocation( @@ -24,14 +29,14 @@ 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 val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt index 22e9e330ba..85e268725d 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt @@ -6,12 +6,15 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent import kotlinx.serialization.* +internal val TextContentMessageResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable -data class SendMessage( +data class SendTextMessage( @SerialName(chatIdField) override val chatId: ChatIdentifier, @SerialName(textField) @@ -26,9 +29,9 @@ data class SendMessage( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, +) : SendMessageRequest>, + ReplyingMarkupSendMessageRequest>, + TextableSendMessageRequest>, DisableWebPagePreview { init { @@ -38,8 +41,16 @@ data class SendMessage( } override fun method(): String = "sendMessage" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = TextContentMessageResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } + +@Deprecated( + "This declaration is deprecated due violation of common naming rules", + ReplaceWith( + "SendTextMessage" + ) +) +typealias SendMessage = SendTextMessage diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt index 1ca31873a7..8141bf9197 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt @@ -4,10 +4,14 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.PollContent import kotlinx.serialization.* +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendPoll( @SerialName(chatIdField) @@ -22,8 +26,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) { @@ -40,8 +44,8 @@ data class SendPoll( } override fun method(): String = "sendPoll" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } \ No newline at end of file diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt index 52d95ec5ca..dc15e9f0a8 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt @@ -3,10 +3,13 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.VenueContent import kotlinx.serialization.* +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendVenue( @SerialName(chatIdField) @@ -27,10 +30,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, @@ -51,8 +54,8 @@ data class SendVenue( ) override fun method(): String = "sendVenue" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt index a0cc92bb95..92b73996ed 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt @@ -4,10 +4,14 @@ 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.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.GameContent import kotlinx.serialization.* +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendGame ( @SerialName(chatIdField) @@ -20,11 +24,11 @@ data class SendGame ( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, +) : SendMessageRequest>, ReplyMarkup { override fun method(): String = "sendGame" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } \ No newline at end of file diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt index 37abff9569..0de73f8fdc 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt @@ -7,8 +7,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.AnimationContent import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -24,7 +25,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 @@ -54,6 +55,9 @@ fun SendAnimation( } } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendAnimationData internal constructor( @SerialName(chatIdField) @@ -78,13 +82,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 { @@ -95,8 +99,8 @@ data class SendAnimationData internal constructor( } override fun method(): String = "sendAnimation" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt index 9d4dd65b42..5facb438f5 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt @@ -8,8 +8,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.AudioContent import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -25,7 +26,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 @@ -55,6 +56,9 @@ fun SendAudio( } } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendAudioData internal constructor( @SerialName(chatIdField) @@ -79,13 +83,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 { @@ -97,8 +101,8 @@ data class SendAudioData internal constructor( } override fun method(): String = "sendAudio" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt index 8c64aca7fc..44ff036ec2 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt @@ -7,8 +7,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.DocumentContent import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -21,7 +22,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 @@ -48,6 +49,9 @@ fun SendDocument( } } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendDocumentData internal constructor( @SerialName(chatIdField) @@ -66,11 +70,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 { @@ -81,8 +85,8 @@ data class SendDocumentData internal constructor( } override fun method(): String = "sendDocument" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt index 5aa46e5bf6..a19819805e 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt @@ -6,8 +6,8 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.MediaGroupMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializerClass import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.internal.ArrayListSerializer @@ -20,7 +20,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") } @@ -53,7 +53,8 @@ fun SendMediaGroup( } } -private val messagesListSerializer = ArrayListSerializer(TelegramBotAPIMessageDeserializeOnlySerializer) +private val messagesListSerializer: ArrayListSerializer + = ArrayListSerializer(TelegramBotAPIMessageDeserializeOnlySerializerClass()) @Serializable data class SendMediaGroupData internal constructor( @@ -64,7 +65,7 @@ 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 get() = jsonArray { @@ -77,7 +78,7 @@ data class SendMediaGroupData internal constructor( override fun method(): String = "sendMediaGroup" override val requestSerializer: SerializationStrategy<*> get() = serializer() - override val resultDeserializer: DeserializationStrategy> + override val resultDeserializer: DeserializationStrategy> get() = messagesListSerializer } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt index 4c09829cba..b9b005d8b4 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt @@ -7,8 +7,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.PhotoContent import kotlinx.serialization.* fun SendPhoto( @@ -19,7 +20,7 @@ fun SendPhoto( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request> { val data = SendPhotoData( chatId, (photo as? FileId) ?.fileId, @@ -37,6 +38,9 @@ fun SendPhoto( ) } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendPhotoData internal constructor( @SerialName(chatIdField) @@ -53,10 +57,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 { @@ -67,8 +71,8 @@ data class SendPhotoData internal constructor( } override fun method(): String = "sendPhoto" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt index 64be1d6e0b..574e3a5eac 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt @@ -5,8 +5,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.StickerContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.json.JsonObject @@ -17,7 +18,7 @@ fun SendSticker( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request = SendStickerByFileId( +): Request> = SendStickerByFileId( chatId, sticker as? FileId, disableNotification, @@ -30,6 +31,9 @@ fun SendSticker( } } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendStickerByFileId internal constructor( @SerialName(chatIdField) @@ -42,10 +46,10 @@ 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 val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } @@ -54,7 +58,7 @@ 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/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt index a024f9c990..97781a1f7a 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt @@ -7,8 +7,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.VideoContent import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -25,7 +26,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 @@ -56,6 +57,9 @@ fun SendVideo( } } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendVideoData internal constructor( @SerialName(chatIdField) @@ -82,13 +86,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 { @@ -99,8 +103,8 @@ data class SendVideoData internal constructor( } override fun method(): String = "sendVideo" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt index 827e8b253d..e4e3d11bfd 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt @@ -7,8 +7,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.VideoNoteContent import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -23,7 +24,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 @@ -52,6 +53,9 @@ fun SendVideoNote( } } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendVideoNoteData internal constructor( @SerialName(chatIdField) @@ -74,13 +78,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> { override val height: Int? get() = width @@ -94,8 +98,8 @@ data class SendVideoNoteData internal constructor( } override fun method(): String = "sendVideoNote" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt index c96b84f197..a341372e5c 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt @@ -7,8 +7,9 @@ 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.abstracts.Message -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.VoiceContent import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -22,7 +23,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 @@ -50,6 +51,9 @@ fun SendVoice( } } +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + @Serializable data class SendVoiceData internal constructor( @SerialName(chatIdField) @@ -70,12 +74,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 { @@ -86,8 +90,8 @@ data class SendVoiceData internal constructor( } override fun method(): String = "sendVoice" - override val resultDeserializer: DeserializationStrategy - get() = TelegramBotAPIMessageDeserializationStrategy + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt index aa5e457519..4137309d63 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt @@ -9,11 +9,12 @@ interface ChatMember { val user: User } -internal object ChatMemberSerializerWithoutDeserialization : KSerializer { +internal object AdministratorChatMemberSerializerWithoutDeserialization : KSerializer { override val descriptor: SerialDescriptor = StringDescriptor.withName("ChatMemberSerializerWithoutDeserialization") - override fun deserialize(decoder: Decoder): ChatMember = ChatMemberDeserializationStrategy.deserialize(decoder) - override fun serialize(encoder: Encoder, obj: ChatMember) = throw UnsupportedOperationException() + override fun deserialize(decoder: Decoder): AdministratorChatMember + = ChatMemberDeserializationStrategy.deserialize(decoder) as AdministratorChatMember + override fun serialize(encoder: Encoder, obj: AdministratorChatMember) = throw UnsupportedOperationException() } internal object ChatMemberDeserializationStrategy : DeserializationStrategy { diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt index f001e2d61e..555a34e96b 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt @@ -13,24 +13,29 @@ interface Message { val date: DateTime } -internal object TelegramBotAPIMessageDeserializationStrategy : DeserializationStrategy { +internal class TelegramBotAPIMessageDeserializationStrategyClass : 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 + override fun patch(decoder: Decoder, old: T): T = throw UpdateNotSupportedException(descriptor.name) + override fun deserialize(decoder: Decoder): T { + return RawMessage.serializer().deserialize(decoder).asMessage as T } } +internal object TelegramBotAPIMessageDeserializationStrategy + : DeserializationStrategy by TelegramBotAPIMessageDeserializationStrategyClass() -internal object TelegramBotAPIMessageDeserializeOnlySerializer : KSerializer { +internal class TelegramBotAPIMessageDeserializeOnlySerializerClass : KSerializer { + private val deserializer = TelegramBotAPIMessageDeserializationStrategyClass() override val descriptor: SerialDescriptor - get() = TelegramBotAPIMessageDeserializationStrategy.descriptor + get() = deserializer.descriptor - override fun deserialize(decoder: Decoder): Message { - return TelegramBotAPIMessageDeserializationStrategy.deserialize(decoder) + override fun deserialize(decoder: Decoder): T { + return deserializer.deserialize(decoder) } - override fun serialize(encoder: Encoder, obj: Message) { + override fun serialize(encoder: Encoder, obj: T) { throw UnsupportedOperationException("Currently, Message objects can't be serialized y this serializer") } } +internal object TelegramBotAPIMessageDeserializeOnlySerializer + : KSerializer by TelegramBotAPIMessageDeserializeOnlySerializerClass() diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt index 64cdea6bd0..d76b172cd3 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt @@ -4,6 +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.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent @@ -15,7 +16,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/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt index 257cd648e0..6ab8018f89 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt @@ -6,6 +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.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent @@ -17,7 +18,7 @@ data class GameContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendGame( + ): Request> = SendGame( chatId, game.title, disableNotification, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt index 89ba7c4aab..7e3bbcb9c1 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt @@ -4,6 +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.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent @@ -15,7 +16,7 @@ data class LocationContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendLocation( + ): Request> = SendLocation( chatId, location.latitude, location.longitude, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt index 1b27e1278e..606a3b0837 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt @@ -5,6 +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.abstracts.ContentMessage 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 +18,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/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt index 0fe6e3296c..f292198b81 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt @@ -3,10 +3,12 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.message.content import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendMessage +import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendTextMessage import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier 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.abstracts.ContentMessage 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.* @@ -20,7 +22,7 @@ data class TextContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendMessage( + ): Request> = SendTextMessage( chatId, toHtmlTexts().first(), HTMLParseMode, @@ -35,7 +37,7 @@ data class TextContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): List> = createResends( + ): List>> = createResends( chatId, disableNotification, replyToMessageId, @@ -49,12 +51,12 @@ data class TextContent( replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup?, parseMode: ParseMode = HTMLParseMode - ): List> = when (parseMode) { + ): List>> = when (parseMode) { is MarkdownParseMode -> toMarkdownTexts() is MarkdownV2ParseMode -> toMarkdownV2Texts() is HTMLParseMode -> toHtmlTexts() }.map { - SendMessage( + SendTextMessage( chatId, it, parseMode, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt index 671937ebef..e4d7b2da59 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt @@ -4,6 +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.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent @@ -15,7 +16,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/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt index 69fd38aa35..d2fc35ac98 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt @@ -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/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt index 04227b8c05..007157e500 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt @@ -10,6 +10,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode 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.abstracts.ContentMessage 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 @@ -25,7 +26,7 @@ data class AnimationContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendAnimation( + ): Request> = SendAnimation( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt index ff78e9c9a1..5a7846cfb0 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt @@ -9,6 +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.abstracts.ContentMessage 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 +24,7 @@ data class AudioContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendAudio( + ): Request> = SendAudio( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt index 219859ce03..b1f4ed37ce 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt @@ -9,6 +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.abstracts.ContentMessage 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 +24,7 @@ data class DocumentContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendDocument( + ): Request> = SendDocument( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt index 8a03bd47c0..be200dc210 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt @@ -11,6 +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.abstracts.ContentMessage 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 @@ -28,7 +29,7 @@ data class PhotoContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendPhoto( + ): Request> = SendPhoto( chatId, media.fileId, toHtmlCaptions().firstOrNull(), diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt index 9fccfee65f..5932235d01 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt @@ -6,6 +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.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent @@ -17,7 +18,7 @@ data class StickerContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendSticker( + ): Request> = SendSticker( chatId, media.fileId, disableNotification, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt index ff7210e201..be862e3d80 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt @@ -10,6 +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.abstracts.ContentMessage 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 +25,7 @@ data class VideoContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVideo( + ): Request> = SendVideo( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt index 422b9b0910..6918131b0b 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt @@ -7,6 +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.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent @@ -18,7 +19,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 +28,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/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt index 61ab4290b6..ec78bf3f32 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt @@ -9,6 +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.abstracts.ContentMessage 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 +24,7 @@ data class VoiceContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVoice( + ): Request> = SendVoice( chatId, media.fileId, null,