diff --git a/CHANGELOG.md b/CHANGELOG.md index 91ad059a41..95eb4cbfb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,66 @@ # TelegramBotAPI changelog +## 1.0.0 + +__All the `tgbotapi.extensions.*` packages have been removed__ + +* `Versions`: + * `Kotlin`: `1.6.10` -> `1.6.21` + * `Ktor`: `1.6.8` -> `2.0.1` + * `MicroUtils`: `0.9.24` -> `0.10.2` +* `Core`: + * **`Ktor` package renamed. Migration:** `dev.inmo.tgbotapi.bot.Ktor` -> `dev.inmo.tgbotapi.bot.ktor` + * **`CallbackQuery` package renamed. Migration:** `dev.inmo.tgbotapi.types.CallbackQuery([\s\\.])` -> `dev.inmo.tgbotapi.types.queries.callback$1` + * **`ChatMember` package renamed. Migration:** `dev.inmo.tgbotapi.types.ChatMember([\s\\.])` -> `dev.inmo.tgbotapi.types.chat.member$1` + * **`ChatAdministratorRightsImpl` replaced. Migration:** `dev.inmo.tgbotapi.types.ChatAdministratorRightsImpl` -> `dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl` + * **`chat.abstract.extended` replaced. Migration:** `dev.inmo.tgbotapi.types.chat.abstract.extended` -> `dev.inmo.tgbotapi.types.chat.member.chat` + * **`chat.abstract` replaced. Migration:** `dev.inmo.tgbotapi.types.chat.abstract` -> `dev.inmo.tgbotapi.types.chat.member.chat` + * **`chat.extended` replaced. Migration:** `dev.inmo.tgbotapi.types.chat.extended` -> `dev.inmo.tgbotapi.types.chat.member.chat` + * **User interfaces have been fully replaced**: + * `dev.inmo.tgbotapi.types.User` -> `dev.inmo.tgbotapi.types.chat.User` + * `dev.inmo.tgbotapi.types.CommonUser` -> `dev.inmo.tgbotapi.types.chat.CommonUser` + * `dev.inmo.tgbotapi.types.ExtendedUser` -> `dev.inmo.tgbotapi.types.chat.ExtendedUser` + * `dev.inmo.tgbotapi.types.Bot` -> `dev.inmo.tgbotapi.types.chat.Bot` + * `dev.inmo.tgbotapi.types.CommonBot` -> `dev.inmo.tgbotapi.types.chat.CommonBot` + * `dev.inmo.tgbotapi.types.ExtendedBot` -> `dev.inmo.tgbotapi.types.chat.ExtendedBot` + * `dev.inmo.tgbotapi.types.UserSerializer` -> `dev.inmo.tgbotapi.types.chat.UserSerializer` + * **All `InputMedia` has been renamed as `TelegramMedia`. Migration:** `InputMedia` -> `TelegramMedia` + * `dev.inmo.tgbotapi.types.InputMedia` -> `dev.inmo.tgbotapi.types.media` + * **Replaces of `MessageContent`. Migrations:** + * `dev.inmo.tgbotapi.types.message.content.abstracts` -> `dev.inmo.tgbotapi.types.message.content` + * `dev.inmo.tgbotapi.types.message.content.media` -> `dev.inmo.tgbotapi.types.message.content` + * **Replaces of `TextSource`s. Migrations:** `dev.inmo.tgbotapi.types.MessageEntity.textsources` -> `dev.inmo.tgbotapi.types.message.textsources` + * **Replaces of `ParseMode`s. Migrations:** `dev.inmo.tgbotapi.types.ParseMode` -> `dev.inmo.tgbotapi.types.message` + * **Replaces of `MediaGroupUpdate`s. Migrations:** `dev.inmo.tgbotapi.types.update.MediaGroupUpdates` -> `dev.inmo.tgbotapi.types.update.media_group` + * **`InvoiceContent` has been replaced: `dev.inmo.tgbotapi.types.message.payments.InvoiceContent` -> `dev.inmo.tgbotapi.types.message.content.InvoiceContent`** + * **`PossiblySentViaBotCommonMessage` has been replaced: `dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommonMessage` -> `dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage`** + * **Edit live location requests have been replaced:** + * `dev.inmo.tgbotapi.requests.edit.LiveLocation` -> `dev.inmo.tgbotapi.requests.edit.location.live` + * `dev.inmo.tgbotapi.extensions.api.edit.LiveLocation` -> `dev.inmo.tgbotapi.extensions.api.edit.location.live` + * **Edit reply markup requests have been replaced:** + * `dev.inmo.tgbotapi.requests.edit.ReplyMarkup` -> `dev.inmo.tgbotapi.requests.edit.reply_markup` + * `dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup` -> `dev.inmo.tgbotapi.extensions.api.edit.reply_markup` + * **Common abstracts have been replaced: `dev.inmo.tgbotapi.CommonAbstracts` -> `dev.inmo.tgbotapi.abstracts`** + * Constructor of `UnknownInlineKeyboardButton` is not internal and can be created with any `json` ([#563](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/563)) + * All the interfaces from `dev.inmo.tgbotapi.types.files.abstracts` have been replaced to `dev.inmo.tgbotapi.types.files` and converted to sealed ([#550](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/550)) + * `PassportFile` has been replaced to `dev.inmo.tgbotapi.types.files` + * `StorageFile` has been deprecated (fix of [#556](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/556)) + * `MultipartFile` do not require `StorageFile` anymore + * `InputFile` companion got functions to simplify creation of `InputFile`s + * New typealias `FileUrl` (represents `FileId` but declare that they are the same) +* `BehaviourBuilder`: + * `SimpleFilter` now is a `fun interface` instead of just callback (fix of [#546](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/546)) + * New extension `BehaviourContext#createSubContext`. It uses separated `AccumulatorFlow` and will retrieve updates by itself + * New extension `BehaviourContext#doInContext` + * Extension `BehaviourContext#doInSubContextWithUpdatesFilter` has been renamed to `BehaviourContext#createSubContextAndDoWithUpdatesFilter` + * Extension `BehaviourContext#doInSubContext` has been deprecated +* `BehaviourContextWithFSM`: + * `launchStateHandling` lost its parameter `contextUpdatesFlow: Flow` + * `handleState` of `BehaviourContextWithFSM` now will get/create sub context for the state and launch handling in it + * `BehaviourWithFSMStateHandler` now extends `StatesHandler` + * `BehaviourWithFSMStateHandlerHolder` now extends `CheckableHandlerHolder` and `BehaviourWithFSMStateHandler` + * Function `checkHandleable` of `BehaviourWithFSMStateHandlerHolder` now is `suspend` + ## 0.38.23 * `BehaviourHandler`: diff --git a/gradle.properties b/gradle.properties index ca7b035456..577de7264b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,21 +5,21 @@ kotlin.js.generate.externals=true kotlin.incremental=true kotlin.incremental.js=true -kotlin_version=1.6.10 +kotlin_version=1.6.21 kotlin_coroutines_version=1.6.1 kotlin_serialisation_runtime_version=1.3.2 klock_version=2.7.0 uuid_version=0.4.0 -ktor_version=1.6.8 +ktor_version=2.0.1 -micro_utils_version=0.9.24 +micro_utils_version=0.10.3 javax_activation_version=1.1.1 -dokka_version=1.6.10 +dokka_version=1.6.21 library_group=dev.inmo -library_version=0.38.23 +library_version=1.0.0 github_release_plugin_version=2.3.7 diff --git a/settings.gradle b/settings.gradle index 0e5ecc4426..6cf2139f0b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -16,10 +16,6 @@ include ":tgbotapi.api" include ":tgbotapi.utils" include ":tgbotapi.behaviour_builder" include ":tgbotapi.behaviour_builder.fsm" -include ":tgbotapi.extensions.api" -include ":tgbotapi.extensions.utils" -include ":tgbotapi.extensions.behaviour_builder" -include ":tgbotapi.extensions.behaviour_builder.fsm" include ":tgbotapi" include ":tgbotapi.webapps" include ":docs" diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/BotExtensions.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/BotExtensions.kt index d47d8d85af..afb5ac8a2a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/BotExtensions.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/BotExtensions.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.extensions.api -import dev.inmo.tgbotapi.bot.Ktor.telegramBot +import dev.inmo.tgbotapi.bot.ktor.telegramBot import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/DeleteMessage.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/DeleteMessage.kt index 98057cb8d2..981fa91247 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/DeleteMessage.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/DeleteMessage.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.DeleteMessage import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message suspend fun TelegramBot.deleteMessage( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/ForwardMessage.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/ForwardMessage.kt index ee30e92cd5..ddec55cfb2 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/ForwardMessage.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/ForwardMessage.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.ForwardMessage import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message suspend fun TelegramBot.forwardMessage( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/InternalUtils/UpdatesUtils.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/InternalUtils/UpdatesUtils.kt index 8a35681bd7..3bc9a03bfa 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/InternalUtils/UpdatesUtils.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/InternalUtils/UpdatesUtils.kt @@ -4,8 +4,8 @@ import dev.inmo.tgbotapi.types.MediaGroupIdentifier import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage import dev.inmo.tgbotapi.types.update.* -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.* +import dev.inmo.tgbotapi.types.update.media_group.* internal fun Update.lastUpdateIdentifier(): UpdateIdentifier { return if (this is SentMediaGroupUpdate) { diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt index 1b98faa4be..6615fa14e9 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt @@ -3,13 +3,13 @@ package dev.inmo.tgbotapi.extensions.api import com.soywiz.klock.DateTime import com.soywiz.klock.TimeSpan import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.extensions.api.edit.LiveLocation.editLiveLocation -import dev.inmo.tgbotapi.extensions.api.edit.LiveLocation.stopLiveLocation +import dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation +import dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation import dev.inmo.tgbotapi.requests.send.SendLiveLocation import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.location.LiveLocation import dev.inmo.tgbotapi.types.location.StaticLocation import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt index c7e2106767..c1ae1d5d31 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.StopPoll import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/answers/AnswerCallbackQuery.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/answers/AnswerCallbackQuery.kt index ac14d1dff6..7de2ae0b62 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/answers/AnswerCallbackQuery.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/answers/AnswerCallbackQuery.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.answers import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.answers.AnswerCallbackQuery -import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery import dev.inmo.tgbotapi.types.CallbackQueryIdentifier suspend fun TelegramBot.answerCallbackQuery( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt index 098d576213..f07fad22c1 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt @@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.api.bot import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.bot.ClearMyDefaultAdministratorRights -import dev.inmo.tgbotapi.types.ChatAdministratorRightsImpl suspend fun TelegramBot.clearMyDefaultAdministratorRights( forChannels: Boolean? = null diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt index 6f14be2a1e..dcebf5b22a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.bot import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.bot.SetMyDefaultAdministratorRights -import dev.inmo.tgbotapi.types.ChatAdministratorRightsImpl +import dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl suspend fun TelegramBot.setMyDefaultAdministratorRights( rights: ChatAdministratorRightsImpl, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/ExportChatInviteLink.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/ExportChatInviteLink.kt index 48cc86e657..0db9f42685 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/ExportChatInviteLink.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/ExportChatInviteLink.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.ExportChatInviteLink import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.exportChatInviteLink( chatId: ChatIdentifier diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/LeaveChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/LeaveChat.kt index c7c0675f88..607cd27c90 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/LeaveChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/LeaveChat.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.LeaveChat import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.leaveChat( chatId: ChatIdentifier diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChat.kt index 467aca360d..3bbf6f2d9a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChat.kt @@ -2,11 +2,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.get.GetChat -import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chat.* -import dev.inmo.tgbotapi.types.chat.abstracts.* -import dev.inmo.tgbotapi.types.chat.abstracts.extended.* -import dev.inmo.tgbotapi.types.chat.extended.* import dev.inmo.tgbotapi.utils.PreviewFeature suspend fun TelegramBot.getChat( @@ -18,7 +15,7 @@ suspend fun TelegramBot.getChat( ) = getChat(chat.id) /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedPublicChat] with unsafe operator "as" * * @throws ClassCastException @@ -30,7 +27,7 @@ suspend fun TelegramBot.getChat( /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedChannelChat] with unsafe operator "as" * * @throws ClassCastException @@ -41,7 +38,7 @@ suspend fun TelegramBot.getChat( ) = getChat(chat.id) as ExtendedChannelChat /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedChannelChatImpl] with unsafe operator "as" * * @throws ClassCastException @@ -53,7 +50,7 @@ suspend fun TelegramBot.getChat( /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedGroupChat] with unsafe operator "as" * * @throws ClassCastException @@ -64,7 +61,7 @@ suspend fun TelegramBot.getChat( ) = getChat(chat.id) as ExtendedGroupChat /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedGroupChatImpl] with unsafe operator "as" * * @throws ClassCastException @@ -76,7 +73,7 @@ suspend fun TelegramBot.getChat( /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedSupergroupChat] with unsafe operator "as" * * @throws ClassCastException @@ -87,7 +84,7 @@ suspend fun TelegramBot.getChat( ) = getChat(chat.id) as ExtendedSupergroupChat /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedSupergroupChatImpl] with unsafe operator "as" * * @throws ClassCastException @@ -99,7 +96,7 @@ suspend fun TelegramBot.getChat( /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedPrivateChat] with unsafe operator "as" * * @throws ClassCastException @@ -110,7 +107,7 @@ suspend fun TelegramBot.getChat( ) = getChat(chat.id) as ExtendedPrivateChat /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedPrivateChatImpl] with unsafe operator "as" * * @throws ClassCastException @@ -121,7 +118,7 @@ suspend fun TelegramBot.getChat( ) = getChat(chat.id) as ExtendedPrivateChatImpl /** - * Will cast incoming [dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat] to a + * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * [ExtendedUser] with unsafe operator "as" * * @throws ClassCastException diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatAdministrators.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatAdministrators.kt index c971379fca..ff272ecbd7 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatAdministrators.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatAdministrators.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.get.GetChatAdministrators import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.getChatAdministrators( chatId: ChatIdentifier diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMemberCount.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMemberCount.kt index b53fe39ac6..0caa2258db 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMemberCount.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMemberCount.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.get.GetChatMemberCount import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.getChatMemberCount( chatId: ChatIdentifier diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt index ef8404b98f..a4c1c1c0e1 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt @@ -2,9 +2,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.get.GetChatMenuButton -import dev.inmo.tgbotapi.requests.chat.modify.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat +import dev.inmo.tgbotapi.types.chat.PrivateChat suspend fun TelegramBot.getChatMenuButton( chatId: ChatId diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/ApproveChatJoinRequest.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/ApproveChatJoinRequest.kt index e42e84509c..640711873b 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/ApproveChatJoinRequest.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/ApproveChatJoinRequest.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.invite_links import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.invite_links.ApproveChatJoinRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate suspend fun TelegramBot.approveChatJoinRequest( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt index 709405fc71..711c751920 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt @@ -4,7 +4,7 @@ import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.invite_links.CreateChatInviteLink import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.createChatInviteLinkUnlimited( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/DeclineChatJoinRequest.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/DeclineChatJoinRequest.kt index b6ca8a888b..fbd14302df 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/DeclineChatJoinRequest.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/DeclineChatJoinRequest.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.extensions.api.chat.invite_links import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.chat.invite_links.ApproveChatJoinRequest import dev.inmo.tgbotapi.requests.chat.invite_links.DeclineChatJoinRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate suspend fun TelegramBot.declineChatJoinRequest( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt index 26a22a08ef..60c1dda0a0 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt @@ -4,7 +4,7 @@ import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.invite_links.EditChatInviteLink import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.editChatInviteLinkUnlimited( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt index 320e29fa08..145d4a2d81 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.invite_links.RevokeChatInviteLink import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatInviteLink -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.revokeChatInviteLink( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt index dc8a069e78..431d4fe4a0 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.BanChatMember import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat +import dev.inmo.tgbotapi.types.chat.User suspend fun TelegramBot.banChatMember( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt index c8300aba8e..3996021949 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt @@ -1,10 +1,9 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.chat.members.BanChatMember import dev.inmo.tgbotapi.requests.chat.members.BanChatSenderChat import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.banChatSenderChat( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt index 4ec899c904..f348b9cb4a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.GetChatMember import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat +import dev.inmo.tgbotapi.types.chat.User suspend fun TelegramBot.getChatMember( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt index cae8d96c1a..d3900bd0d3 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.PromoteChatMember import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat +import dev.inmo.tgbotapi.types.chat.User suspend fun TelegramBot.promoteChatMember( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt index b918b2d2a6..b2e2f2f52b 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.RestrictChatMember import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.ChatPermissions -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.User suspend fun TelegramBot.restrictChatMember( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt index 2b690f2788..6e91da2baa 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.SetChatAdministratorCustomTitle import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat +import dev.inmo.tgbotapi.types.chat.User suspend fun TelegramBot.setChatAdministratorCustomTitle( chatId: ChatId, @@ -27,4 +28,4 @@ suspend fun TelegramBot.setChatAdministratorCustomTitle( chat: PublicChat, user: User, customTitle: String -) = setChatAdministratorCustomTitle(chat.id, user.id, customTitle) \ No newline at end of file +) = setChatAdministratorCustomTitle(chat.id, user.id, customTitle) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt index 5b98415738..8600df5529 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.UnbanChatMember import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat +import dev.inmo.tgbotapi.types.chat.User suspend fun TelegramBot.unbanChatMember( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt index 683e4f37c7..1199133111 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.unbanChatSenderChat( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/DeleteChatPhoto.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/DeleteChatPhoto.kt index 74b222fe38..1bc6112d98 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/DeleteChatPhoto.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/DeleteChatPhoto.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.modify import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.DeleteChatPhoto import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.deleteChatPhoto( chatId: ChatIdentifier diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/PinChatMessage.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/PinChatMessage.kt index 9a1977cc07..e7c39b0503 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/PinChatMessage.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/PinChatMessage.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.PinChatMessage import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message suspend fun TelegramBot.pinChatMessage( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatDescription.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatDescription.kt index 2d17250e82..caf744254b 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatDescription.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatDescription.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.modify import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.SetChatDescription import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.setChatDescription( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt index ed06222c50..f4823e01ac 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.modify import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat +import dev.inmo.tgbotapi.types.chat.PrivateChat suspend fun TelegramBot.setChatMenuButton( chatId: ChatId, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPermissions.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPermissions.kt index e40507ab3a..1c6e3cb7db 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPermissions.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPermissions.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.SetChatPermissions import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chat.ChatPermissions -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.setDefaultChatMembersPermissions( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPhoto.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPhoto.kt index ad232f7da5..89c332f571 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPhoto.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatPhoto.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.chat.modify.SetChatPhoto import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.setChatPhoto( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatTitle.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatTitle.kt index 8f8ecc6495..0866f7f7b8 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatTitle.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatTitle.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.modify import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.SetChatTitle import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.setChatTitle( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinAllChatMessages.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinAllChatMessages.kt index 3faa707bf9..98e2b963cc 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinAllChatMessages.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinAllChatMessages.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.modify import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.UnpinAllChatMessages import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat suspend fun TelegramBot.unpinAllChatMessages( chatId: ChatIdentifier diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinChatMessage.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinChatMessage.kt index 41b26fafa9..5b6c582490 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinChatMessage.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/UnpinChatMessage.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.UnpinChatMessage import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message suspend fun TelegramBot.unpinChatMessage( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/DeleteChatStickerSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/DeleteChatStickerSet.kt index aaf0261169..966d283629 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/DeleteChatStickerSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/DeleteChatStickerSet.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.stickers import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.stickers.DeleteChatStickerSet import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.SupergroupChat +import dev.inmo.tgbotapi.types.chat.SupergroupChat suspend fun TelegramBot.deleteChatStickerSet( chatId: ChatIdentifier diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/SetChatStickerSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/SetChatStickerSet.kt index a45a3637e0..6ce570f010 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/SetChatStickerSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/stickers/SetChatStickerSet.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.stickers.SetChatStickerSet import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.StickerSetName -import dev.inmo.tgbotapi.types.chat.abstracts.SupergroupChat +import dev.inmo.tgbotapi.types.chat.SupergroupChat suspend fun TelegramBot.setChatStickerSet( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditChatMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditChatMessageLiveLocation.kt index e1fd361138..c0a4cbc475 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditChatMessageLiveLocation.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditChatMessageLiveLocation.kt @@ -1,18 +1,19 @@ package dev.inmo.tgbotapi.extensions.api.edit.LiveLocation import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.edit.LiveLocation.EditChatMessageLiveLocation import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.location.LiveLocation import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.LocationContent +import dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( chatId: ChatIdentifier, messageId: MessageIdentifier, @@ -22,16 +23,13 @@ suspend fun TelegramBot.editLiveLocation( heading: Degrees? = null, proximityAlertRadius: Meters? = null, replyMarkup: InlineKeyboardMarkup? = null -) = execute( - EditChatMessageLiveLocation( - chatId, messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup - ) -) +) = editLiveLocation(chatId, messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( chat: Chat, messageId: MessageIdentifier, @@ -41,12 +39,13 @@ suspend fun TelegramBot.editLiveLocation( heading: Degrees? = null, proximityAlertRadius: Meters? = null, replyMarkup: InlineKeyboardMarkup? = null -) = editLiveLocation(chat.id, messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) +) = editLiveLocation(chat, messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( message: ContentMessage, latitude: Double, @@ -55,40 +54,39 @@ suspend fun TelegramBot.editLiveLocation( heading: Degrees? = null, proximityAlertRadius: Meters? = null, replyMarkup: InlineKeyboardMarkup? = null -) = editLiveLocation(message.chat, message.messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) +) = editLiveLocation(message, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( chatId: ChatIdentifier, messageId: MessageIdentifier, location: LiveLocation, replyMarkup: InlineKeyboardMarkup? = null -) = execute( - EditChatMessageLiveLocation( - chatId, messageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup - ) -) +) = editLiveLocation(chatId, messageId, location, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( chat: Chat, messageId: MessageIdentifier, location: LiveLocation, replyMarkup: InlineKeyboardMarkup? = null -) = editLiveLocation(chat.id, messageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup) +) = editLiveLocation(chat, messageId, location, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( message: ContentMessage, location: LiveLocation, replyMarkup: InlineKeyboardMarkup? = null -) = editLiveLocation(message.chat, message.messageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup) +) = editLiveLocation(message, location, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditInlineMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditInlineMessageLiveLocation.kt index 9540b6a658..56b2a842aa 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditInlineMessageLiveLocation.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/EditInlineMessageLiveLocation.kt @@ -1,11 +1,13 @@ package dev.inmo.tgbotapi.extensions.api.edit.LiveLocation import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.edit.LiveLocation.EditInlineMessageLiveLocation +import dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation +import dev.inmo.tgbotapi.requests.edit.location.live.EditInlineMessageLiveLocation import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.location.LiveLocation +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( inlineMessageId: InlineMessageIdentifier, latitude: Double, @@ -14,13 +16,10 @@ suspend fun TelegramBot.editLiveLocation( heading: Degrees? = null, proximityAlertRadius: Meters? = null, replyMarkup: InlineKeyboardMarkup? = null -) = execute( - EditInlineMessageLiveLocation( - inlineMessageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup - ) -) +) = editLiveLocation(inlineMessageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) +@Deprecated("Replaced", ReplaceWith("editLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation")) suspend fun TelegramBot.editLiveLocation( inlineMessageId: InlineMessageIdentifier, location: LiveLocation, replyMarkup: InlineKeyboardMarkup? = null -) = editLiveLocation(inlineMessageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup) +) = editLiveLocation(inlineMessageId, location, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopChatMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopChatMessageLiveLocation.kt index 14865a4a4e..7b4c8c1138 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopChatMessageLiveLocation.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopChatMessageLiveLocation.kt @@ -1,11 +1,12 @@ package dev.inmo.tgbotapi.extensions.api.edit.LiveLocation import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.edit.LiveLocation.StopChatMessageLiveLocation +import dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation +import dev.inmo.tgbotapi.requests.edit.location.live.StopChatMessageLiveLocation import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.LocationContent @@ -13,31 +14,30 @@ import dev.inmo.tgbotapi.types.message.content.LocationContent * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("stopLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation")) suspend fun TelegramBot.stopLiveLocation( chatId: ChatIdentifier, messageId: MessageIdentifier, replyMarkup: InlineKeyboardMarkup? = null -) = execute( - StopChatMessageLiveLocation( - chatId, messageId, replyMarkup - ) -) +) = stopLiveLocation(chatId, messageId, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("stopLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation")) suspend fun TelegramBot.stopLiveLocation( chat: Chat, messageId: MessageIdentifier, replyMarkup: InlineKeyboardMarkup? = null -) = stopLiveLocation(chat.id, messageId, replyMarkup) +) = stopLiveLocation(chat, messageId, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("stopLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation")) suspend fun TelegramBot.stopLiveLocation( message: ContentMessage, replyMarkup: InlineKeyboardMarkup? = null -) = stopLiveLocation(message.chat, message.messageId, replyMarkup) +) = stopLiveLocation(message, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopInlineMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopInlineMessageLiveLocation.kt index 14aa6c3934..12162cdee7 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopInlineMessageLiveLocation.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/LiveLocation/StopInlineMessageLiveLocation.kt @@ -1,7 +1,8 @@ package dev.inmo.tgbotapi.extensions.api.edit.LiveLocation import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.edit.LiveLocation.StopInlineMessageLiveLocation +import dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation +import dev.inmo.tgbotapi.requests.edit.location.live.StopInlineMessageLiveLocation import dev.inmo.tgbotapi.types.InlineMessageIdentifier import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup @@ -9,11 +10,8 @@ import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("stopLiveLocation", "dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation")) suspend fun TelegramBot.stopLiveLocation( inlineMessageId: InlineMessageIdentifier, replyMarkup: InlineKeyboardMarkup? = null -) = execute( - StopInlineMessageLiveLocation( - inlineMessageId, replyMarkup - ) -) +) = stopLiveLocation(inlineMessageId, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt index b65d15f8c1..e404c43612 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt @@ -1,41 +1,42 @@ package dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.edit.ReplyMarkup.EditChatMessageReplyMarkup +import dev.inmo.tgbotapi.extensions.api.edit.reply_markup.editMessageReplyMarkup import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editMessageReplyMarkup", "dev.inmo.tgbotapi.extensions.api.edit.reply_markup.editMessageReplyMarkup")) suspend fun TelegramBot.editMessageReplyMarkup( chatId: ChatIdentifier, messageId: MessageIdentifier, replyMarkup: InlineKeyboardMarkup? = null -) = execute( - EditChatMessageReplyMarkup(chatId, messageId, replyMarkup) -) +) = editMessageReplyMarkup(chatId, messageId, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editMessageReplyMarkup", "dev.inmo.tgbotapi.extensions.api.edit.reply_markup.editMessageReplyMarkup")) suspend fun TelegramBot.editMessageReplyMarkup( chat: Chat, messageId: MessageIdentifier, replyMarkup: InlineKeyboardMarkup? = null -) = editMessageReplyMarkup(chat.id, messageId, replyMarkup) +) = editMessageReplyMarkup(chat, messageId, replyMarkup) /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editMessageReplyMarkup", "dev.inmo.tgbotapi.extensions.api.edit.reply_markup.editMessageReplyMarkup")) suspend fun TelegramBot.editMessageReplyMarkup( message: Message, replyMarkup: InlineKeyboardMarkup? = null -) = editMessageReplyMarkup(message.chat.id, message.messageId, replyMarkup) +) = editMessageReplyMarkup(message, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt index f00c1133e3..6b4e77a06c 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt @@ -1,7 +1,8 @@ package dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.edit.ReplyMarkup.EditInlineMessageReplyMarkup +import dev.inmo.tgbotapi.extensions.api.edit.reply_markup.editMessageReplyMarkup +import dev.inmo.tgbotapi.requests.edit.reply_markup.EditInlineMessageReplyMarkup import dev.inmo.tgbotapi.types.InlineMessageIdentifier import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup @@ -9,7 +10,8 @@ import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * as a builder for that */ +@Deprecated("Replaced", ReplaceWith("editMessageReplyMarkup", "dev.inmo.tgbotapi.extensions.api.edit.reply_markup.editMessageReplyMarkup")) suspend fun TelegramBot.editMessageReplyMarkup( inlineMessageId: InlineMessageIdentifier, replyMarkup: InlineKeyboardMarkup? = null -) = execute(EditInlineMessageReplyMarkup(inlineMessageId, replyMarkup)) +) = editMessageReplyMarkup(inlineMessageId, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditChatMessageCaption.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditChatMessageCaption.kt index 09cf7b3839..fbff84edfe 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditChatMessageCaption.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditChatMessageCaption.kt @@ -1,17 +1,17 @@ package dev.inmo.tgbotapi.extensions.api.edit.caption -import dev.inmo.tgbotapi.CommonAbstracts.TextedWithTextSources +import dev.inmo.tgbotapi.abstracts.TextedWithTextSources import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.edit.caption.EditChatMessageCaption import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.message.content.MediaContent /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditInlineMessageCaption.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditInlineMessageCaption.kt index 8f0f89b2a6..b64e94cb21 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditInlineMessageCaption.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/caption/EditInlineMessageCaption.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.edit.caption import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.edit.caption.EditInlineMessageCaption import dev.inmo.tgbotapi.types.InlineMessageIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/EditChatMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/EditChatMessageLiveLocation.kt new file mode 100644 index 0000000000..597339cff8 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/EditChatMessageLiveLocation.kt @@ -0,0 +1,94 @@ +package dev.inmo.tgbotapi.extensions.api.edit.location.live + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.edit.location.live.EditChatMessageLiveLocation +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.location.LiveLocation +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.LocationContent + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editLiveLocation( + chatId: ChatIdentifier, + messageId: MessageIdentifier, + latitude: Double, + longitude: Double, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + replyMarkup: InlineKeyboardMarkup? = null +) = execute( + EditChatMessageLiveLocation( + chatId, messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup + ) +) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editLiveLocation( + chat: Chat, + messageId: MessageIdentifier, + latitude: Double, + longitude: Double, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + replyMarkup: InlineKeyboardMarkup? = null +) = editLiveLocation(chat.id, messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editLiveLocation( + message: ContentMessage, + latitude: Double, + longitude: Double, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + replyMarkup: InlineKeyboardMarkup? = null +) = editLiveLocation(message.chat, message.messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editLiveLocation( + chatId: ChatIdentifier, + messageId: MessageIdentifier, + location: LiveLocation, + replyMarkup: InlineKeyboardMarkup? = null +) = execute( + EditChatMessageLiveLocation( + chatId, messageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup + ) +) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editLiveLocation( + chat: Chat, + messageId: MessageIdentifier, + location: LiveLocation, + replyMarkup: InlineKeyboardMarkup? = null +) = editLiveLocation(chat.id, messageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editLiveLocation( + message: ContentMessage, + location: LiveLocation, + replyMarkup: InlineKeyboardMarkup? = null +) = editLiveLocation(message.chat, message.messageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/EditInlineMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/EditInlineMessageLiveLocation.kt new file mode 100644 index 0000000000..c1d1be1b97 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/EditInlineMessageLiveLocation.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.extensions.api.edit.location.live + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.edit.location.live.EditInlineMessageLiveLocation +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.location.LiveLocation + +suspend fun TelegramBot.editLiveLocation( + inlineMessageId: InlineMessageIdentifier, + latitude: Double, + longitude: Double, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + replyMarkup: InlineKeyboardMarkup? = null +) = execute( + EditInlineMessageLiveLocation( + inlineMessageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup + ) +) +suspend fun TelegramBot.editLiveLocation( + inlineMessageId: InlineMessageIdentifier, + location: LiveLocation, + replyMarkup: InlineKeyboardMarkup? = null +) = editLiveLocation(inlineMessageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/StopChatMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/StopChatMessageLiveLocation.kt new file mode 100644 index 0000000000..da68e5aa3b --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/StopChatMessageLiveLocation.kt @@ -0,0 +1,43 @@ +package dev.inmo.tgbotapi.extensions.api.edit.location.live + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.edit.location.live.StopChatMessageLiveLocation +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.MessageIdentifier +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.LocationContent + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.stopLiveLocation( + chatId: ChatIdentifier, + messageId: MessageIdentifier, + replyMarkup: InlineKeyboardMarkup? = null +) = execute( + StopChatMessageLiveLocation( + chatId, messageId, replyMarkup + ) +) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.stopLiveLocation( + chat: Chat, + messageId: MessageIdentifier, + replyMarkup: InlineKeyboardMarkup? = null +) = stopLiveLocation(chat.id, messageId, replyMarkup) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.stopLiveLocation( + message: ContentMessage, + replyMarkup: InlineKeyboardMarkup? = null +) = stopLiveLocation(message.chat, message.messageId, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/StopInlineMessageLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/StopInlineMessageLiveLocation.kt new file mode 100644 index 0000000000..bc189b44f9 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/location/live/StopInlineMessageLiveLocation.kt @@ -0,0 +1,19 @@ +package dev.inmo.tgbotapi.extensions.api.edit.location.live + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.edit.location.live.StopInlineMessageLiveLocation +import dev.inmo.tgbotapi.types.InlineMessageIdentifier +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.stopLiveLocation( + inlineMessageId: InlineMessageIdentifier, + replyMarkup: InlineKeyboardMarkup? = null +) = execute( + StopInlineMessageLiveLocation( + inlineMessageId, replyMarkup + ) +) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditChatMessageMedia.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditChatMessageMedia.kt index b927dc0ef9..9620dee3b4 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditChatMessageMedia.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditChatMessageMedia.kt @@ -3,12 +3,12 @@ package dev.inmo.tgbotapi.extensions.api.edit.media import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.edit.media.EditChatMessageMedia import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMedia +import dev.inmo.tgbotapi.types.media.TelegramMedia import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.message.content.MediaContent /** * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] @@ -17,7 +17,7 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent suspend fun TelegramBot.editMessageMedia( chatId: ChatIdentifier, messageId: MessageIdentifier, - media: InputMedia, + media: TelegramMedia, replyMarkup: InlineKeyboardMarkup? = null ) = execute( EditChatMessageMedia(chatId, messageId, media, replyMarkup) @@ -30,7 +30,7 @@ suspend fun TelegramBot.editMessageMedia( suspend fun TelegramBot.editMessageMedia( chat: Chat, messageId: MessageIdentifier, - media: InputMedia, + media: TelegramMedia, replyMarkup: InlineKeyboardMarkup? = null ) = editMessageMedia(chat.id, messageId, media, replyMarkup) @@ -40,6 +40,6 @@ suspend fun TelegramBot.editMessageMedia( */ suspend fun TelegramBot.editMessageMedia( message: ContentMessage, - media: InputMedia, + media: TelegramMedia, replyMarkup: InlineKeyboardMarkup? = null ) = editMessageMedia(message.chat.id, message.messageId, media, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditInlineMessageMedia.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditInlineMessageMedia.kt index dec47763cc..660e62bfcc 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditInlineMessageMedia.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/media/EditInlineMessageMedia.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.edit.media import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.edit.media.EditInlineMessageMedia import dev.inmo.tgbotapi.types.InlineMessageIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMedia +import dev.inmo.tgbotapi.types.media.TelegramMedia import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup /** @@ -12,6 +12,6 @@ import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup */ suspend fun TelegramBot.editMessageCaption( inlineMessageId: InlineMessageIdentifier, - media: InputMedia, + media: TelegramMedia, replyMarkup: InlineKeyboardMarkup? = null ) = execute(EditInlineMessageMedia(inlineMessageId, media, replyMarkup)) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/reply_markup/EditChatMessageReplyMarkup.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/reply_markup/EditChatMessageReplyMarkup.kt new file mode 100644 index 0000000000..79f576fe18 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/reply_markup/EditChatMessageReplyMarkup.kt @@ -0,0 +1,41 @@ +package dev.inmo.tgbotapi.extensions.api.edit.reply_markup + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.edit.reply_markup.EditChatMessageReplyMarkup +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.MessageIdentifier +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.message.abstracts.Message + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editMessageReplyMarkup( + chatId: ChatIdentifier, + messageId: MessageIdentifier, + replyMarkup: InlineKeyboardMarkup? = null +) = execute( + EditChatMessageReplyMarkup(chatId, messageId, replyMarkup) +) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editMessageReplyMarkup( + chat: Chat, + messageId: MessageIdentifier, + replyMarkup: InlineKeyboardMarkup? = null +) = editMessageReplyMarkup(chat.id, messageId, replyMarkup) + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editMessageReplyMarkup( + message: Message, + replyMarkup: InlineKeyboardMarkup? = null +) = editMessageReplyMarkup(message.chat.id, message.messageId, replyMarkup) + diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/reply_markup/EditInlineMessageReplyMarkup.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/reply_markup/EditInlineMessageReplyMarkup.kt new file mode 100644 index 0000000000..1707485fc2 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/reply_markup/EditInlineMessageReplyMarkup.kt @@ -0,0 +1,15 @@ +package dev.inmo.tgbotapi.extensions.api.edit.reply_markup + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.edit.reply_markup.EditInlineMessageReplyMarkup +import dev.inmo.tgbotapi.types.InlineMessageIdentifier +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup + +/** + * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] + * as a builder for that + */ +suspend fun TelegramBot.editMessageReplyMarkup( + inlineMessageId: InlineMessageIdentifier, + replyMarkup: InlineKeyboardMarkup? = null +) = execute(EditInlineMessageReplyMarkup(inlineMessageId, replyMarkup)) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditChatMessageText.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditChatMessageText.kt index 8ca8ef5c06..0a911e30f3 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditChatMessageText.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditChatMessageText.kt @@ -3,11 +3,11 @@ package dev.inmo.tgbotapi.extensions.api.edit.text import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.edit.text.EditChatMessageText import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.TextContent diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditInlineMessageText.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditInlineMessageText.kt index 1411e2cf87..8b38b3168f 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditInlineMessageText.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/text/EditInlineMessageText.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.edit.text import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.edit.text.EditInlineMessageText import dev.inmo.tgbotapi.types.InlineMessageIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFile.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFile.kt index 6a69e6b15b..305abd5f38 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFile.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFile.kt @@ -5,8 +5,8 @@ import dev.inmo.tgbotapi.extensions.api.get.getFileAdditionalInfo import dev.inmo.tgbotapi.requests.DownloadFile import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.files.PathedFile -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent suspend fun TelegramBot.downloadFile( filePath: String diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStream.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStream.kt index f2c35a6d95..02abcc05fe 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStream.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStream.kt @@ -4,8 +4,8 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.extensions.api.get.getFileAdditionalInfo import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.files.PathedFile -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent suspend fun TelegramBot.downloadFileStream( filePath: String diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStreamAllocator.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStreamAllocator.kt index 8261d4c275..187caba19d 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStreamAllocator.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileStreamAllocator.kt @@ -5,8 +5,8 @@ import dev.inmo.tgbotapi.extensions.api.get.getFileAdditionalInfo import dev.inmo.tgbotapi.requests.DownloadFileStream import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.files.PathedFile -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent suspend fun TelegramBot.downloadFileStreamAllocator( filePath: String diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt index 68257f5e44..91c4079fbb 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.games import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.games.GetGameHighScoresByChat import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.GameContent diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByInlineMessageId.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByInlineMessageId.kt index 82fda656b0..164f03f966 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByInlineMessageId.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByInlineMessageId.kt @@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.games import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.games.GetGameHighScoresByInlineMessageId import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.CommonUser suspend fun TelegramBot.getGameScore( userId: UserId, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt index f34160fb7b..46a1289288 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.games import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.games.SetGameScoreByChatId import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.GameContent diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByInlineMessageId.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByInlineMessageId.kt index ec1caac066..34d94e7adb 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByInlineMessageId.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByInlineMessageId.kt @@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.games import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.games.SetGameScoreByInlineMessageId import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.CommonUser suspend fun TelegramBot.setGameScore( userId: UserId, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetFile.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetFile.kt index d3ce16dccc..807959644e 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetFile.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetFile.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.extensions.api.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.get.GetFile -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent suspend fun TelegramBot.getFileAdditionalInfo( fileId: FileId diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetStickerSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetStickerSet.kt index 513f406e72..94400fa7a9 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetStickerSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetStickerSet.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.get.GetStickerSet -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker suspend fun TelegramBot.getStickerSet( name: String diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetUserProfilePhotos.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetUserProfilePhotos.kt index 1d81bd2ede..14fb14d019 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetUserProfilePhotos.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/get/GetUserProfilePhotos.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.get.GetUserProfilePhotos -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId suspend fun TelegramBot.getUserProfilePhotos( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/passport/SetPassportDataErrors.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/passport/SetPassportDataErrors.kt index 478f7fc993..814e40e02a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/passport/SetPassportDataErrors.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/passport/SetPassportDataErrors.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.passport import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.SetPassportDataErrors -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.message.PassportMessage import dev.inmo.tgbotapi.types.passport.PassportData diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessage.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessage.kt index 9f9fe08dbe..9048c4e77f 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessage.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessage.kt @@ -3,11 +3,11 @@ package dev.inmo.tgbotapi.extensions.api.send import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.CopyMessage import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessages.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessages.kt index 6588139c24..7c207cc2fa 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessages.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/CopyMessages.kt @@ -3,14 +3,14 @@ package dev.inmo.tgbotapi.extensions.api.send import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.extensions.api.send.media.sendMediaGroup import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.media.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate /** * Send media group via [sendMediaGroup] extension with edited [entities] of first [messages] element. Other elements @@ -26,13 +26,13 @@ suspend inline fun TelegramBot.copyMessages( replyToMessageId: MessageIdentifier? = null, allowSendingWithoutReply: Boolean? = null ): List> { - val first = messages.first().content.toMediaGroupMemberInputMedia().let { + val first = messages.first().content.toMediaGroupMemberTelegramMedia().let { if (text != null) { when (it) { - is InputMediaAudio -> it.copy(text = text, parseMode = parseMode) - is InputMediaDocument -> it.copy(text = text, parseMode = parseMode) - is InputMediaPhoto -> it.copy(text = text, parseMode = parseMode) - is InputMediaVideo -> it.copy(text = text, parseMode = parseMode) + is TelegramMediaAudio -> it.copy(text = text, parseMode = parseMode) + is TelegramMediaDocument -> it.copy(text = text, parseMode = parseMode) + is TelegramMediaPhoto -> it.copy(text = text, parseMode = parseMode) + is TelegramMediaVideo -> it.copy(text = text, parseMode = parseMode) } } else { it @@ -42,7 +42,7 @@ suspend inline fun TelegramBot.copyMessages( return sendMediaGroup( toChatId, listOf(first) + messages.drop(1).map { - it.content.toMediaGroupMemberInputMedia() + it.content.toMediaGroupMemberTelegramMedia() }, disableNotification, protectContent, @@ -109,19 +109,19 @@ suspend inline fun TelegramBot.copyMessages( replyToMessageId: MessageIdentifier? = null, allowSendingWithoutReply: Boolean? = null ): List> { - val first = messages.first().content.toMediaGroupMemberInputMedia().let { + val first = messages.first().content.toMediaGroupMemberTelegramMedia().let { when (it) { - is InputMediaAudio -> InputMediaAudio(it.file, entities, it.duration, it.performer, it.title, it.thumb) - is InputMediaDocument -> InputMediaDocument(it.file, entities, it.thumb, it.disableContentTypeDetection) - is InputMediaPhoto -> InputMediaPhoto(it.file, entities) - is InputMediaVideo -> InputMediaVideo(it.file, entities, it.width, it.height, it.duration, it.thumb) + is TelegramMediaAudio -> TelegramMediaAudio(it.file, entities, it.duration, it.performer, it.title, it.thumb) + is TelegramMediaDocument -> TelegramMediaDocument(it.file, entities, it.thumb, it.disableContentTypeDetection) + is TelegramMediaPhoto -> TelegramMediaPhoto(it.file, entities) + is TelegramMediaVideo -> TelegramMediaVideo(it.file, entities, it.width, it.height, it.duration, it.thumb) } } return sendMediaGroup( toChatId, listOf(first) + messages.drop(1).map { - it.content.toMediaGroupMemberInputMedia() + it.content.toMediaGroupMemberTelegramMedia() }, disableNotification, protectContent, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Replies.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Replies.kt index 7f1e6278a4..a857405cf6 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Replies.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Replies.kt @@ -9,23 +9,21 @@ import dev.inmo.tgbotapi.extensions.api.send.polls.sendRegularPoll import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.rawSendingMediaGroupsWarning import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.InputMedia.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.media.* +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.dice.DiceAnimationType import dev.inmo.tgbotapi.types.files.* -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.files.Sticker import dev.inmo.tgbotapi.types.games.Game import dev.inmo.tgbotapi.types.location.* import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.media.* import dev.inmo.tgbotapi.types.payments.LabeledPrice import dev.inmo.tgbotapi.types.payments.abstracts.Currency import dev.inmo.tgbotapi.types.polls.* @@ -525,7 +523,7 @@ suspend inline fun TelegramBot.reply( @RiskFeature(rawSendingMediaGroupsWarning) suspend inline fun TelegramBot.replyWithMediaGroup( to: Message, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null @@ -533,7 +531,7 @@ suspend inline fun TelegramBot.replyWithMediaGroup( suspend inline fun TelegramBot.replyWithPlaylist( to: Message, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null @@ -541,7 +539,7 @@ suspend inline fun TelegramBot.replyWithPlaylist( suspend inline fun TelegramBot.replyWithDocuments( to: Message, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null @@ -549,7 +547,7 @@ suspend inline fun TelegramBot.replyWithDocuments( suspend inline fun TelegramBot.replyWithGallery( to: Message, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendAction.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendAction.kt index c07ada572e..d7ad4ec7cc 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendAction.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendAction.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.SendAction import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.actions.* -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat suspend fun TelegramBot.sendBotAction( chatId: ChatIdentifier, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt index e9d5a18ebf..75d4ce34b0 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.SendAction import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.actions.* -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import kotlinx.coroutines.* import kotlin.contracts.* import kotlin.coroutines.coroutineContext diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendContact.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendContact.kt index f067572784..605a6ad41e 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendContact.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendContact.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.SendContact import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat /** * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendDice.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendDice.kt index 3ea356b45d..1737e2ab80 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendDice.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendDice.kt @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.requests.send.SendDice import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.dice.DiceAnimationType /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLocation.kt index 69100cf049..d571377951 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLocation.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLocation.kt @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.requests.send.SendStaticLocation import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.location.StaticLocation /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendMessage.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendMessage.kt index 23031ef5e4..3a3928c86f 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendMessage.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendMessage.kt @@ -3,11 +3,11 @@ package dev.inmo.tgbotapi.extensions.api.send import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.SendTextMessage import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat /** * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendVenue.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendVenue.kt index fa5ebe9e6d..b1cd5ac7ac 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendVenue.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendVenue.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.SendVenue import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.location.StaticLocation import dev.inmo.tgbotapi.types.venue.Venue diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/games/SendGame.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/games/SendGame.kt index 949179e268..fda0df535c 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/games/SendGame.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/games/SendGame.kt @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.requests.send.games.SendGame import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.games.Game /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAnimation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAnimation.kt index 61bc1588d8..0bc2c3b48a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAnimation.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAnimation.kt @@ -4,11 +4,11 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.SendAnimation import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.AnimationFile /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAudio.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAudio.kt index 0d0a7bce36..28facbc7ed 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAudio.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendAudio.kt @@ -4,11 +4,11 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.SendAudio import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.AudioFile /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendDocument.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendDocument.kt index 8e263813fa..e1c78ae56a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendDocument.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendDocument.kt @@ -4,11 +4,11 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.SendDocument import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.DocumentFile /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt index 47afdfbd36..5209c88cb4 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt @@ -3,13 +3,13 @@ package dev.inmo.tgbotapi.extensions.api.send.media import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.media.* import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.* +import dev.inmo.tgbotapi.types.media.* import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.Chat -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.AudioContent -import dev.inmo.tgbotapi.types.message.content.media.DocumentContent +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.AudioContent +import dev.inmo.tgbotapi.types.message.content.DocumentContent import dev.inmo.tgbotapi.utils.RiskFeature import kotlin.jvm.JvmName @@ -19,7 +19,7 @@ import kotlin.jvm.JvmName @RiskFeature(rawSendingMediaGroupsWarning) suspend fun TelegramBot.sendMediaGroup( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -36,7 +36,7 @@ suspend fun TelegramBot.sendMediaGroup( @RiskFeature(rawSendingMediaGroupsWarning) suspend fun TelegramBot.sendMediaGroup( chat: Chat, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -58,7 +58,7 @@ suspend fun TelegramBot.sendMediaGroup( replyToMessageId: MessageIdentifier? = null, allowSendingWithoutReply: Boolean? = null ) = sendMediaGroup( - chatId, media.map { it.toMediaGroupMemberInputMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply + chatId, media.map { it.toMediaGroupMemberTelegramMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply ) /** @@ -82,7 +82,7 @@ suspend fun TelegramBot.sendMediaGroup( */ suspend fun TelegramBot.sendPlaylist( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -98,7 +98,7 @@ suspend fun TelegramBot.sendPlaylist( */ suspend fun TelegramBot.sendPlaylist( chat: Chat, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -119,7 +119,7 @@ suspend fun TelegramBot.sendPlaylist( replyToMessageId: MessageIdentifier? = null, allowSendingWithoutReply: Boolean? = null ) = sendPlaylist( - chatId, media.map { it.toMediaGroupMemberInputMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply + chatId, media.map { it.toMediaGroupMemberTelegramMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply ) /** @@ -142,7 +142,7 @@ suspend fun TelegramBot.sendPlaylist( */ suspend fun TelegramBot.sendDocumentsGroup( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -158,7 +158,7 @@ suspend fun TelegramBot.sendDocumentsGroup( */ suspend fun TelegramBot.sendDocumentsGroup( chat: Chat, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -179,7 +179,7 @@ suspend fun TelegramBot.sendDocumentsGroup( replyToMessageId: MessageIdentifier? = null, allowSendingWithoutReply: Boolean? = null ) = sendDocumentsGroup( - chatId, media.map { it.toMediaGroupMemberInputMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply + chatId, media.map { it.toMediaGroupMemberTelegramMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply ) /** @@ -202,7 +202,7 @@ suspend fun TelegramBot.sendDocumentsGroup( */ suspend fun TelegramBot.sendVisualMediaGroup( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -218,7 +218,7 @@ suspend fun TelegramBot.sendVisualMediaGroup( */ suspend fun TelegramBot.sendVisualMediaGroup( chat: Chat, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -239,7 +239,7 @@ suspend fun TelegramBot.sendVisualMediaGroup( replyToMessageId: MessageIdentifier? = null, allowSendingWithoutReply: Boolean? = null ) = sendVisualMediaGroup( - chatId, media.map { it.toMediaGroupMemberInputMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply + chatId, media.map { it.toMediaGroupMemberTelegramMedia() }, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply ) /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendPhoto.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendPhoto.kt index 21348dfe03..0d54ec144e 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendPhoto.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendPhoto.kt @@ -4,11 +4,11 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.SendPhoto import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.* /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendSticker.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendSticker.kt index 4381032e80..6fb77a60aa 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendSticker.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendSticker.kt @@ -6,8 +6,8 @@ import dev.inmo.tgbotapi.requests.send.media.SendSticker import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.files.Sticker /** * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideo.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideo.kt index 6ea1a7a937..a3c7df86d3 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideo.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideo.kt @@ -4,11 +4,11 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.SendVideo import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.VideoFile /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideoNote.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideoNote.kt index 49c4e45ab3..771e230af5 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideoNote.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVideoNote.kt @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.requests.send.media.SendVideoNote import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.VideoNoteFile /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt index 59ce948318..b8c1eae219 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt @@ -4,12 +4,11 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.SendVoice import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.VoiceFile /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt index 3d449efd82..082cb0b9ec 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt @@ -4,6 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.payments.SendInvoice import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.payments.LabeledPrice import dev.inmo.tgbotapi.types.payments.abstracts.Currency diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt index 6a6d28b5bb..a0ccbb6df9 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt @@ -4,11 +4,11 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.send.polls.SendQuizPoll import dev.inmo.tgbotapi.requests.send.polls.SendRegularPoll import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.polls.* /** diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddAnimatedStickerToSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddAnimatedStickerToSet.kt index 377b75f123..fda0cee830 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddAnimatedStickerToSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddAnimatedStickerToSet.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.AddAnimatedStickerToSet -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.stickers.MaskPosition import dev.inmo.tgbotapi.types.stickers.StickerSet diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddStaticStickerToSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddStaticStickerToSet.kt index a664aedb5d..58491ea03c 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddStaticStickerToSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddStaticStickerToSet.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.AddStaticStickerToSet -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.stickers.MaskPosition import dev.inmo.tgbotapi.types.stickers.StickerSet diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddVideoStickerToSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddVideoStickerToSet.kt index c1efc2b577..34f9ed4dd5 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddVideoStickerToSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/AddVideoStickerToSet.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.AddVideoStickerToSet -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.stickers.MaskPosition import dev.inmo.tgbotapi.types.stickers.StickerSet diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewAnimatedStickerSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewAnimatedStickerSet.kt index 4678ad058f..57a024cfec 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewAnimatedStickerSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewAnimatedStickerSet.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.CreateNewAnimatedStickerSet -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.stickers.MaskPosition diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewStaticStickerSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewStaticStickerSet.kt index 0622223b81..19f512c8a2 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewStaticStickerSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewStaticStickerSet.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.CreateNewStaticStickerSet -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.stickers.MaskPosition diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewVideoStickerSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewVideoStickerSet.kt index 0f8f8dd0a5..9e8360244a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewVideoStickerSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/CreateNewVideoStickerSet.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.CreateNewVideoStickerSet -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.stickers.MaskPosition diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/DeleteStickerFromSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/DeleteStickerFromSet.kt index a51fa3fdc4..29be658518 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/DeleteStickerFromSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/DeleteStickerFromSet.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.stickers import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.stickers.DeleteStickerFromSet -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker suspend fun TelegramBot.deleteStickerFromSet( sticker: FileId diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerPositionInSet.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerPositionInSet.kt index 3fa4da399c..affe3f2056 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerPositionInSet.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerPositionInSet.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.stickers import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.stickers.SetStickerPositionInSet -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker suspend fun TelegramBot.setStickerPositionInSet( sticker: FileId, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerSetThumb.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerSetThumb.kt index c5d2261c2a..8831061c60 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerSetThumb.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/SetStickerSetThumb.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.SetStickerSetThumb -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.stickers.StickerSet diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/UploadStickerFile.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/UploadStickerFile.kt index e509307f7c..ef815150a1 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/UploadStickerFile.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/stickers/UploadStickerFile.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.api.stickers import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.stickers.UploadStickerFile -import dev.inmo.tgbotapi.types.CommonUser +import dev.inmo.tgbotapi.types.chat.CommonUser import dev.inmo.tgbotapi.types.UserId suspend fun TelegramBot.uploadStickerFile( diff --git a/tgbotapi.api/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileToFile.kt b/tgbotapi.api/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileToFile.kt index 0e12b4c855..05ed333073 100644 --- a/tgbotapi.api/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileToFile.kt +++ b/tgbotapi.api/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileToFile.kt @@ -5,8 +5,8 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.extensions.api.get.getFileAdditionalInfo import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.files.PathedFile -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent import io.ktor.util.cio.use import io.ktor.util.cio.writeChannel import io.ktor.utils.io.copyTo diff --git a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSM.kt b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSM.kt index efac220bd1..30ebf58bc3 100644 --- a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSM.kt +++ b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSM.kt @@ -5,12 +5,10 @@ import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.micro_utils.fsm.common.* import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.types.update.abstracts.Update -import dev.inmo.micro_utils.coroutines.accumulatorFlow import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.handlers_registrar.TriggersHolder import kotlinx.coroutines.* import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.* -import kotlin.jvm.JvmName import kotlin.reflect.KClass /** @@ -23,18 +21,6 @@ import kotlin.reflect.KClass interface BehaviourContextWithFSM : BehaviourContext, StatesMachine { suspend fun start() = start(this) - suspend fun launchStateHandling( - state: T, - contextUpdatesFlow: Flow, - handlers: List> - ): T? { - return handlers.firstOrNull { it.checkHandleable(state) } ?.run { - doInSubContext(updatesUpstreamFlow = contextUpdatesFlow) { - handleState(state) - } - } - } - /** * Add NON STRICT [handler] to list of available in future [BehaviourContextWithFSM]. Non strict means that * for input [State] will be used [KClass.isInstance] and any inheritor of [kClass] will pass this requirement @@ -104,19 +90,22 @@ class DefaultBehaviourContextWithFSM( private val statesManager: StatesManager, private val handlers: List> ) : BehaviourContext by behaviourContext, BehaviourContextWithFSM { - private val updatesFlows = mutableMapOf>() + private val updatesFlows = mutableMapOf>() private val additionalHandlers = mutableListOf>() private var actualHandlersList = additionalHandlers + handlers - private fun getContextUpdatesFlow(context: Any) = updatesFlows.getOrPut(context) { - allUpdatesFlow.accumulatorFlow(scope) + private fun getSubContext(context: Any) = updatesFlows.getOrPut(context) { + createSubContext() } - override suspend fun StatesMachine.handleState(state: T): T? = launchStateHandling( - state, - allUpdatesFlow, - actualHandlersList - ) + override suspend fun StatesMachine.handleState(state: T): T? { + return getSubContext( + state.context + ).launchStateHandling( + state, + actualHandlersList + ) + } override fun add(kClass: KClass, strict: Boolean, handler: BehaviourWithFSMStateHandler) { additionalHandlers.add(BehaviourWithFSMStateHandlerHolder(kClass, strict, handler)) @@ -125,7 +114,7 @@ class DefaultBehaviourContextWithFSM( override fun start(scope: CoroutineScope): Job = scope.launchSafelyWithoutExceptions { val statePerformer: suspend (T) -> Unit = { state: T -> - val newState = launchStateHandling(state, getContextUpdatesFlow(state.context), actualHandlersList) + val newState = getSubContext(state.context).launchStateHandling(state, actualHandlersList) if (newState != null) { statesManager.update(state, newState) } else { diff --git a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSMBuilder.kt b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSMBuilder.kt index b1dd83032b..9bcc15e42a 100644 --- a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSMBuilder.kt +++ b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContextWithFSMBuilder.kt @@ -88,7 +88,6 @@ suspend fun TelegramBot.buildBehaviourWithFSMAndStartLongPolling( * @see BehaviourContextWithFSM.strictlyOn * @see BehaviourContextWithFSM.onStateOrSubstate */ -@PreviewFeature suspend fun TelegramBot.buildBehaviourWithFSM( flowUpdatesFilter: FlowsUpdatesFilter, scope: CoroutineScope = defaultCoroutineScopeProvider(), @@ -117,7 +116,6 @@ suspend fun TelegramBot.buildBehaviourWithFSM( * @see BehaviourContextWithFSM.strictlyOn * @see BehaviourContextWithFSM.onStateOrSubstate */ -@PreviewFeature suspend fun TelegramBot.buildBehaviourWithFSMAndStartLongPolling( scope: CoroutineScope = defaultCoroutineScopeProvider(), defaultExceptionsHandler: ExceptionHandler? = null, diff --git a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandler.kt b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandler.kt index 93d0ccd6f4..e9b6f89532 100644 --- a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandler.kt +++ b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandler.kt @@ -2,6 +2,12 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder import dev.inmo.micro_utils.fsm.common.* -fun interface BehaviourWithFSMStateHandler { +fun interface BehaviourWithFSMStateHandler : StatesHandler { suspend fun BehaviourContextWithFSM.handleState(state: I): O? + + override suspend fun StatesMachine.handleState(state: I): O? = if (this is BehaviourContextWithFSM) { + handleState(state) + } else { + null + } } diff --git a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandlerHolder.kt b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandlerHolder.kt index fa3bdbd0e2..50c68c1090 100644 --- a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandlerHolder.kt +++ b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourWithFSMStateHandlerHolder.kt @@ -1,12 +1,6 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder -import dev.inmo.micro_utils.coroutines.LinkedSupervisorScope -import dev.inmo.micro_utils.coroutines.weakLaunch import dev.inmo.micro_utils.fsm.common.* -import dev.inmo.tgbotapi.types.update.abstracts.Update -import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.collect import kotlin.reflect.KClass /** @@ -23,21 +17,25 @@ class BehaviourWithFSMStateHandlerHolder( private val inputKlass: KClass, private val strict: Boolean = false, private val delegateTo: BehaviourWithFSMStateHandler -) { +) : CheckableHandlerHolder, BehaviourWithFSMStateHandler { /** * Check ability of [delegateTo] to handle this [state] * * @return When [state]::class exactly equals to [inputKlass] will always return true. Otherwise when [strict] * mode is disabled, will be used [KClass.isInstance] of [inputKlass] for checking */ - fun checkHandleable(state: O): Boolean = state::class == inputKlass || (!strict && inputKlass.isInstance(state)) + override suspend fun checkHandleable(state: O): Boolean = state::class == inputKlass || (!strict && inputKlass.isInstance(state)) /** * Handling of state :) */ - suspend fun BehaviourContextWithFSM.handleState( - state: O - ): O? = with(delegateTo) { + override suspend fun BehaviourContextWithFSM.handleState(state: O): O? = with(delegateTo) { + @Suppress("UNCHECKED_CAST") + handleState(state as I) + } + + override suspend fun StatesMachine.handleState(state: O): O? = with(delegateTo) { + @Suppress("UNCHECKED_CAST") handleState(state as I) } } diff --git a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBotWithFSM.kt b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBotWithFSM.kt index 2d55cf322a..bcbe3d7116 100644 --- a/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBotWithFSM.kt +++ b/tgbotapi.behaviour_builder.fsm/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBotWithFSM.kt @@ -5,8 +5,8 @@ import dev.inmo.micro_utils.fsm.common.State import dev.inmo.micro_utils.fsm.common.StatesManager import dev.inmo.micro_utils.fsm.common.managers.DefaultStatesManager import dev.inmo.micro_utils.fsm.common.managers.InMemoryDefaultStatesManagerRepo -import dev.inmo.tgbotapi.bot.Ktor.KtorRequestsExecutorBuilder -import dev.inmo.tgbotapi.bot.Ktor.telegramBot +import dev.inmo.tgbotapi.bot.ktor.KtorRequestsExecutorBuilder +import dev.inmo.tgbotapi.bot.ktor.telegramBot import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.startGettingOfUpdatesByLongPolling import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt index dd17203ef3..41e193218c 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt @@ -25,7 +25,6 @@ expect var defaultCoroutineScopeProvider: () -> CoroutineScope * @see [BehaviourContext] * @see startGettingOfUpdatesByLongPolling */ -@PreviewFeature suspend fun TelegramBot.buildBehaviour( flowUpdatesFilter: FlowsUpdatesFilter = FlowsUpdatesFilter(), scope: CoroutineScope = defaultCoroutineScopeProvider(), @@ -53,7 +52,6 @@ suspend fun TelegramBot.buildBehaviour( * @see BehaviourContext * @see startGettingOfUpdatesByLongPolling */ -@PreviewFeature suspend fun TelegramBot.buildBehaviourWithLongPolling( scope: CoroutineScope = defaultCoroutineScopeProvider(), defaultExceptionsHandler: ExceptionHandler? = null, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt index b6aaf4f04a..b1c6d837b2 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt @@ -84,7 +84,7 @@ class DefaultBehaviourContext( } else { it } - } + }.accumulatorFlow(scope) override val asUpdateReceiver: UpdateReceiver = additionalUpdatesSharedFlow::emit override fun copy( @@ -113,10 +113,70 @@ inline fun BehaviourContext( crossinline block: BehaviourContext.() -> T ) = DefaultBehaviourContext(bot, scope, upstreamUpdatesFlow = flowsUpdatesFilter.allUpdatesFlow, triggersHolder = triggersHolder).run(block) +fun BC.createSubContext( + scope: CoroutineScope = LinkedSupervisorScope(), + triggersHolder: TriggersHolder = this.triggersHolder, + updatesUpstreamFlow: Flow = allUpdatesFlow, + updatesFilter: CustomBehaviourContextAndTypeReceiver? = null, +) = copy( + scope = scope, + updatesFilter = updatesFilter ?.let { _ -> + { + (this as? BC) ?.run { + updatesFilter(it) + } ?: true + } + }, + upstreamUpdatesFlow = updatesUpstreamFlow, + triggersHolder = triggersHolder +) as BC + /** - * Creates new one [BehaviourContext], adding subsequent [FlowsUpdatesFilter] in case [updatesFilter] is provided and - * [CoroutineScope] as new [BehaviourContext.scope] + * Launch [behaviourContextReceiver] in context of [this] as [BehaviourContext] and as [kotlin.coroutines.CoroutineContext] + * + * @param stopOnCompletion ___FALSE BY DEFAULT___. Will stop [this] in case if passed true */ +suspend fun BC.doInContext( + stopOnCompletion: Boolean = false, + behaviourContextReceiver: CustomBehaviourContextReceiver +): T { + return withContext(coroutineContext) { + behaviourContextReceiver().also { if (stopOnCompletion) stop() } + } +} + +/** + * Creates new one [BehaviourContext] using [createSubContext] and launches [behaviourContextReceiver] in a new context + * using [doInContext] + * + * @param stopOnCompletion ___TRUE BY DEFAULT___ + */ +suspend fun BC.createSubContextAndDoWithUpdatesFilter( + scope: CoroutineScope = LinkedSupervisorScope(), + triggersHolder: TriggersHolder = this.triggersHolder, + updatesUpstreamFlow: Flow = allUpdatesFlow, + updatesFilter: CustomBehaviourContextAndTypeReceiver? = null, + stopOnCompletion: Boolean = true, + behaviourContextReceiver: CustomBehaviourContextReceiver +): T { + return createSubContext( + scope, + triggersHolder, + updatesUpstreamFlow, + updatesFilter + ).doInContext( + stopOnCompletion, + behaviourContextReceiver + ) +} + +/** + * Creates new one [BehaviourContext] using [createSubContext] and launches [behaviourContextReceiver] in a new context + * using [doInContext] + * + * @param stopOnCompletion ___TRUE BY DEFAULT___ + */ +@Deprecated("Renamed", ReplaceWith("createSubContextAndDoWithUpdatesFilter", "dev.inmo.tgbotapi.extensions.behaviour_builder.createSubContextAndDoWithUpdatesFilter")) suspend fun BC.doInSubContextWithUpdatesFilter( updatesFilter: CustomBehaviourContextAndTypeReceiver?, stopOnCompletion: Boolean = true, @@ -125,30 +185,32 @@ suspend fun BC.doInSubContextWithUpdatesFilter( triggersHolder: TriggersHolder = this.triggersHolder, behaviourContextReceiver: CustomBehaviourContextReceiver ): T { - val newContext = copy( - scope = scope, - updatesFilter = updatesFilter ?.let { _ -> - { - (this as? BC) ?.run { - updatesFilter(it) - } ?: true - } - }, - upstreamUpdatesFlow = updatesUpstreamFlow, - triggersHolder = triggersHolder - ) as BC - return withContext(currentCoroutineContext()) { - newContext.behaviourContextReceiver().also { if (stopOnCompletion) newContext.stop() } - } + return createSubContext( + scope, + triggersHolder, + updatesUpstreamFlow, + updatesFilter + ).doInContext( + stopOnCompletion, + behaviourContextReceiver + ) } +@Deprecated("Redundant", ReplaceWith("createSubContextAndDoWithUpdatesFilter", "dev.inmo.tgbotapi.extensions.behaviour_builder.createSubContextAndDoWithUpdatesFilter")) suspend fun BehaviourContext.doInSubContext( stopOnCompletion: Boolean = true, updatesUpstreamFlow: Flow = allUpdatesFlow, scope: CoroutineScope = LinkedSupervisorScope(), triggersHolder: TriggersHolder = this.triggersHolder, behaviourContextReceiver: BehaviourContextReceiver -) = doInSubContextWithUpdatesFilter(updatesFilter = null, stopOnCompletion, updatesUpstreamFlow, scope, triggersHolder, behaviourContextReceiver) +) = createSubContextAndDoWithUpdatesFilter( + scope, + triggersHolder, + updatesUpstreamFlow, + updatesFilter = null, + stopOnCompletion, + behaviourContextReceiver +) /** * This method will cancel ALL subsequent contexts, expectations and waiters diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBot.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBot.kt index ddc0bdb704..b49e812220 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBot.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/TelegramBot.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder import dev.inmo.micro_utils.coroutines.ExceptionHandler -import dev.inmo.tgbotapi.bot.Ktor.KtorRequestsExecutorBuilder -import dev.inmo.tgbotapi.bot.Ktor.telegramBot +import dev.inmo.tgbotapi.bot.ktor.KtorRequestsExecutorBuilder +import dev.inmo.tgbotapi.bot.ktor.telegramBot import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.startGettingOfUpdatesByLongPolling import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitCallbackQuery.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitCallbackQuery.kt index f02c6cd3bf..2c51e9ef2f 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitCallbackQuery.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitCallbackQuery.kt @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.utils.asCallbackQueryUpdate import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.CallbackQuery.* +import dev.inmo.tgbotapi.types.queries.callback.* import kotlinx.coroutines.flow.toList typealias CallbackQueryMapper = suspend T.() -> T? @@ -35,7 +35,7 @@ private suspend inline fun BehaviourContext.waitCall count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: CallbackQueryMapper? = null ) : List = waitCallbackQueries( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatJoinRequest.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatJoinRequest.kt index d6cc34efa3..9481c118c5 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatJoinRequest.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatJoinRequest.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.utils.asChatJoinRequestUpdate import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.ChatJoinRequest +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest import kotlinx.coroutines.flow.toList typealias ChatJoinRequestsMapper = suspend ChatJoinRequest.() -> ChatJoinRequest? diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt index 801bdf0384..fe6ef75b2f 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate @@ -15,7 +15,7 @@ private suspend inline fun BehaviourContex count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: ChatMemberUpdatedMapper ): List = expectFlow( initRequest, @@ -34,7 +34,7 @@ private suspend inline fun BehaviourContex count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: ChatMemberUpdatedMapper? = null ) : List = waitChatMemberUpdated( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChosenInlineResult.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChosenInlineResult.kt index 940f68ea3b..a21fe35eb8 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChosenInlineResult.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChosenInlineResult.kt @@ -33,7 +33,7 @@ private suspend inline fun BehaviourContext.wai count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: ChosenInlineResultMapper? = null ) : List = this@waitChosenInlineResults.waitChosenInlineResultsUpdates( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt index f062bcd893..61038ec5b7 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt @@ -9,11 +9,12 @@ import dev.inmo.tgbotapi.extensions.utils.withContent import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.toList @@ -72,7 +73,7 @@ private suspend inline fun BehaviourContext.waitCon initRequest: Request<*>? = null, includeMediaGroups: Boolean = true, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter>? = null, + filter: SimpleFilter>? = null, noinline mapper: CommonMessageToContentMapper? = null ) : List = waitCommonContent( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt index ca0dc07260..0c51884379 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt @@ -9,11 +9,12 @@ import dev.inmo.tgbotapi.extensions.utils.withContent import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.toList @@ -35,7 +36,7 @@ internal suspend fun BehaviourContext.waitCommonMessage( val messages = when (it) { is SentMediaGroupUpdate -> { if (includeMediaGroups) { - it.data.map { it as CommonMessage } + it.data } else { emptyList() } @@ -44,7 +45,8 @@ internal suspend fun BehaviourContext.waitCommonMessage( else -> return@expectFlow emptyList() } messages.mapNotNull { message -> - val asCommonMessage = message as CommonMessage + @Suppress("UNCHECKED_CAST") + val asCommonMessage = message as? CommonMessage ?: return@mapNotNull null if (filter == null || filter(asCommonMessage)) { asCommonMessage.mapper() } else { @@ -75,7 +77,7 @@ private suspend inline fun BehaviourContext.waitCon initRequest: Request<*>? = null, includeMediaGroups: Boolean = true, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter>? = null, + filter: SimpleFilter>? = null, noinline mapper: CommonMessageToCommonMessageMapper? = null ) : List> = waitCommonMessage( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContent.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContent.kt index ba73dd1d06..f3ae19daaf 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContent.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContent.kt @@ -10,10 +10,11 @@ import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate import kotlinx.coroutines.flow.toList @@ -55,7 +56,7 @@ private suspend inline fun BehaviourContext.waitEdi initRequest: Request<*>? = null, includeMediaGroups: Boolean = true, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter>? = null, + filter: SimpleFilter>? = null, noinline mapper: CommonMessageToContentMapper? = null ) : List = waitEditedCommonMessage( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt index 2dfe353049..717b4b876e 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt @@ -41,7 +41,7 @@ private suspend inline fun BehaviourContext.waitEvents( count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter>? = null, + filter: SimpleFilter>? = null, noinline mapper: EventMessageToEventMapper? = null ) : List = waitEventMessages( initRequest, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt index 1089c62113..6523f126e0 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt @@ -33,7 +33,7 @@ private suspend inline fun BehaviourContext.waitInline count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: InlineQueryMapper? = null ) : List = waitInlineQueries( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroup.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroup.kt index 990b5e41fe..5f8852fdbc 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroup.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroup.kt @@ -4,14 +4,17 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext import dev.inmo.tgbotapi.extensions.utils.asSentMediaGroupUpdate import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.* +import dev.inmo.tgbotapi.types.message.content.* +import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent import dev.inmo.tgbotapi.utils.PreviewFeature import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.toList typealias MediaGroupFilter = suspend List>.() -> Boolean -@PreviewFeature internal suspend inline fun BehaviourContext.buildMediaGroupWaiter( count: Int = 1, initRequest: Request<*>? = null, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt index 22fa5b7313..6a858c5aea 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt @@ -37,7 +37,7 @@ suspend inline fun BehaviourContext.waitP count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: PassportMessageMapper? = null ) : List = waitPassportMessages( initRequest, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollAnswers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollAnswers.kt index 1775f74369..6ef6baf180 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollAnswers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollAnswers.kt @@ -33,7 +33,7 @@ private suspend inline fun BehaviourContext.waitPollAnswers( count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: PollAnswerMapper? = null ) : List = this@waitPollAnswers.waitPollsAnswers( count, @@ -45,14 +45,10 @@ private suspend inline fun BehaviourContext.waitPollAnswers( } } ) { - if (this is PollAnswer) { - if (mapper == null) { - this - } else { - mapper(this) - } + if (mapper == null) { + this } else { - null + mapper(this) } } diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollUpdates.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollUpdates.kt index 7f2b980034..6e9ad291b0 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollUpdates.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPollUpdates.kt @@ -33,7 +33,7 @@ private suspend inline fun BehaviourContext.waitPolls( count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, - noinline filter: SimpleFilter? = null, + filter: SimpleFilter? = null, noinline mapper: PollMapper? = null ) : List = this@waitPolls.waitPollsUpdates( count, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterByChat.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterByChat.kt index c0877ce42b..90574ebd5e 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterByChat.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterByChat.kt @@ -2,9 +2,9 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.filters import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextAndTwoTypesReceiver import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat -import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery -import dev.inmo.tgbotapi.types.ChatJoinRequest -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.InlineQueries.query.InlineQuery import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterExcludingMediaGroups.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterExcludingMediaGroups.kt index 91fc62655c..60389a5ecf 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterExcludingMediaGroups.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/filters/MessageFilterExcludingMediaGroups.kt @@ -1,21 +1,20 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.filters import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextAndTwoTypesReceiver -import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.CommonMessageFilter -import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage -import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage +import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter +import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.update.abstracts.Update /** * Allow only messages which are not [MediaGroupMessage] */ -val MessageFilterExcludingMediaGroups: BehaviourContextAndTwoTypesReceiver, Update> = { message, update -> +val MessageFilterExcludingMediaGroups: BehaviourContextAndTwoTypesReceiver, Update> = { _, update -> update !is MediaGroupMessage<*> } /** * Allow only messages which are not [MediaGroupMessage] */ -val CommonMessageFilterExcludeMediaGroups: CommonMessageFilter<*> = { +val CommonMessageFilterExcludeMediaGroups = SimpleFilter { it !is MediaGroupMessage<*> } diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt index ca7fa9204c..45f7ee95fa 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt @@ -11,12 +11,12 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByU import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.plus import dev.inmo.tgbotapi.extensions.utils.asCallbackQueryUpdate -import dev.inmo.tgbotapi.types.CallbackQuery.* +import dev.inmo.tgbotapi.types.queries.callback.* import dev.inmo.tgbotapi.types.update.abstracts.Update import kotlinx.coroutines.Job internal suspend inline fun BC.onCallbackQuery( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = CallbackQueryFilterByUser, markerFactory: MarkerFactory = ByUserCallbackQueryMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver @@ -37,14 +37,14 @@ internal suspend inline fun B * data */ internal suspend inline fun BC.onDataCallbackQueryCounted( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = CallbackQueryFilterByUser, markerFactory: MarkerFactory = ByUserCallbackQueryMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ): Job { val newInitialFilter = SimpleFilter { it is T && initialFilter ?.invoke(it) ?: true - } + }::invoke return runCatchingSafely { onCallbackQuery ( initialFilter, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggersUnhandled.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggersUnhandled.kt index 58665be972..ef0c85a334 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggersUnhandled.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggersUnhandled.kt @@ -7,8 +7,9 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.CallbackQueryFilte import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.* import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByUserCallbackQueryMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.types.CallbackQuery.* +import dev.inmo.tgbotapi.types.queries.callback.* import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.utils.PreviewFeature /** * @param initialFilter This filter will be called to remove unnecessary data BEFORE [scenarioReceiver] call @@ -22,6 +23,7 @@ import dev.inmo.tgbotapi.types.update.abstracts.Update * @param scenarioReceiver Main callback which will be used to handle incoming data if [initialFilter] will pass that * data */ +@PreviewFeature suspend fun BC.onUnhandledDataCallbackQuery( initialFilter: SimpleFilter? = null, subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = CallbackQueryFilterByUser, @@ -46,6 +48,7 @@ suspend fun BC.onUnhandledDataCallbackQuery( * @param scenarioReceiver Main callback which will be used to handle incoming data if [initialFilter] will pass that * data */ +@PreviewFeature suspend fun BC.onUnhandledInlineMessageIdDataCallbackQuery( initialFilter: SimpleFilter? = null, subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = CallbackQueryFilterByUser, @@ -70,6 +73,7 @@ suspend fun BC.onUnhandledInlineMessageIdDataCallbackQue * @param scenarioReceiver Main callback which will be used to handle incoming data if [initialFilter] will pass that * data */ +@PreviewFeature suspend fun BC.onUnhandledMessageDataCallbackQuery( initialFilter: SimpleFilter? = null, subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = CallbackQueryFilterByUser, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatJoinRequestTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatJoinRequestTriggers.kt index a49c8ce57a..90e5f5cbae 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatJoinRequestTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatJoinRequestTriggers.kt @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByChatChatJoinRequestMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory import dev.inmo.tgbotapi.extensions.utils.asChatJoinRequestUpdate -import dev.inmo.tgbotapi.types.ChatJoinRequest +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest import dev.inmo.tgbotapi.types.update.abstracts.Update /** diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt index 9f8cfa7193..c6954be2d2 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt @@ -7,14 +7,14 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.ChatMemberUpdatedF import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByChatChatMemberUpdatedMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.onChatMemberUpdatedInternal( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = ChatMemberUpdatedFilterByChat, markerFactory: MarkerFactory = ByChatChatMemberUpdatedMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChosenInlineResultTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChosenInlineResultTriggers.kt index 84704e5492..f87eacd415 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChosenInlineResultTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChosenInlineResultTriggers.kt @@ -11,7 +11,7 @@ import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.* import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.onChosenInlineResultBase( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = null, markerFactory: MarkerFactory = ByUserIdChosenInlineResultMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandlingUnhandled.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandlingUnhandled.kt index 6126b19f5f..f491ea8ce7 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandlingUnhandled.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandlingUnhandled.kt @@ -13,9 +13,11 @@ import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithParams import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.content.TextContent import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.utils.PreviewFeature import kotlinx.coroutines.Job +@PreviewFeature suspend fun BC.unhandledCommand( requireOnlyCommandInMessage: Boolean = true, initialFilter: CommonMessageFilter? = CommonMessageFilterExcludeMediaGroups, @@ -43,6 +45,7 @@ suspend fun BC.unhandledCommand( scenarioReceiver ) +@PreviewFeature suspend fun BC.onUnhandledCommand( requireOnlyCommandInMessage: Boolean = true, initialFilter: CommonMessageFilter? = CommonMessageFilterExcludeMediaGroups, @@ -51,6 +54,7 @@ suspend fun BC.onUnhandledCommand( scenarioReceiver: CustomBehaviourContextAndTypeReceiver> ): Job = unhandledCommand(requireOnlyCommandInMessage, initialFilter, subcontextUpdatesFilter, markerFactory, scenarioReceiver) +@PreviewFeature suspend fun BC.unhandledCommandWithArgs( initialFilter: CommonMessageFilter? = CommonMessageFilterExcludeMediaGroups, subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, @@ -68,6 +72,7 @@ suspend fun BC.unhandledCommandWithArgs( scenarioReceiver(it, args) } +@PreviewFeature suspend fun BC.onUnhandledCommandWithArgs( initialFilter: CommonMessageFilter? = CommonMessageFilterExcludeMediaGroups, subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt index 4f51259fb4..b4d2d714ad 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt @@ -9,23 +9,20 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByChatMessageMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory import dev.inmo.tgbotapi.extensions.utils.whenCommonMessage -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile +import dev.inmo.tgbotapi.types.files.TelegramMediaFile import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.content.media.AudioMediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.DocumentMediaGroupContent -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update typealias CommonMessageFilter = SimpleFilter> -inline fun CommonMessageFilter(noinline block: CommonMessageFilter) = block internal suspend inline fun BC.onContentMessageWithType( - noinline initialFilter: CommonMessageFilter? = null, + initialFilter: CommonMessageFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update>? = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver> diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EditedContentTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EditedContentTriggers.kt index c1b617bbbd..3dc45ebdca 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EditedContentTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EditedContentTriggers.kt @@ -22,21 +22,22 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByC import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory import dev.inmo.tgbotapi.extensions.utils.asEditMessageUpdate import dev.inmo.tgbotapi.extensions.utils.withContent -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile +import dev.inmo.tgbotapi.types.files.TelegramMediaFile import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.content.* import dev.inmo.tgbotapi.types.message.content.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.content.media.AudioMediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.DocumentMediaGroupContent -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.MediaCollectionContent +import dev.inmo.tgbotapi.types.message.content.MediaContent +import dev.inmo.tgbotapi.types.message.content.MessageContent import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update import dev.inmo.tgbotapi.utils.PreviewFeature -@PreviewFeature internal suspend inline fun BC.onEditedContent( - noinline initialFilter: CommonMessageFilter? = null, + initialFilter: CommonMessageFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update>? = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver> diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt index 8c04544d87..ae1998941b 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt @@ -18,11 +18,12 @@ import dev.inmo.tgbotapi.types.message.payments.SuccessfulPaymentEvent import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.onEvent( - noinline initialFilter: SimpleFilter>? = null, + initialFilter: SimpleFilter>? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update>? = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver> ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { + @Suppress("UNCHECKED_CAST") (it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage() ?.takeIf { it.chatEvent is T } as? ChatEventMessage) ?.let(::listOfNotNull) } @@ -584,7 +585,7 @@ suspend fun BC.onWebAppData( scenarioReceiver: CustomBehaviourContextAndTypeReceiver> ) = onEvent( initialFilter ?.let { { it is PrivateEventMessage && initialFilter(it) } }, - subcontextUpdatesFilter ?.let { { it: ChatEventMessage, update: Update -> it is PrivateEventMessage && subcontextUpdatesFilter(it, update) } }, + subcontextUpdatesFilter ?.let { { message: ChatEventMessage, update: Update -> message is PrivateEventMessage && subcontextUpdatesFilter(message, update) } }, markerFactory ) { if (it is PrivateEventMessage) { diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt index fec661e30e..e850638058 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt @@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.InlineQueries.query.* import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.onInlineQuery( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = InlineQueryFilterByUser, markerFactory: MarkerFactory = ByUserInlineQueryMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MainTrigger.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MainTrigger.kt index 6618479bec..766972a57b 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MainTrigger.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MainTrigger.kt @@ -9,7 +9,7 @@ import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.on( markerFactory: MarkerFactory, - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = null, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver, noinline updateToData: (Update) -> List? @@ -21,12 +21,9 @@ internal suspend inline fun BC.on( scope, markerFactory::invoke ) { triggerData -> - val scope = LinkedSupervisorScope() - doInSubContextWithUpdatesFilter( + createSubContextAndDoWithUpdatesFilter( updatesFilter = subcontextUpdatesFilter ?.toOneType(triggerData), - stopOnCompletion = false, - updatesUpstreamFlow = allUpdatesFlow.accumulatorFlow(scope), - scope = scope + stopOnCompletion = false ) { scenarioReceiver(triggerData) } diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt index 5fe819fe55..8e868791df 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt @@ -9,13 +9,13 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByC import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory import dev.inmo.tgbotapi.extensions.utils.asSentMediaGroupUpdate import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.* +import dev.inmo.tgbotapi.types.message.content.* import dev.inmo.tgbotapi.types.update.abstracts.Update import dev.inmo.tgbotapi.utils.PreviewFeature @PreviewFeature internal suspend inline fun BC.buildMediaGroupTrigger( - noinline initialFilter: SimpleFilter>>? = null, + initialFilter: SimpleFilter>>? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver>, Update>? = MessagesFilterByChat, markerFactory: MarkerFactory>, Any> = ByChatMediaGroupMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver>> diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt index e85c8bfe47..e1705cbf34 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt @@ -12,7 +12,7 @@ import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportEle import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.onPassportMessageWith( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = MessageFilterByChat, markerFactory: MarkerFactory = ByChatMessageMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollAnswersTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollAnswersTriggers.kt index d12b4fa0e2..549e052426 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollAnswersTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollAnswersTriggers.kt @@ -11,7 +11,7 @@ import dev.inmo.tgbotapi.types.polls.PollAnswer import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.onPollAnswered( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = null, markerFactory: MarkerFactory = ByIdPollAnswerMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollUpdatesTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollUpdatesTriggers.kt index 9c73f577ad..f9575de5e7 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollUpdatesTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PollUpdatesTriggers.kt @@ -11,7 +11,7 @@ import dev.inmo.tgbotapi.types.polls.* import dev.inmo.tgbotapi.types.update.abstracts.Update internal suspend inline fun BC.onPollUpdatedBase( - noinline initialFilter: SimpleFilter? = null, + initialFilter: SimpleFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver? = null, markerFactory: MarkerFactory = ByIdPollMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt index 9c72aea0ad..fb918ffb93 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.utils -typealias SimpleFilter = suspend (T) -> Boolean - -inline fun SimpleFilter(noinline block: SimpleFilter) = block +fun interface SimpleFilter { + suspend operator fun invoke(o: T): Boolean +} val TrueSimpleFilter = SimpleFilter { true } /** @@ -30,7 +30,7 @@ fun SimpleFilter.listNone() = SimpleFilter> { * Makes an AND (&&) operation between [this] and [other] */ operator fun SimpleFilter?.times(other: SimpleFilter): SimpleFilter = this ?.let { - { + SimpleFilter { this(it) && other(it) } } ?: other @@ -39,7 +39,7 @@ operator fun SimpleFilter?.times(other: SimpleFilter): SimpleFilter * Makes an OR (||) operation between [this] and [other] */ operator fun SimpleFilter?.plus(other: SimpleFilter): SimpleFilter = this ?.let { - { + SimpleFilter { this(it) || other(it) } } ?: other @@ -47,6 +47,6 @@ operator fun SimpleFilter?.plus(other: SimpleFilter): SimpleFilter /** * Reverse results of [this] */ -operator fun SimpleFilter.not(): SimpleFilter = { +operator fun SimpleFilter.not() = SimpleFilter { !this(it) } diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/handlers_registrar/TriggersRegistrar.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/handlers_registrar/TriggersRegistrar.kt index 4c907915fd..8012149fe4 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/handlers_registrar/TriggersRegistrar.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/handlers_registrar/TriggersRegistrar.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.utils.handlers_registrar -import dev.inmo.tgbotapi.types.CallbackQuery.DataCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery class TriggersHolder { val handleableCommandsHolder = HandleableRegexesHolder() diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/ChatMemberUpdatedMarkerFactories.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/ChatMemberUpdatedMarkerFactories.kt index c861c5cf17..9469850161 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/ChatMemberUpdatedMarkerFactories.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/ChatMemberUpdatedMarkerFactories.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated object ByChatChatMemberUpdatedMarkerFactory : MarkerFactory { override suspend fun invoke(data: ChatMemberUpdated) = data.chat diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/QueryMarkerFactories.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/QueryMarkerFactories.kt index 5f831e6fbd..a5d25816cd 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/QueryMarkerFactories.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/marker_factories/QueryMarkerFactories.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories -import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery -import dev.inmo.tgbotapi.types.ChatJoinRequest +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery import dev.inmo.tgbotapi.types.payments.ShippingQuery diff --git a/tgbotapi.core/build.gradle b/tgbotapi.core/build.gradle index eee2044694..cb2273c5f7 100644 --- a/tgbotapi.core/build.gradle +++ b/tgbotapi.core/build.gradle @@ -55,6 +55,7 @@ kotlin { api "dev.inmo:micro_utils.serialization.base64:$micro_utils_version" api "dev.inmo:micro_utils.serialization.encapsulator:$micro_utils_version" api "dev.inmo:micro_utils.serialization.typed_serializer:$micro_utils_version" + api "dev.inmo:micro_utils.ktor.common:$micro_utils_version" api "dev.inmo:micro_utils.language_codes:$micro_utils_version" api "io.ktor:ktor-client-core:$ktor_version" @@ -64,7 +65,7 @@ kotlin { dependencies { implementation kotlin('test-common') implementation kotlin('test-annotations-common') - implementation project(":tgbotapi.extensions.utils") + implementation project(":tgbotapi.utils") } } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonContactData.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonContactData.kt index 760f7c6183..ed02d37445 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonContactData.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonContactData.kt @@ -1,8 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -interface CommonContactData { - val phoneNumber: String - val firstName: String - val lastName: String? - val vcard: String? // TODO:: Replace by some vCard abstraction -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("CommonContactData", "dev.inmo.tgbotapi.abstracts.CommonContactData")) +typealias CommonContactData = dev.inmo.tgbotapi.abstracts.CommonContactData diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonSendInvoiceData.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonSendInvoiceData.kt index 4c7e225ff7..d4af30e79c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonSendInvoiceData.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonSendInvoiceData.kt @@ -1,36 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.payments.abstracts.Currencied -import dev.inmo.tgbotapi.types.payments.abstracts.Priced - -interface CommonSendInvoiceData : Titled, Currencied, Priced { - val description: String - val payload: String - val providerToken: String - val maxTipAmount: Int? - val suggestedTipAmounts: List? - val providerData: String? - val requireName: Boolean - val requirePhoneNumber: Boolean - val requireEmail: Boolean - val requireShippingAddress: Boolean - val shouldSendPhoneNumberToProvider: Boolean - val shouldSendEmailToProvider: Boolean - val priceDependOnShipAddress: Boolean - - val photoUrl: String? - val photoSize: Long? - val photoWidth: Int? - val photoHeight: Int? - - - - fun setPhoto( - photoUrl: String, - photoSize: Long? = null, - photoWidth: Int? = null, - photoHeight: Int? = null - ) - - fun unsetPhoto() -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("CommonSendInvoiceData", "dev.inmo.tgbotapi.abstracts.CommonSendInvoiceData")) +typealias CommonSendInvoiceData = dev.inmo.tgbotapi.abstracts.CommonSendInvoiceData diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonVenueData.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonVenueData.kt index 6a2ac806a7..592f4e2c7d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonVenueData.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/CommonVenueData.kt @@ -1,12 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.* - -interface CommonVenueData : Titled { - override val title: String - val address: String - val foursquareId: FoursquareId? - val foursquareType: FoursquareType? // TODO:: Rewrite with enum or interface - val googlePlaceId: GooglePlaceId? - val googlePlaceType: GooglePlaceType? -} +@Deprecated("Replaced", ReplaceWith("CommonVenueData", "dev.inmo.tgbotapi.abstracts.CommonVenueData")) +typealias CommonVenueData = dev.inmo.tgbotapi.abstracts.CommonVenueData diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/FromUser.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/FromUser.kt index 698f36c45a..efaa1cfcca 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/FromUser.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/FromUser.kt @@ -1,16 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.User - -/** - * Inheritors of this interface have some [User] as a source of data. For example, any [dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery] - * have [User] as the source of that query - */ -interface FromUser : WithUser { - /** - * The source [User] of this type - */ - val from: User - override val user: User - get() = from -} +@Deprecated("Replaced", ReplaceWith("FromUser", "dev.inmo.tgbotapi.abstracts.FromUser")) +typealias FromUser = dev.inmo.tgbotapi.abstracts.FromUser diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Headed.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Headed.kt index 629c19c285..9aa8c2f7e7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Headed.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Headed.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.Degrees - -interface Headed { - val heading: Degrees? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("Headed", "dev.inmo.tgbotapi.abstracts.Headed")) +typealias Headed = dev.inmo.tgbotapi.abstracts.Headed diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/HorizontallyAccured.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/HorizontallyAccured.kt index 6f64e012a1..c27098506b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/HorizontallyAccured.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/HorizontallyAccured.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.Meters - -interface HorizontallyAccured { - val horizontalAccuracy: Meters? -} +@Deprecated("Replaced", ReplaceWith("HorizontallyAccured", "dev.inmo.tgbotapi.abstracts.HorizontallyAccured")) +typealias HorizontallyAccured = dev.inmo.tgbotapi.abstracts.HorizontallyAccured diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Livable.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Livable.kt index 2eef14eea2..3374272245 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Livable.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Livable.kt @@ -1,10 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.Seconds - -interface Livable { - /** - * Period in [Seconds] - */ - val livePeriod: Seconds? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("Livable", "dev.inmo.tgbotapi.abstracts.Livable")) +typealias Livable = dev.inmo.tgbotapi.abstracts.Livable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Locationed.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Locationed.kt index 3e415bfeef..06600ff671 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Locationed.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Locationed.kt @@ -1,6 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -interface Locationed { - val latitude: Double - val longitude: Double -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("Locationed", "dev.inmo.tgbotapi.abstracts.Locationed")) +typealias Locationed = dev.inmo.tgbotapi.abstracts.Locationed diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/MimeTyped.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/MimeTyped.kt index 189c60a938..8f3388745f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/MimeTyped.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/MimeTyped.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.utils.MimeType - -interface MimeTyped { - val mimeType: MimeType? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("MimeTyped", "dev.inmo.tgbotapi.abstracts.MimeTyped")) +typealias MimeTyped = dev.inmo.tgbotapi.abstracts.MimeTyped diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Performerable.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Performerable.kt index c06b741171..b5a1ba3509 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Performerable.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Performerable.kt @@ -1,5 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -interface Performerable { - val performer: String? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("Performerable", "dev.inmo.tgbotapi.abstracts.Performerable")) +typealias Performerable = dev.inmo.tgbotapi.abstracts.Performerable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/ProximityAlertable.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/ProximityAlertable.kt index 413ff99b87..7a9d37e444 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/ProximityAlertable.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/ProximityAlertable.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.Meters - -interface ProximityAlertable { - val proximityAlertRadius: Meters? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("ProximityAlertable", "dev.inmo.tgbotapi.abstracts.ProximityAlertable")) +typealias ProximityAlertable = dev.inmo.tgbotapi.abstracts.ProximityAlertable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Texted.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Texted.kt index d2348af1ac..7d3621a155 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Texted.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Texted.kt @@ -1,29 +1,18 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +@Deprecated("Replaced", ReplaceWith("Texted", "dev.inmo.tgbotapi.abstracts.Texted")) +typealias Texted = dev.inmo.tgbotapi.abstracts.Texted +@Deprecated("Replaced", ReplaceWith("TextedWithTextSources", "dev.inmo.tgbotapi.abstracts.TextedWithTextSources")) +typealias TextedWithTextSources = dev.inmo.tgbotapi.abstracts.TextedWithTextSources -interface Texted { - val text: String? -} -interface TextedWithTextSources : Texted { - /** - * Full list of [TextSource]s - */ - val textSources: List? -} +@Deprecated("Replaced", ReplaceWith("ParsableOutput", "dev.inmo.tgbotapi.abstracts.ParsableOutput")) +typealias ParsableOutput = dev.inmo.tgbotapi.abstracts.ParsableOutput -interface ParsableOutput : Texted { - val parseMode: ParseMode? -} +@Deprecated("Replaced", ReplaceWith("EntitiesOutput", "dev.inmo.tgbotapi.abstracts.EntitiesOutput")) +typealias EntitiesOutput = dev.inmo.tgbotapi.abstracts.EntitiesOutput -interface EntitiesOutput : TextedWithTextSources { - val entities: List? - get() = textSources -} +@Deprecated("Replaced", ReplaceWith("TextedOutput", "dev.inmo.tgbotapi.abstracts.TextedOutput")) +typealias TextedOutput = dev.inmo.tgbotapi.abstracts.TextedOutput -interface TextedOutput : ParsableOutput, EntitiesOutput - -interface TextedInput : TextedWithTextSources { - override val textSources: List -} +@Deprecated("Replaced", ReplaceWith("TextedInput", "dev.inmo.tgbotapi.abstracts.TextedInput")) +typealias TextedInput = dev.inmo.tgbotapi.abstracts.TextedInput diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Titled.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Titled.kt index debf9fd34c..ca20e0005a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Titled.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/Titled.kt @@ -1,5 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -interface Titled { - val title: String? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("Titled", "dev.inmo.tgbotapi.abstracts.Titled")) +typealias Titled = dev.inmo.tgbotapi.abstracts.Titled diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/WithUser.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/WithUser.kt index 765a8d1e13..224ed922c1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/WithUser.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/WithUser.kt @@ -1,12 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts -import dev.inmo.tgbotapi.types.User - -/** - * All inheritors of this type have [User] in their data as one of the main data - * - * @see FromUser - */ -interface WithUser { - val user: User -} +@Deprecated("Replaced", ReplaceWith("WithUser", "dev.inmo.tgbotapi.abstracts.WithUser")) +typealias WithUser = dev.inmo.tgbotapi.abstracts.WithUser diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ChatRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ChatRequest.kt index f314edaceb..4ceeae3844 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ChatRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ChatRequest.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -import dev.inmo.tgbotapi.types.ChatIdentifier - -interface ChatRequest : OptionalChatRequest { - override val chatId: ChatIdentifier -} +@Deprecated("Replaced", ReplaceWith("ChatRequest", "dev.inmo.tgbotapi.abstracts.types.ChatRequest")) +typealias ChatRequest = dev.inmo.tgbotapi.abstracts.types.ChatRequest diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableNotification.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableNotification.kt index 76a5f02333..adfc644e55 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableNotification.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableNotification.kt @@ -1,5 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -interface DisableNotification { - val disableNotification: Boolean -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("DisableNotification", "dev.inmo.tgbotapi.abstracts.types.DisableNotification")) +typealias DisableNotification = dev.inmo.tgbotapi.abstracts.types.DisableNotification diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableWebPagePreview.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableWebPagePreview.kt index baf255c9d5..c990cef83d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableWebPagePreview.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/DisableWebPagePreview.kt @@ -1,5 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -interface DisableWebPagePreview { - val disableWebPagePreview: Boolean? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("DisableWebPagePreview", "dev.inmo.tgbotapi.abstracts.types.DisableWebPagePreview")) +typealias DisableWebPagePreview = dev.inmo.tgbotapi.abstracts.types.DisableWebPagePreview diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/InlineMessageAction.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/InlineMessageAction.kt index 635c3d3f2f..0b327a755d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/InlineMessageAction.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/InlineMessageAction.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -import dev.inmo.tgbotapi.types.InlineMessageIdentifier - -interface InlineMessageAction { - val inlineMessageId: InlineMessageIdentifier -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("InlineMessageAction", "dev.inmo.tgbotapi.abstracts.types.InlineMessageAction")) +typealias InlineMessageAction = dev.inmo.tgbotapi.abstracts.types.InlineMessageAction diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/MessageAction.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/MessageAction.kt index 1dc9d05386..16b237cff5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/MessageAction.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/MessageAction.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -import dev.inmo.tgbotapi.types.MessageIdentifier - -interface MessageAction: ChatRequest { - val messageId: MessageIdentifier -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("MessageAction:", "dev.inmo.tgbotapi.abstracts.types.MessageAction:")) +typealias MessageAction = dev.inmo.tgbotapi.abstracts.types.MessageAction diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/OptionalChatRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/OptionalChatRequest.kt index 42bf118d28..674983e52c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/OptionalChatRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/OptionalChatRequest.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -import dev.inmo.tgbotapi.types.ChatIdentifier - -interface OptionalChatRequest { - val chatId: ChatIdentifier? -} +@Deprecated("Replaced", ReplaceWith("OptionalChatRequest", "dev.inmo.tgbotapi.abstracts.types.OptionalChatRequest")) +typealias OptionalChatRequest = dev.inmo.tgbotapi.abstracts.types.OptionalChatRequest diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ProtectContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ProtectContent.kt index 7bfdbbcc0c..9efa2c7653 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ProtectContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ProtectContent.kt @@ -1,5 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -interface ProtectContent { - val protectContent: Boolean -} +@Deprecated("Replaced", ReplaceWith("ProtectContent", "dev.inmo.tgbotapi.abstracts.types.ProtectContent")) +typealias ProtectContent = dev.inmo.tgbotapi.abstracts.types.ProtectContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMarkup.kt index 54aeae97df..8b373ac5ef 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMarkup.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMarkup.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup - -interface ReplyMarkup { - val replyMarkup: KeyboardMarkup? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("ReplyMarkup", "dev.inmo.tgbotapi.abstracts.types.ReplyMarkup")) +typealias ReplyMarkup = dev.inmo.tgbotapi.abstracts.types.ReplyMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMessageId.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMessageId.kt index 3321882208..661b05f841 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMessageId.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/ReplyMessageId.kt @@ -1,8 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -import dev.inmo.tgbotapi.types.MessageIdentifier - -interface ReplyMessageId { - val replyToMessageId: MessageIdentifier? - val allowSendingWithoutReply: Boolean? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("ReplyMessageId", "dev.inmo.tgbotapi.abstracts.types.ReplyMessageId")) +typealias ReplyMessageId = dev.inmo.tgbotapi.abstracts.types.ReplyMessageId diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/UntilDate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/UntilDate.kt index 515e56159a..317d8988b8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/UntilDate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/CommonAbstracts/types/UntilDate.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.CommonAbstracts.types -import dev.inmo.tgbotapi.types.TelegramDate - -interface UntilDate { - val untilDate: TelegramDate? -} \ No newline at end of file +@Deprecated("Replaced", ReplaceWith("UntilDate", "dev.inmo.tgbotapi.abstracts.types.UntilDate")) +typealias UntilDate = dev.inmo.tgbotapi.abstracts.types.UntilDate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonContactData.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonContactData.kt new file mode 100644 index 0000000000..b48d29d120 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonContactData.kt @@ -0,0 +1,8 @@ +package dev.inmo.tgbotapi.abstracts + +interface CommonContactData { + val phoneNumber: String + val firstName: String + val lastName: String? + val vcard: String? // TODO:: Replace by some vCard abstraction +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonSendInvoiceData.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonSendInvoiceData.kt new file mode 100644 index 0000000000..14c1f8ea76 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonSendInvoiceData.kt @@ -0,0 +1,36 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.payments.abstracts.Currencied +import dev.inmo.tgbotapi.types.payments.abstracts.Priced + +interface CommonSendInvoiceData : Titled, Currencied, Priced { + val description: String + val payload: String + val providerToken: String + val maxTipAmount: Int? + val suggestedTipAmounts: List? + val providerData: String? + val requireName: Boolean + val requirePhoneNumber: Boolean + val requireEmail: Boolean + val requireShippingAddress: Boolean + val shouldSendPhoneNumberToProvider: Boolean + val shouldSendEmailToProvider: Boolean + val priceDependOnShipAddress: Boolean + + val photoUrl: String? + val photoSize: Long? + val photoWidth: Int? + val photoHeight: Int? + + + + fun setPhoto( + photoUrl: String, + photoSize: Long? = null, + photoWidth: Int? = null, + photoHeight: Int? = null + ) + + fun unsetPhoto() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonVenueData.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonVenueData.kt new file mode 100644 index 0000000000..ba2d99445c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonVenueData.kt @@ -0,0 +1,12 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.* + +interface CommonVenueData : Titled { + override val title: String + val address: String + val foursquareId: FoursquareId? + val foursquareType: FoursquareType? // TODO:: Rewrite with enum or interface + val googlePlaceId: GooglePlaceId? + val googlePlaceType: GooglePlaceType? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/FromUser.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/FromUser.kt new file mode 100644 index 0000000000..aae284a45e --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/FromUser.kt @@ -0,0 +1,16 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.chat.User + +/** + * Inheritors of this interface have some [User] as a source of data. For example, any [dev.inmo.tgbotapi.types.queries.callback.CallbackQuery] + * have [User] as the source of that query + */ +interface FromUser : WithUser { + /** + * The source [User] of this type + */ + val from: User + override val user: User + get() = from +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Headed.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Headed.kt new file mode 100644 index 0000000000..e82f91b0fa --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Headed.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.Degrees + +interface Headed { + val heading: Degrees? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/HorizontallyAccured.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/HorizontallyAccured.kt new file mode 100644 index 0000000000..2cee04ce98 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/HorizontallyAccured.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.Meters + +interface HorizontallyAccured { + val horizontalAccuracy: Meters? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Livable.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Livable.kt new file mode 100644 index 0000000000..84f1f6061c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Livable.kt @@ -0,0 +1,10 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.Seconds + +interface Livable { + /** + * Period in [Seconds] + */ + val livePeriod: Seconds? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Locationed.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Locationed.kt new file mode 100644 index 0000000000..35ae26c017 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Locationed.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.abstracts + +interface Locationed { + val latitude: Double + val longitude: Double +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/MimeTyped.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/MimeTyped.kt new file mode 100644 index 0000000000..b45eaa4feb --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/MimeTyped.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.utils.MimeType + +interface MimeTyped { + val mimeType: MimeType? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Performerable.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Performerable.kt new file mode 100644 index 0000000000..8fc868bf5a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Performerable.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.abstracts + +interface Performerable { + val performer: String? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/ProximityAlertable.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/ProximityAlertable.kt new file mode 100644 index 0000000000..33150bf633 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/ProximityAlertable.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.Meters + +interface ProximityAlertable { + val proximityAlertRadius: Meters? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Texted.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Texted.kt new file mode 100644 index 0000000000..e2351b5994 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Texted.kt @@ -0,0 +1,29 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.ParseMode + +interface Texted { + val text: String? +} +interface TextedWithTextSources : Texted { + /** + * Full list of [TextSource]s + */ + val textSources: List? +} + +interface ParsableOutput : Texted { + val parseMode: ParseMode? +} + +interface EntitiesOutput : TextedWithTextSources { + val entities: List? + get() = textSources +} + +interface TextedOutput : ParsableOutput, EntitiesOutput + +interface TextedInput : TextedWithTextSources { + override val textSources: List +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Titled.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Titled.kt new file mode 100644 index 0000000000..9b176b457a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/Titled.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.abstracts + +interface Titled { + val title: String? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/WithUser.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/WithUser.kt new file mode 100644 index 0000000000..6aeb8100b7 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/WithUser.kt @@ -0,0 +1,12 @@ +package dev.inmo.tgbotapi.abstracts + +import dev.inmo.tgbotapi.types.chat.User + +/** + * All inheritors of this type have [User] in their data as one of the main data + * + * @see FromUser + */ +interface WithUser { + val user: User +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ChatRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ChatRequest.kt new file mode 100644 index 0000000000..f4d5402b90 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ChatRequest.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.ChatIdentifier + +interface ChatRequest : OptionalChatRequest { + override val chatId: ChatIdentifier +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/DisableNotification.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/DisableNotification.kt new file mode 100644 index 0000000000..6c5e697a3e --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/DisableNotification.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.abstracts.types + +interface DisableNotification { + val disableNotification: Boolean +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/DisableWebPagePreview.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/DisableWebPagePreview.kt new file mode 100644 index 0000000000..2cb37e84a8 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/DisableWebPagePreview.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.abstracts.types + +interface DisableWebPagePreview { + val disableWebPagePreview: Boolean? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/InlineMessageAction.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/InlineMessageAction.kt new file mode 100644 index 0000000000..1ec70d8a80 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/InlineMessageAction.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.InlineMessageIdentifier + +interface InlineMessageAction { + val inlineMessageId: InlineMessageIdentifier +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/MessageAction.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/MessageAction.kt new file mode 100644 index 0000000000..1b1c37bfd4 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/MessageAction.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.MessageIdentifier + +interface MessageAction: ChatRequest { + val messageId: MessageIdentifier +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/OptionalChatRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/OptionalChatRequest.kt new file mode 100644 index 0000000000..0945b9f660 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/OptionalChatRequest.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.ChatIdentifier + +interface OptionalChatRequest { + val chatId: ChatIdentifier? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ProtectContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ProtectContent.kt new file mode 100644 index 0000000000..a2de07c075 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ProtectContent.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.abstracts.types + +interface ProtectContent { + val protectContent: Boolean +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ReplyMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ReplyMarkup.kt new file mode 100644 index 0000000000..dce59184d8 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ReplyMarkup.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup + +interface ReplyMarkup { + val replyMarkup: KeyboardMarkup? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ReplyMessageId.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ReplyMessageId.kt new file mode 100644 index 0000000000..3db8ae697f --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ReplyMessageId.kt @@ -0,0 +1,8 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.MessageIdentifier + +interface ReplyMessageId { + val replyToMessageId: MessageIdentifier? + val allowSendingWithoutReply: Boolean? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/UntilDate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/UntilDate.kt new file mode 100644 index 0000000000..cafc852e5f --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/UntilDate.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.TelegramDate + +interface UntilDate { + val untilDate: TelegramDate? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorCallFactory.kt index 10d89d744c..27bfcd91a4 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorCallFactory.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorCallFactory.kt @@ -1,16 +1,4 @@ package dev.inmo.tgbotapi.bot.Ktor -import dev.inmo.micro_utils.common.Optional -import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper -import io.ktor.client.HttpClient -import kotlinx.serialization.json.Json - -interface KtorCallFactory { - suspend fun makeCall( - client: HttpClient, - urlsKeeper: TelegramAPIUrlsKeeper, - request: Request, - jsonFormatter: Json - ): T? -} +@Deprecated("Replaced", ReplaceWith("KtorCallFactory", "dev.inmo.tgbotapi.bot.ktor.KtorCallFactory")) +typealias KtorCallFactory = dev.inmo.tgbotapi.bot.ktor.KtorCallFactory diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorRequestsExecutor.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorRequestsExecutor.kt index dda3e97fde..a0ffdf6d3c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorRequestsExecutor.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/KtorRequestsExecutor.kt @@ -1,127 +1,29 @@ package dev.inmo.tgbotapi.bot.Ktor -import dev.inmo.micro_utils.coroutines.safely -import dev.inmo.tgbotapi.bot.BaseRequestsExecutor -import dev.inmo.tgbotapi.bot.Ktor.base.* import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.bot.exceptions.newRequestException -import dev.inmo.tgbotapi.bot.ktor.KtorPipelineStepsHolder -import dev.inmo.tgbotapi.bot.settings.limiters.ExceptionsOnlyLimiter -import dev.inmo.tgbotapi.bot.settings.limiters.RequestLimiter -import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.Response import dev.inmo.tgbotapi.utils.* -import io.ktor.client.HttpClient -import io.ktor.client.features.* -import io.ktor.client.statement.readText -import kotlinx.serialization.json.Json @RiskFeature -fun createTelegramBotDefaultKtorCallRequestsFactories() = listOf( - SimpleRequestCallFactory(), - MultipartRequestCallFactory(), - DownloadFileRequestCallFactory, - DownloadFileChannelRequestCallFactory -) +@Deprecated("Replaced", ReplaceWith("createTelegramBotDefaultKtorCallRequestsFactories", "dev.inmo.tgbotapi.bot.ktor.createTelegramBotDefaultKtorCallRequestsFactories")) +fun createTelegramBotDefaultKtorCallRequestsFactories() = dev.inmo.tgbotapi.bot.ktor.createTelegramBotDefaultKtorCallRequestsFactories() -class KtorRequestsExecutor( - telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, - client: HttpClient = HttpClient(), - callsFactories: List = emptyList(), - excludeDefaultFactories: Boolean = false, - private val requestsLimiter: RequestLimiter = ExceptionsOnlyLimiter(), - private val jsonFormatter: Json = nonstrictJsonFormat, - private val pipelineStepsHolder: KtorPipelineStepsHolder = KtorPipelineStepsHolder -) : BaseRequestsExecutor(telegramAPIUrlsKeeper) { - private val callsFactories: List = callsFactories.run { - if (!excludeDefaultFactories) { - this + createTelegramBotDefaultKtorCallRequestsFactories() - } else { - this - } - } +@Deprecated("Replaced", ReplaceWith("KtorRequestsExecutor", "dev.inmo.tgbotapi.bot.ktor.KtorRequestsExecutor")) +typealias KtorRequestsExecutor = dev.inmo.tgbotapi.bot.ktor.KtorRequestsExecutor - private val client = client.config { - if (client.feature(HttpTimeout) == null) { - install(HttpTimeout) - } - } - - override suspend fun execute(request: Request): T { - return runCatching { - safely( - { e -> - pipelineStepsHolder.onRequestException(request, e) ?.let { return@safely it } - - throw if (e is ClientRequestException) { - val content = e.response.readText() - val responseObject = jsonFormatter.decodeFromString(Response.serializer(), content) - newRequestException( - responseObject, - content, - "Can't get result object from $content" - ) - } else { - e - } - - } - ) { - pipelineStepsHolder.onBeforeSearchCallFactory(request, callsFactories) - requestsLimiter.limit { - var result: T? = null - lateinit var factoryHandledRequest: KtorCallFactory - for (potentialFactory in callsFactories) { - pipelineStepsHolder.onBeforeCallFactoryMakeCall(request, potentialFactory) - result = potentialFactory.makeCall( - client, - telegramAPIUrlsKeeper, - request, - jsonFormatter - ) - result = pipelineStepsHolder.onAfterCallFactoryMakeCall(result, request, potentialFactory) - if (result != null) { - factoryHandledRequest = potentialFactory - break - } - } - - result ?.let { - pipelineStepsHolder.onRequestResultPresented(it, request, factoryHandledRequest, callsFactories) - } ?: pipelineStepsHolder.onRequestResultAbsent(request, callsFactories) ?: error("Can't execute request: $request") - } - } - }.let { - pipelineStepsHolder.onRequestReturnResult(it, request, callsFactories) - } - } - - override fun close() { - client.close() - } -} - -class KtorRequestsExecutorBuilder( - var telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper -) { - var client: HttpClient = HttpClient() - var callsFactories: List = emptyList() - var excludeDefaultFactories: Boolean = false - var requestsLimiter: RequestLimiter = ExceptionsOnlyLimiter() - var jsonFormatter: Json = nonstrictJsonFormat - - fun build() = KtorRequestsExecutor(telegramAPIUrlsKeeper, client, callsFactories, excludeDefaultFactories, requestsLimiter, jsonFormatter) -} +@Deprecated("Replaced", ReplaceWith("KtorRequestsExecutorBuilder", "dev.inmo.tgbotapi.bot.ktor.KtorRequestsExecutorBuilder")) +typealias KtorRequestsExecutorBuilder = dev.inmo.tgbotapi.bot.ktor.KtorRequestsExecutorBuilder +@Deprecated("telegramBot", ReplaceWith("createTelegramBotDefaultKtorCallRequestsFactories", "dev.inmo.tgbotapi.bot.ktor.telegramBot")) inline fun telegramBot( telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, builder: KtorRequestsExecutorBuilder.() -> Unit = {} -): TelegramBot = KtorRequestsExecutorBuilder(telegramAPIUrlsKeeper).apply(builder).build() +): TelegramBot = dev.inmo.tgbotapi.bot.ktor.telegramBot(telegramAPIUrlsKeeper, builder) /** * Shortcut for [telegramBot] */ @Suppress("NOTHING_TO_INLINE") +@Deprecated("telegramBot", ReplaceWith("createTelegramBotDefaultKtorCallRequestsFactories", "dev.inmo.tgbotapi.bot.ktor.telegramBot")) inline fun telegramBot( token: String, apiUrl: String = telegramBotAPIDefaultUrl, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/AbstractRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/AbstractRequestCallFactory.kt index e62250f706..370bc110e7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/AbstractRequestCallFactory.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/AbstractRequestCallFactory.kt @@ -1,80 +1,6 @@ package dev.inmo.tgbotapi.bot.Ktor.base -import dev.inmo.micro_utils.coroutines.safely -import dev.inmo.micro_utils.coroutines.safelyWithResult -import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory -import dev.inmo.tgbotapi.bot.exceptions.newRequestException -import dev.inmo.tgbotapi.requests.GetUpdates -import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.Response -import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper -import io.ktor.client.HttpClient -import io.ktor.client.call.receive -import io.ktor.client.features.timeout -import io.ktor.client.request.* -import io.ktor.client.statement.HttpResponse -import io.ktor.http.ContentType -import kotlinx.serialization.json.Json -import kotlin.collections.set +var defaultUpdateTimeoutForZeroDelay = dev.inmo.tgbotapi.bot.ktor.base.defaultUpdateTimeoutForZeroDelay -var defaultUpdateTimeoutForZeroDelay = 1000L - -abstract class AbstractRequestCallFactory : KtorCallFactory { - private val methodsCache: MutableMap = mutableMapOf() - override suspend fun makeCall( - client: HttpClient, - urlsKeeper: TelegramAPIUrlsKeeper, - request: Request, - jsonFormatter: Json - ): T? { - val preparedBody = prepareCallBody(client, urlsKeeper, request) ?: return null - - client.post { - url( - methodsCache[request.method()] ?: "${urlsKeeper.commonAPIUrl}/${request.method()}".also { - methodsCache[request.method()] = it - } - ) - accept(ContentType.Application.Json) - - if (request is GetUpdates) { - request.timeout?.times(1000L)?.let { customTimeoutMillis -> - if (customTimeoutMillis > 0) { - timeout { - requestTimeoutMillis = customTimeoutMillis - socketTimeoutMillis = customTimeoutMillis - } - } else { - timeout { - requestTimeoutMillis = defaultUpdateTimeoutForZeroDelay - socketTimeoutMillis = defaultUpdateTimeoutForZeroDelay - } - } - } - } - - body = preparedBody - }.let { response -> - val content = response.receive() - val responseObject = jsonFormatter.decodeFromString(Response.serializer(), content) - - return safelyWithResult { - (responseObject.result?.let { - jsonFormatter.decodeFromJsonElement(request.resultDeserializer, it) - } ?: response.let { - throw newRequestException( - responseObject, - content, - "Can't get result object from $content" - ) - }) - }.getOrThrow() - } - } - - protected abstract fun prepareCallBody( - client: HttpClient, - urlsKeeper: TelegramAPIUrlsKeeper, - request: Request - ): Any? -} +@Deprecated("Replaced", ReplaceWith("AbstractRequestCallFactory", "dev.inmo.tgbotapi.bot.ktor.base.AbstractRequestCallFactory")) +typealias AbstractRequestCallFactory = dev.inmo.tgbotapi.bot.ktor.base.AbstractRequestCallFactory diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileChannelRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileChannelRequestCallFactory.kt index 46cf0c1aec..56534bc0ad 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileChannelRequestCallFactory.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileChannelRequestCallFactory.kt @@ -1,42 +1,4 @@ package dev.inmo.tgbotapi.bot.Ktor.base -import dev.inmo.micro_utils.coroutines.* -import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory -import dev.inmo.tgbotapi.requests.DownloadFileStream -import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.utils.ByteReadChannelAllocator -import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper -import io.ktor.client.HttpClient -import io.ktor.client.call.receive -import io.ktor.client.request.get -import io.ktor.client.statement.HttpStatement -import io.ktor.utils.io.* -import kotlinx.coroutines.* -import kotlinx.serialization.json.Json -import kotlin.coroutines.coroutineContext - -object DownloadFileChannelRequestCallFactory : KtorCallFactory { - override suspend fun makeCall( - client: HttpClient, - urlsKeeper: TelegramAPIUrlsKeeper, - request: Request, - jsonFormatter: Json - ): T? = (request as? DownloadFileStream) ?.let { - val fullUrl = urlsKeeper.createFileLinkUrl(it.filePath) - - ByteReadChannelAllocator { - val scope = CoroutineScope(currentCoroutineContext() + SupervisorJob()) - val outChannel = ByteChannel() - scope.launch { - runCatchingSafely { - client.get(fullUrl).execute { httpResponse -> - val channel: ByteReadChannel = httpResponse.receive() - channel.copyAndClose(outChannel) - } - } - scope.cancel() - } - outChannel - } as T - } -} +@Deprecated("Replaced", ReplaceWith("DownloadFileChannelRequestCallFactory", "dev.inmo.tgbotapi.bot.ktor.base.DownloadFileRequestCallFactory")) +typealias DownloadFileChannelRequestCallFactory = dev.inmo.tgbotapi.bot.ktor.base.DownloadFileRequestCallFactory diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileRequestCallFactory.kt index bf8e3687d9..5eabacad94 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileRequestCallFactory.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/DownloadFileRequestCallFactory.kt @@ -1,26 +1,4 @@ package dev.inmo.tgbotapi.bot.Ktor.base -import dev.inmo.micro_utils.coroutines.safely -import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory -import dev.inmo.tgbotapi.requests.DownloadFile -import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper -import io.ktor.client.HttpClient -import io.ktor.client.request.get -import kotlinx.serialization.json.Json - -object DownloadFileRequestCallFactory : KtorCallFactory { - override suspend fun makeCall( - client: HttpClient, - urlsKeeper: TelegramAPIUrlsKeeper, - request: Request, - jsonFormatter: Json - ): T? = (request as? DownloadFile) ?.let { - val fullUrl = urlsKeeper.createFileLinkUrl(it.filePath) - - safely { - @Suppress("UNCHECKED_CAST") - client.get(fullUrl) as T // always ByteArray - } - } -} +@Deprecated("Replaced", ReplaceWith("DownloadFileRequestCallFactory", "dev.inmo.tgbotapi.bot.ktor.base.DownloadFileRequestCallFactory")) +typealias DownloadFileRequestCallFactory = dev.inmo.tgbotapi.bot.ktor.base.DownloadFileRequestCallFactory diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/MultipartRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/MultipartRequestCallFactory.kt index feb0daeb65..bc55fc3fd3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/MultipartRequestCallFactory.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/MultipartRequestCallFactory.kt @@ -1,38 +1,4 @@ package dev.inmo.tgbotapi.bot.Ktor.base -import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory -import dev.inmo.tgbotapi.requests.abstracts.* -import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper -import dev.inmo.tgbotapi.utils.mapWithCommonValues -import io.ktor.client.HttpClient -import io.ktor.client.request.forms.MultiPartFormDataContent -import io.ktor.client.request.forms.formData -import io.ktor.http.Headers -import io.ktor.http.HttpHeaders - -class MultipartRequestCallFactory : AbstractRequestCallFactory() { - override fun prepareCallBody( - client: HttpClient, - urlsKeeper: TelegramAPIUrlsKeeper, - request: Request - ): Any? = (request as? MultipartRequest) ?.let { castedRequest -> - MultiPartFormDataContent( - formData { - val params = castedRequest.paramsJson.mapWithCommonValues() - for ((key, value) in castedRequest.mediaMap + params) { - when (value) { - is MultipartFile -> appendInput( - key, - Headers.build { - append(HttpHeaders.ContentDisposition, "filename=${value.filename}") - }, - block = value.file::input - ) - is FileId -> append(key, value.fileId) - else -> append(key, value.toString()) - } - } - } - ) - } -} +@Deprecated("Replaced", ReplaceWith("MultipartRequestCallFactory", "dev.inmo.tgbotapi.bot.ktor.base.MultipartRequestCallFactory")) +typealias MultipartRequestCallFactory = dev.inmo.tgbotapi.bot.ktor.base.MultipartRequestCallFactory diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/SimpleRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/SimpleRequestCallFactory.kt index e774819815..56195671e8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/SimpleRequestCallFactory.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/Ktor/base/SimpleRequestCallFactory.kt @@ -1,23 +1,4 @@ package dev.inmo.tgbotapi.bot.Ktor.base -import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory -import dev.inmo.tgbotapi.requests.abstracts.* -import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper -import io.ktor.client.HttpClient -import io.ktor.http.ContentType -import io.ktor.http.content.TextContent - -class SimpleRequestCallFactory : AbstractRequestCallFactory() { - override fun prepareCallBody( - client: HttpClient, - urlsKeeper: TelegramAPIUrlsKeeper, - request: Request - ): Any? = (request as? SimpleRequest) ?.let { _ -> - val content = request.json().toString() - - TextContent( - content, - ContentType.Application.Json - ) - } -} +@Deprecated("Replaced", ReplaceWith("SimpleRequestCallFactory", "dev.inmo.tgbotapi.bot.ktor.base.SimpleRequestCallFactory")) +typealias SimpleRequestCallFactory = dev.inmo.tgbotapi.bot.ktor.base.SimpleRequestCallFactory diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorCallFactory.kt new file mode 100644 index 0000000000..5df7001649 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorCallFactory.kt @@ -0,0 +1,15 @@ +package dev.inmo.tgbotapi.bot.ktor + +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper +import io.ktor.client.HttpClient +import kotlinx.serialization.json.Json + +interface KtorCallFactory { + suspend fun makeCall( + client: HttpClient, + urlsKeeper: TelegramAPIUrlsKeeper, + request: Request, + jsonFormatter: Json + ): T? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorPipelineStepsHolder.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorPipelineStepsHolder.kt index 725a2a8bc6..84fd53fca8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorPipelineStepsHolder.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorPipelineStepsHolder.kt @@ -1,6 +1,5 @@ package dev.inmo.tgbotapi.bot.ktor -import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory import dev.inmo.tgbotapi.requests.abstracts.Request interface KtorPipelineStepsHolder { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorRequestsExecutor.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorRequestsExecutor.kt new file mode 100644 index 0000000000..45ed64fc02 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/KtorRequestsExecutor.kt @@ -0,0 +1,130 @@ +package dev.inmo.tgbotapi.bot.ktor + +import dev.inmo.micro_utils.coroutines.safely +import dev.inmo.tgbotapi.bot.BaseRequestsExecutor +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.bot.exceptions.newRequestException +import dev.inmo.tgbotapi.bot.ktor.base.* +import dev.inmo.tgbotapi.bot.settings.limiters.ExceptionsOnlyLimiter +import dev.inmo.tgbotapi.bot.settings.limiters.RequestLimiter +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.Response +import dev.inmo.tgbotapi.utils.* +import io.ktor.client.HttpClient +import io.ktor.client.plugins.* +import io.ktor.client.statement.bodyAsText +import io.ktor.client.statement.readText +import kotlinx.serialization.json.Json + +@RiskFeature +fun createTelegramBotDefaultKtorCallRequestsFactories() = listOf( + SimpleRequestCallFactory(), + MultipartRequestCallFactory(), + DownloadFileRequestCallFactory, + DownloadFileChannelRequestCallFactory +) + +class KtorRequestsExecutor( + telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, + client: HttpClient = HttpClient(), + callsFactories: List = emptyList(), + excludeDefaultFactories: Boolean = false, + private val requestsLimiter: RequestLimiter = ExceptionsOnlyLimiter(), + private val jsonFormatter: Json = nonstrictJsonFormat, + private val pipelineStepsHolder: KtorPipelineStepsHolder = KtorPipelineStepsHolder +) : BaseRequestsExecutor(telegramAPIUrlsKeeper) { + private val callsFactories: List = callsFactories.run { + if (!excludeDefaultFactories) { + this + createTelegramBotDefaultKtorCallRequestsFactories() + } else { + this + } + } + + private val client = client.config { + if (client.pluginOrNull(HttpTimeout) == null) { + install(HttpTimeout) + } + } + + override suspend fun execute(request: Request): T { + return runCatching { + safely( + { e -> + pipelineStepsHolder.onRequestException(request, e) ?.let { return@safely it } + + throw if (e is ClientRequestException) { + val content = e.response.bodyAsText() + val responseObject = jsonFormatter.decodeFromString(Response.serializer(), content) + newRequestException( + responseObject, + content, + "Can't get result object from $content" + ) + } else { + e + } + + } + ) { + pipelineStepsHolder.onBeforeSearchCallFactory(request, callsFactories) + requestsLimiter.limit { + var result: T? = null + lateinit var factoryHandledRequest: KtorCallFactory + for (potentialFactory in callsFactories) { + pipelineStepsHolder.onBeforeCallFactoryMakeCall(request, potentialFactory) + result = potentialFactory.makeCall( + client, + telegramAPIUrlsKeeper, + request, + jsonFormatter + ) + result = pipelineStepsHolder.onAfterCallFactoryMakeCall(result, request, potentialFactory) + if (result != null) { + factoryHandledRequest = potentialFactory + break + } + } + + result ?.let { + pipelineStepsHolder.onRequestResultPresented(it, request, factoryHandledRequest, callsFactories) + } ?: pipelineStepsHolder.onRequestResultAbsent(request, callsFactories) ?: error("Can't execute request: $request") + } + } + }.let { + pipelineStepsHolder.onRequestReturnResult(it, request, callsFactories) + } + } + + override fun close() { + client.close() + } +} + +class KtorRequestsExecutorBuilder( + var telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper +) { + var client: HttpClient = HttpClient() + var callsFactories: List = emptyList() + var excludeDefaultFactories: Boolean = false + var requestsLimiter: RequestLimiter = ExceptionsOnlyLimiter() + var jsonFormatter: Json = nonstrictJsonFormat + + fun build() = KtorRequestsExecutor(telegramAPIUrlsKeeper, client, callsFactories, excludeDefaultFactories, requestsLimiter, jsonFormatter) +} + +inline fun telegramBot( + telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, + builder: KtorRequestsExecutorBuilder.() -> Unit = {} +): TelegramBot = KtorRequestsExecutorBuilder(telegramAPIUrlsKeeper).apply(builder).build() + +/** + * Shortcut for [telegramBot] + */ +@Suppress("NOTHING_TO_INLINE") +inline fun telegramBot( + token: String, + apiUrl: String = telegramBotAPIDefaultUrl, + testServer: Boolean = false, + builder: KtorRequestsExecutorBuilder.() -> Unit = {} +): TelegramBot = telegramBot(TelegramAPIUrlsKeeper(token, testServer, apiUrl), builder) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/AbstractRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/AbstractRequestCallFactory.kt new file mode 100644 index 0000000000..f4e049703e --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/AbstractRequestCallFactory.kt @@ -0,0 +1,78 @@ +package dev.inmo.tgbotapi.bot.ktor.base + +import dev.inmo.micro_utils.coroutines.safelyWithResult +import dev.inmo.tgbotapi.bot.ktor.KtorCallFactory +import dev.inmo.tgbotapi.bot.exceptions.newRequestException +import dev.inmo.tgbotapi.requests.GetUpdates +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.Response +import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper +import io.ktor.client.HttpClient +import io.ktor.client.plugins.timeout +import io.ktor.client.request.* +import io.ktor.client.statement.bodyAsText +import io.ktor.http.ContentType +import kotlinx.serialization.json.Json +import kotlin.collections.set + +var defaultUpdateTimeoutForZeroDelay = 1000L + +abstract class AbstractRequestCallFactory : KtorCallFactory { + private val methodsCache: MutableMap = mutableMapOf() + override suspend fun makeCall( + client: HttpClient, + urlsKeeper: TelegramAPIUrlsKeeper, + request: Request, + jsonFormatter: Json + ): T? { + val preparedBody = prepareCallBody(client, urlsKeeper, request) ?: return null + + client.post { + url( + methodsCache[request.method()] ?: "${urlsKeeper.commonAPIUrl}/${request.method()}".also { + methodsCache[request.method()] = it + } + ) + accept(ContentType.Application.Json) + + if (request is GetUpdates) { + request.timeout?.times(1000L) ?.let { customTimeoutMillis -> + if (customTimeoutMillis > 0) { + timeout { + requestTimeoutMillis = customTimeoutMillis + socketTimeoutMillis = customTimeoutMillis + } + } else { + timeout { + requestTimeoutMillis = defaultUpdateTimeoutForZeroDelay + socketTimeoutMillis = defaultUpdateTimeoutForZeroDelay + } + } + } + } + + setBody(preparedBody) + }.let { response -> + val content = response.bodyAsText() + val responseObject = jsonFormatter.decodeFromString(Response.serializer(), content) + + return safelyWithResult { + (responseObject.result?.let { + jsonFormatter.decodeFromJsonElement(request.resultDeserializer, it) + } ?: response.let { + throw newRequestException( + responseObject, + content, + "Can't get result object from $content" + ) + }) + }.getOrThrow() + } + } + + protected abstract fun prepareCallBody( + client: HttpClient, + urlsKeeper: TelegramAPIUrlsKeeper, + request: Request + ): Any? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileChannelRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileChannelRequestCallFactory.kt new file mode 100644 index 0000000000..d1b9458173 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileChannelRequestCallFactory.kt @@ -0,0 +1,41 @@ +package dev.inmo.tgbotapi.bot.ktor.base + +import dev.inmo.micro_utils.coroutines.* +import dev.inmo.tgbotapi.bot.ktor.KtorCallFactory +import dev.inmo.tgbotapi.requests.DownloadFileStream +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.utils.ByteReadChannelAllocator +import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper +import io.ktor.client.HttpClient +import io.ktor.client.call.receive +import io.ktor.client.request.get +import io.ktor.client.statement.HttpStatement +import io.ktor.client.statement.bodyAsChannel +import io.ktor.utils.io.* +import kotlinx.coroutines.* +import kotlinx.serialization.json.Json + +object DownloadFileChannelRequestCallFactory : KtorCallFactory { + override suspend fun makeCall( + client: HttpClient, + urlsKeeper: TelegramAPIUrlsKeeper, + request: Request, + jsonFormatter: Json + ): T? = (request as? DownloadFileStream) ?.let { + val fullUrl = urlsKeeper.createFileLinkUrl(it.filePath) + + ByteReadChannelAllocator { + val scope = CoroutineScope(currentCoroutineContext() + SupervisorJob()) + val outChannel = ByteChannel() + scope.launch { + runCatchingSafely { + val response = client.get(fullUrl) + val channel: ByteReadChannel = response.bodyAsChannel() + channel.copyAndClose(outChannel) + } + scope.cancel() + } + outChannel + } as T + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileRequestCallFactory.kt new file mode 100644 index 0000000000..323b7b12fe --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileRequestCallFactory.kt @@ -0,0 +1,27 @@ +package dev.inmo.tgbotapi.bot.ktor.base + +import dev.inmo.micro_utils.coroutines.safely +import dev.inmo.tgbotapi.bot.ktor.KtorCallFactory +import dev.inmo.tgbotapi.requests.DownloadFile +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper +import io.ktor.client.HttpClient +import io.ktor.client.request.get +import io.ktor.client.statement.readBytes +import kotlinx.serialization.json.Json + +object DownloadFileRequestCallFactory : KtorCallFactory { + override suspend fun makeCall( + client: HttpClient, + urlsKeeper: TelegramAPIUrlsKeeper, + request: Request, + jsonFormatter: Json + ): T? = (request as? DownloadFile) ?.let { + val fullUrl = urlsKeeper.createFileLinkUrl(it.filePath) + + safely { + @Suppress("UNCHECKED_CAST") + client.get(fullUrl).readBytes() as T // always ByteArray + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/MultipartRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/MultipartRequestCallFactory.kt new file mode 100644 index 0000000000..f52a9e87b3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/MultipartRequestCallFactory.kt @@ -0,0 +1,37 @@ +package dev.inmo.tgbotapi.bot.ktor.base + +import dev.inmo.tgbotapi.requests.abstracts.* +import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper +import dev.inmo.tgbotapi.utils.mapWithCommonValues +import io.ktor.client.HttpClient +import io.ktor.client.request.forms.MultiPartFormDataContent +import io.ktor.client.request.forms.formData +import io.ktor.http.Headers +import io.ktor.http.HttpHeaders + +class MultipartRequestCallFactory : AbstractRequestCallFactory() { + override fun prepareCallBody( + client: HttpClient, + urlsKeeper: TelegramAPIUrlsKeeper, + request: Request + ): Any? = (request as? MultipartRequest) ?.let { castedRequest -> + MultiPartFormDataContent( + formData { + val params = castedRequest.paramsJson.mapWithCommonValues() + for ((key, value) in castedRequest.mediaMap + params) { + when (value) { + is MultipartFile -> appendInput( + key, + Headers.build { + append(HttpHeaders.ContentDisposition, "filename=${value.filename}") + }, + block = value::input + ) + is FileId -> append(key, value.fileId) + else -> append(key, value.toString()) + } + } + } + ) + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/SimpleRequestCallFactory.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/SimpleRequestCallFactory.kt new file mode 100644 index 0000000000..686d1df365 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/SimpleRequestCallFactory.kt @@ -0,0 +1,22 @@ +package dev.inmo.tgbotapi.bot.ktor.base + +import dev.inmo.tgbotapi.requests.abstracts.* +import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper +import io.ktor.client.HttpClient +import io.ktor.http.ContentType +import io.ktor.http.content.TextContent + +class SimpleRequestCallFactory : AbstractRequestCallFactory() { + override fun prepareCallBody( + client: HttpClient, + urlsKeeper: TelegramAPIUrlsKeeper, + request: Request + ): Any? = (request as? SimpleRequest) ?.let { _ -> + val content = request.json().toString() + + TextContent( + content, + ContentType.Application.Json + ) + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/multiserver/SimpleMultiServerRequestsExecutor.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/multiserver/SimpleMultiServerRequestsExecutor.kt index 1dd4e28076..bed97ffbed 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/multiserver/SimpleMultiServerRequestsExecutor.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/multiserver/SimpleMultiServerRequestsExecutor.kt @@ -1,12 +1,11 @@ package dev.inmo.tgbotapi.bot.multiserver -import dev.inmo.tgbotapi.bot.Ktor.KtorRequestsExecutorBuilder -import dev.inmo.tgbotapi.bot.Ktor.telegramBot +import dev.inmo.tgbotapi.bot.ktor.KtorRequestsExecutorBuilder +import dev.inmo.tgbotapi.bot.ktor.telegramBot import dev.inmo.tgbotapi.bot.RequestsExecutor import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper -import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl import kotlinx.coroutines.* import kotlin.js.JsName import kotlin.jvm.JvmName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/settings/limiters/ExceptionsOnlyLimiter.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/settings/limiters/ExceptionsOnlyLimiter.kt index b3193160f0..723e88fd2e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/settings/limiters/ExceptionsOnlyLimiter.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/settings/limiters/ExceptionsOnlyLimiter.kt @@ -4,7 +4,7 @@ import dev.inmo.micro_utils.coroutines.safely import dev.inmo.tgbotapi.bot.exceptions.TooMuchRequestsException import dev.inmo.tgbotapi.types.MilliSeconds import dev.inmo.tgbotapi.types.RetryAfterError -import io.ktor.client.features.ClientRequestException +import io.ktor.client.plugins.ClientRequestException import io.ktor.http.HttpStatusCode import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/DeleteMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/DeleteMessage.kt index aab60bae65..27fdefa014 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/DeleteMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/DeleteMessage.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests -import dev.inmo.tgbotapi.CommonAbstracts.types.MessageAction +import dev.inmo.tgbotapi.abstracts.types.MessageAction import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/ForwardMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/ForwardMessage.kt index deb9c2dbf3..d37ef48d8d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/ForwardMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/ForwardMessage.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.requests -import dev.inmo.tgbotapi.CommonAbstracts.types.MessageAction -import dev.inmo.tgbotapi.CommonAbstracts.types.ProtectContent +import dev.inmo.tgbotapi.abstracts.types.MessageAction +import dev.inmo.tgbotapi.abstracts.types.ProtectContent import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.message.abstracts.PossiblyForwardedMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/StopPoll.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/StopPoll.kt index 1d5bfefd72..1078ecf512 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/StopPoll.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/StopPoll.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.requests -import dev.inmo.tgbotapi.CommonAbstracts.types.MessageAction -import dev.inmo.tgbotapi.CommonAbstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.MessageAction +import dev.inmo.tgbotapi.abstracts.types.ReplyMarkup import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFile.kt index 4e5949aa6d..4a9cf1a557 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFile.kt @@ -1,11 +1,12 @@ package dev.inmo.tgbotapi.requests.abstracts +import com.benasher44.uuid.uuid4 import dev.inmo.micro_utils.common.MPPFile import dev.inmo.tgbotapi.utils.* import io.ktor.utils.io.ByteReadChannel +import io.ktor.utils.io.core.ByteReadPacket import io.ktor.utils.io.core.Input -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable +import kotlinx.serialization.* import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder @@ -24,6 +25,15 @@ import kotlinx.serialization.encoding.Encoder @Serializable(InputFileSerializer::class) sealed class InputFile { abstract val fileId: String + + companion object { + operator fun invoke(file: MPPFile) = file.asMultipartFile() + + fun fromInput(filename: String, inputSource: () -> Input) = MultipartFile(filename, inputSource) + fun fromFile(file: MPPFile) = invoke(file) + fun fromId(id: String) = FileId(id) + fun fromUrl(url: String) = FileUrl(url) + } } internal inline val InputFile.attachFileId @@ -43,6 +53,8 @@ data class FileId( override val fileId: String ) : InputFile() +typealias FileUrl = FileId + fun String.toInputFile() = FileId(this) @RiskFeature @@ -60,23 +72,49 @@ object InputFileSerializer : KSerializer { */ @Serializable(InputFileSerializer::class) data class MultipartFile ( - val file: StorageFile, - val filename: String = file.fileName + val filename: String, + private val inputSource: () -> Input ) : InputFile() { - override val fileId: String = file.generateCustomName() + @Required + override val fileId: String = "${uuid4()}.${filename.fileExtension}" + val input: Input + get() = inputSource() + + @Deprecated("Storage file now is not necessary") + constructor( + file: StorageFile, + filename: String = file.fileName + ) : this( + filename, + file::input + ) } +@Deprecated("Storage file now is not necessary") @Suppress("NOTHING_TO_INLINE", "unused") -inline fun StorageFile.asMultipartFile() = MultipartFile(this) +inline fun StorageFile.asMultipartFile() = MultipartFile(fileName, ::input) @Suppress("NOTHING_TO_INLINE", "unused") suspend inline fun ByteReadChannel.asMultipartFile( fileName: String -) = MultipartFile(asStorageFile(fileName)) +) = MultipartFile( + fileName, + inputSource = asInput().let { { it } } +) + +@Suppress("NOTHING_TO_INLINE", "unused") +inline fun ByteArray.asMultipartFile( + fileName: String +) = MultipartFile( + fileName, + inputSource = { ByteReadPacket(this) } +) @Suppress("NOTHING_TO_INLINE", "unused") suspend inline fun ByteReadChannelAllocator.asMultipartFile( fileName: String ) = this.invoke().asMultipartFile(fileName) -expect suspend fun MPPFile.asMultipartFile(): MultipartFile +expect fun MPPFile.asMultipartFile(): MultipartFile +@Suppress("NOTHING_TO_INLINE") +inline fun MPPFile.multipartFile() = asMultipartFile() diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/answers/AnswerCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/answers/AnswerCallbackQuery.kt index 00cb73f39a..49e0609fef 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/answers/AnswerCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/answers/AnswerCallbackQuery.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.requests.answers import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery import kotlinx.serialization.* import kotlinx.serialization.builtins.serializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMe.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMe.kt index 96bff01892..5293829be5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMe.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMe.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.requests.bot import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest -import dev.inmo.tgbotapi.types.ExtendedBot +import dev.inmo.tgbotapi.types.chat.ExtendedBot import kotlinx.serialization.* @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt index e59dcc5be1..2961334754 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.requests.bot import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.AdministratorChatMemberImpl +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl import kotlinx.serialization.* @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/ExportChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/ExportChatInviteLink.kt index e6ea3b66ca..d9f9fac24c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/ExportChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/ExportChatInviteLink.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chatIdField diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/LeaveChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/LeaveChat.kt index fb2c6f6103..cb4f108b85 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/LeaveChat.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/LeaveChat.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chatIdField diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatMemberRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatMemberRequest.kt index aeec27c5de..1b13c01305 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatMemberRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatMemberRequest.kt @@ -1,9 +1,9 @@ package dev.inmo.tgbotapi.requests.chat.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.UserId interface ChatMemberRequest : ChatRequest, SimpleRequest { val userId: UserId -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt index 9e036d772a..5e8fb31d1f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatId import dev.inmo.tgbotapi.types.UserId diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt index 1fb8cc79e7..00d0b359e5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.requests.chat.get -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chat.ExtendedChatSerializer -import dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat +import dev.inmo.tgbotapi.types.chat.ExtendedChat import dev.inmo.tgbotapi.types.chatIdField import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt index 4ab2d546fc..2f47b74bf7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.requests.chat.get -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMemberSerializer +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberSerializer import dev.inmo.tgbotapi.types.chatIdField import kotlinx.serialization.* import kotlinx.serialization.builtins.ListSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMemberCount.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMemberCount.kt index af54d4992f..141c09d914 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMemberCount.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMemberCount.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.get -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chatIdField diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMenuButton.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMenuButton.kt index b4740a353c..4180341be0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMenuButton.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatMenuButton.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.get -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetDefaultChatMenuButton.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetDefaultChatMenuButton.kt index 0c942acece..92f38ae3da 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetDefaultChatMenuButton.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetDefaultChatMenuButton.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.requests.chat.get -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest -import dev.inmo.tgbotapi.CommonAbstracts.types.OptionalChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.OptionalChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatMember.kt index 0aac06c4f6..c57c4d6bb9 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatMember.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.members -import dev.inmo.tgbotapi.CommonAbstracts.types.UntilDate +import dev.inmo.tgbotapi.abstracts.types.UntilDate import dev.inmo.tgbotapi.requests.chat.abstracts.ChatMemberRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt index b5a1e58e30..971aa3be74 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.requests.chat.members import dev.inmo.tgbotapi.requests.chat.abstracts.ChatMemberRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMemberSerializer +import dev.inmo.tgbotapi.types.chat.member.ChatMember +import dev.inmo.tgbotapi.types.chat.member.ChatMemberSerializer import kotlinx.serialization.* @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt index 4079eec591..4bfe27e29a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.members -import dev.inmo.tgbotapi.CommonAbstracts.types.UntilDate +import dev.inmo.tgbotapi.abstracts.types.UntilDate import dev.inmo.tgbotapi.requests.chat.abstracts.ChatMemberRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/RestrictChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/RestrictChatMember.kt index 0e8e96d691..92e3dc2458 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/RestrictChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/RestrictChatMember.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.members -import dev.inmo.tgbotapi.CommonAbstracts.types.UntilDate +import dev.inmo.tgbotapi.abstracts.types.UntilDate import dev.inmo.tgbotapi.requests.chat.abstracts.ChatMemberRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.chat.ChatPermissions diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/DeleteChatPhoto.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/DeleteChatPhoto.kt index 8a54a38e49..19ec0e9073 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/DeleteChatPhoto.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/DeleteChatPhoto.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chatIdField diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/PinChatMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/PinChatMessage.kt index af3e88920c..dea1b838f8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/PinChatMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/PinChatMessage.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.* +import dev.inmo.tgbotapi.abstracts.types.* import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatDescription.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatDescription.kt index 991aef059d..caba519fff 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatDescription.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatDescription.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatMenuButton.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatMenuButton.kt index 6c8cc9dd3d..c0d4c34648 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatMenuButton.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatMenuButton.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPermissions.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPermissions.kt index c4dc462708..04e292771b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPermissions.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPermissions.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.chat.ChatPermissions diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPhoto.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPhoto.kt index 4513de5fba..be2dbcfc6d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPhoto.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatPhoto.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.abstracts.MultipartRequest import dev.inmo.tgbotapi.types.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatTitle.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatTitle.kt index 4d9f1a9b90..aba84b3d3e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatTitle.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/SetChatTitle.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinAllChatMessages.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinAllChatMessages.kt index d5f8da23c3..2689c4a034 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinAllChatMessages.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinAllChatMessages.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chatIdField diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinChatMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinChatMessage.kt index 8439853634..1d6bf294ed 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinChatMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/modify/UnpinChatMessage.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.modify -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/DeleteChatStickerSet.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/DeleteChatStickerSet.kt index f70cf62aa5..873717271d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/DeleteChatStickerSet.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/DeleteChatStickerSet.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.stickers -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chatIdField diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/SetChatStickerSet.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/SetChatStickerSet.kt index 4e8bf65a65..44818ad296 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/SetChatStickerSet.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/stickers/SetChatStickerSet.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.stickers -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt index d736ddb2f0..f7e4a81997 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt @@ -1,45 +1,7 @@ package dev.inmo.tgbotapi.requests.edit.LiveLocation -import dev.inmo.tgbotapi.requests.edit.abstracts.* -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.LocationContent -import dev.inmo.tgbotapi.utils.throwRangeError -import kotlinx.serialization.* +@Deprecated("Replaced", ReplaceWith("editMessageLiveLocationMethod", "dev.inmo.tgbotapi.requests.edit.location.live.editMessageLiveLocationMethod")) +const val editMessageLiveLocationMethod = dev.inmo.tgbotapi.requests.edit.location.live.editMessageLiveLocationMethod -private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() -const val editMessageLiveLocationMethod = "editMessageLiveLocation" - -@Serializable -data class EditChatMessageLiveLocation( - @SerialName(chatIdField) - override val chatId: ChatIdentifier, - @SerialName(messageIdField) - override val messageId: MessageIdentifier, - @SerialName(latitudeField) - override val latitude: Double, - @SerialName(longitudeField) - override val longitude: Double, - @SerialName(horizontalAccuracyField) - override val horizontalAccuracy: Meters? = null, - @SerialName(headingField) - override val heading: Degrees? = null, - @SerialName(proximityAlertRadiusField) - override val proximityAlertRadius: Meters? = null, - @SerialName(replyMarkupField) - override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditReplyMessage, EditLocationMessage { - override fun method(): String = editMessageLiveLocationMethod - override val resultDeserializer: DeserializationStrategy> - get() = commonResultDeserializer - override val requestSerializer: SerializationStrategy<*> - get() = serializer() - - init { - if (horizontalAccuracy != null && horizontalAccuracy !in horizontalAccuracyLimit) { - throwRangeError("horizontalAccuracy", horizontalAccuracyLimit, horizontalAccuracy) - } - } -} +@Deprecated("Replaced", ReplaceWith("EditChatMessageLiveLocation", "dev.inmo.tgbotapi.requests.edit.location.live.EditChatMessageLiveLocation")) +typealias EditChatMessageLiveLocation = dev.inmo.tgbotapi.requests.edit.location.live.EditChatMessageLiveLocation diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditInlineMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditInlineMessageLiveLocation.kt index b430bbfd64..fe5af0dc52 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditInlineMessageLiveLocation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/EditInlineMessageLiveLocation.kt @@ -1,35 +1,4 @@ package dev.inmo.tgbotapi.requests.edit.LiveLocation -import dev.inmo.tgbotapi.requests.edit.abstracts.* -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.utils.throwRangeError -import kotlinx.serialization.* - -@Serializable -data class EditInlineMessageLiveLocation( - @SerialName(inlineMessageIdField) - override val inlineMessageId: InlineMessageIdentifier, - @SerialName(latitudeField) - override val latitude: Double, - @SerialName(longitudeField) - override val longitude: Double, - @SerialName(horizontalAccuracyField) - override val horizontalAccuracy: Meters? = null, - @SerialName(headingField) - override val heading: Degrees? = null, - @SerialName(proximityAlertRadiusField) - override val proximityAlertRadius: Meters? = null, - @SerialName(replyMarkupField) - override val replyMarkup: InlineKeyboardMarkup? = null -) : EditInlineMessage, EditReplyMessage, EditLocationMessage { - override fun method(): String = editMessageLiveLocationMethod - override val requestSerializer: SerializationStrategy<*> - get() = serializer() - - init { - if (horizontalAccuracy != null && horizontalAccuracy !in horizontalAccuracyLimit) { - throwRangeError("horizontalAccuracy", horizontalAccuracyLimit, horizontalAccuracy) - } - } -} +@Deprecated("Replaced", ReplaceWith("EditInlineMessageLiveLocation", "dev.inmo.tgbotapi.requests.edit.location.live.EditInlineMessageLiveLocation")) +typealias EditInlineMessageLiveLocation = dev.inmo.tgbotapi.requests.edit.location.live.EditInlineMessageLiveLocation diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt index bccc7f0b66..076a246b0e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt @@ -1,29 +1,7 @@ package dev.inmo.tgbotapi.requests.edit.LiveLocation -import dev.inmo.tgbotapi.requests.edit.abstracts.EditChatMessage -import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.LocationContent -import kotlinx.serialization.* +@Deprecated("Replaced", ReplaceWith("stopMessageLiveLocationMethod", "dev.inmo.tgbotapi.requests.edit.location.live.stopMessageLiveLocationMethod")) +const val stopMessageLiveLocationMethod = dev.inmo.tgbotapi.requests.edit.location.live.stopMessageLiveLocationMethod -private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() -const val stopMessageLiveLocationMethod = "stopMessageLiveLocation" - -@Serializable -data class StopChatMessageLiveLocation( - @SerialName(chatIdField) - override val chatId: ChatIdentifier, - @SerialName(messageIdField) - override val messageId: MessageIdentifier, - @SerialName(replyMarkupField) - override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditReplyMessage { - override fun method(): String = stopMessageLiveLocationMethod - override val resultDeserializer: DeserializationStrategy> - get() = commonResultDeserializer - override val requestSerializer: SerializationStrategy<*> - get() = serializer() -} +@Deprecated("Replaced", ReplaceWith("StopChatMessageLiveLocation", "dev.inmo.tgbotapi.requests.edit.location.live.StopChatMessageLiveLocation")) +typealias StopChatMessageLiveLocation = dev.inmo.tgbotapi.requests.edit.location.live.StopChatMessageLiveLocation diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopInlineMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopInlineMessageLiveLocation.kt index 4873b63769..992f51bfe4 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopInlineMessageLiveLocation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/LiveLocation/StopInlineMessageLiveLocation.kt @@ -1,19 +1,4 @@ package dev.inmo.tgbotapi.requests.edit.LiveLocation -import dev.inmo.tgbotapi.requests.edit.abstracts.EditInlineMessage -import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import kotlinx.serialization.* - -@Serializable -data class StopInlineMessageLiveLocation( - @SerialName(inlineMessageIdField) - override val inlineMessageId: InlineMessageIdentifier, - @SerialName(replyMarkupField) - override val replyMarkup: InlineKeyboardMarkup? = null -) : EditInlineMessage, EditReplyMessage { - override fun method(): String = stopMessageLiveLocationMethod - override val requestSerializer: SerializationStrategy<*> - get() = serializer() -} +@Deprecated("Replaced", ReplaceWith("StopInlineMessageLiveLocation", "dev.inmo.tgbotapi.requests.edit.location.live.StopInlineMessageLiveLocation")) +typealias StopInlineMessageLiveLocation = dev.inmo.tgbotapi.requests.edit.location.live.StopInlineMessageLiveLocation diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt index 03a15e1b1b..3fc96449ad 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt @@ -1,31 +1,7 @@ package dev.inmo.tgbotapi.requests.edit.ReplyMarkup -import dev.inmo.tgbotapi.requests.edit.abstracts.EditChatMessage -import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import kotlinx.serialization.* +@Deprecated("Replaced", ReplaceWith("editMessageReplyMarkupMethod", "dev.inmo.tgbotapi.requests.edit.reply_markup.editMessageReplyMarkupMethod")) +const val editMessageReplyMarkupMethod = dev.inmo.tgbotapi.requests.edit.reply_markup.editMessageReplyMarkupMethod -const val editMessageReplyMarkupMethod = "editMessageReplyMarkup" - -private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() - -@Serializable -data class EditChatMessageReplyMarkup( - @SerialName(chatIdField) - override val chatId: ChatIdentifier, - @SerialName(messageIdField) - override val messageId: MessageIdentifier, - @SerialName(replyMarkupField) - override val replyMarkup: InlineKeyboardMarkup? = null -) : EditChatMessage, EditReplyMessage { - - override fun method(): String = editMessageReplyMarkupMethod - override val resultDeserializer: DeserializationStrategy> - get() = commonResultDeserializer - override val requestSerializer: SerializationStrategy<*> - get() = serializer() -} +@Deprecated("Replaced", ReplaceWith("EditChatMessageReplyMarkup", "dev.inmo.tgbotapi.requests.edit.reply_markup.EditChatMessageReplyMarkup")) +typealias EditChatMessageReplyMarkup = dev.inmo.tgbotapi.requests.edit.reply_markup.EditChatMessageReplyMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt index 01abbe33fe..a5820c2301 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/ReplyMarkup/EditInlineMessageReplyMarkup.kt @@ -1,19 +1,4 @@ package dev.inmo.tgbotapi.requests.edit.ReplyMarkup -import dev.inmo.tgbotapi.requests.edit.abstracts.EditInlineMessage -import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import kotlinx.serialization.* - -@Serializable -data class EditInlineMessageReplyMarkup( - @SerialName(inlineMessageIdField) - override val inlineMessageId: InlineMessageIdentifier, - @SerialName(replyMarkupField) - override val replyMarkup: InlineKeyboardMarkup? = null -) : EditInlineMessage, EditReplyMessage { - override fun method(): String = editMessageReplyMarkupMethod - override val requestSerializer: SerializationStrategy<*> - get() = serializer() -} +@Deprecated("Replaced", ReplaceWith("EditInlineMessageReplyMarkup", "dev.inmo.tgbotapi.requests.edit.reply_markup.EditInlineMessageReplyMarkup")) +typealias EditInlineMessageReplyMarkup = dev.inmo.tgbotapi.requests.edit.reply_markup.EditInlineMessageReplyMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage.kt index 0dcfbb23cb..5f53b08c64 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.requests.edit.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.MessageAction +import dev.inmo.tgbotapi.abstracts.types.MessageAction import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent interface EditChatMessage : SimpleRequest>, MessageAction diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditLocationMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditLocationMessage.kt index 853d39ee5b..b485324419 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditLocationMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditLocationMessage.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.requests.edit.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.* +import dev.inmo.tgbotapi.abstracts.* interface EditLocationMessage : Locationed, HorizontallyAccured, ProximityAlertable, Headed diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditMediaMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditMediaMessage.kt index aaaceea53e..ec68b4aff0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditMediaMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditMediaMessage.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.requests.edit.abstracts -import dev.inmo.tgbotapi.types.InputMedia.InputMedia +import dev.inmo.tgbotapi.types.media.TelegramMedia interface EditMediaMessage { - val media: InputMedia -} \ No newline at end of file + val media: TelegramMedia +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage.kt index 3b6e9a7488..94bc78a3ce 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.requests.edit.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.ReplyMarkup import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup interface EditReplyMessage : ReplyMarkup { override val replyMarkup: InlineKeyboardMarkup? -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditTextChatMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditTextChatMessage.kt index 286695eaa3..8dbdd24f52 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditTextChatMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/abstracts/EditTextChatMessage.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.requests.edit.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput interface EditTextChatMessage : TextedOutput { override val text: String -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditChatMessageCaption.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditChatMessageCaption.kt index a72b698f6b..4d325e94e1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditChatMessageCaption.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditChatMessageCaption.kt @@ -3,13 +3,15 @@ package dev.inmo.tgbotapi.requests.edit.caption import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.requests.edit.media.MediaContentMessageResultDeserializer import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.message.content.MediaContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditInlineMessageCaption.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditInlineMessageCaption.kt index 315de59511..a694a74fd3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditInlineMessageCaption.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/caption/EditInlineMessageCaption.kt @@ -2,11 +2,13 @@ package dev.inmo.tgbotapi.requests.edit.caption import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/EditChatMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/EditChatMessageLiveLocation.kt new file mode 100644 index 0000000000..ab7882ff46 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/EditChatMessageLiveLocation.kt @@ -0,0 +1,45 @@ +package dev.inmo.tgbotapi.requests.edit.location.live + +import dev.inmo.tgbotapi.requests.edit.abstracts.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import dev.inmo.tgbotapi.types.message.content.LocationContent +import dev.inmo.tgbotapi.utils.throwRangeError +import kotlinx.serialization.* + +private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() +const val editMessageLiveLocationMethod = "editMessageLiveLocation" + +@Serializable +data class EditChatMessageLiveLocation( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(messageIdField) + override val messageId: MessageIdentifier, + @SerialName(latitudeField) + override val latitude: Double, + @SerialName(longitudeField) + override val longitude: Double, + @SerialName(horizontalAccuracyField) + override val horizontalAccuracy: Meters? = null, + @SerialName(headingField) + override val heading: Degrees? = null, + @SerialName(proximityAlertRadiusField) + override val proximityAlertRadius: Meters? = null, + @SerialName(replyMarkupField) + override val replyMarkup: InlineKeyboardMarkup? = null +) : EditChatMessage, EditReplyMessage, EditLocationMessage { + override fun method(): String = editMessageLiveLocationMethod + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + init { + if (horizontalAccuracy != null && horizontalAccuracy !in horizontalAccuracyLimit) { + throwRangeError("horizontalAccuracy", horizontalAccuracyLimit, horizontalAccuracy) + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/EditInlineMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/EditInlineMessageLiveLocation.kt new file mode 100644 index 0000000000..1cfd36cd87 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/EditInlineMessageLiveLocation.kt @@ -0,0 +1,35 @@ +package dev.inmo.tgbotapi.requests.edit.location.live + +import dev.inmo.tgbotapi.requests.edit.abstracts.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.utils.throwRangeError +import kotlinx.serialization.* + +@Serializable +data class EditInlineMessageLiveLocation( + @SerialName(inlineMessageIdField) + override val inlineMessageId: InlineMessageIdentifier, + @SerialName(latitudeField) + override val latitude: Double, + @SerialName(longitudeField) + override val longitude: Double, + @SerialName(horizontalAccuracyField) + override val horizontalAccuracy: Meters? = null, + @SerialName(headingField) + override val heading: Degrees? = null, + @SerialName(proximityAlertRadiusField) + override val proximityAlertRadius: Meters? = null, + @SerialName(replyMarkupField) + override val replyMarkup: InlineKeyboardMarkup? = null +) : EditInlineMessage, EditReplyMessage, EditLocationMessage { + override fun method(): String = editMessageLiveLocationMethod + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + init { + if (horizontalAccuracy != null && horizontalAccuracy !in horizontalAccuracyLimit) { + throwRangeError("horizontalAccuracy", horizontalAccuracyLimit, horizontalAccuracy) + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/StopChatMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/StopChatMessageLiveLocation.kt new file mode 100644 index 0000000000..44374667a9 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/StopChatMessageLiveLocation.kt @@ -0,0 +1,29 @@ +package dev.inmo.tgbotapi.requests.edit.location.live + +import dev.inmo.tgbotapi.requests.edit.abstracts.EditChatMessage +import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import dev.inmo.tgbotapi.types.message.content.LocationContent +import kotlinx.serialization.* + +private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() +const val stopMessageLiveLocationMethod = "stopMessageLiveLocation" + +@Serializable +data class StopChatMessageLiveLocation( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(messageIdField) + override val messageId: MessageIdentifier, + @SerialName(replyMarkupField) + override val replyMarkup: InlineKeyboardMarkup? = null +) : EditChatMessage, EditReplyMessage { + override fun method(): String = stopMessageLiveLocationMethod + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/StopInlineMessageLiveLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/StopInlineMessageLiveLocation.kt new file mode 100644 index 0000000000..3eab50df9d --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/location/live/StopInlineMessageLiveLocation.kt @@ -0,0 +1,19 @@ +package dev.inmo.tgbotapi.requests.edit.location.live + +import dev.inmo.tgbotapi.requests.edit.abstracts.EditInlineMessage +import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import kotlinx.serialization.* + +@Serializable +data class StopInlineMessageLiveLocation( + @SerialName(inlineMessageIdField) + override val inlineMessageId: InlineMessageIdentifier, + @SerialName(replyMarkupField) + override val replyMarkup: InlineKeyboardMarkup? = null +) : EditInlineMessage, EditReplyMessage { + override fun method(): String = stopMessageLiveLocationMethod + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia.kt index 4516afdfd3..88d064398e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia.kt @@ -3,11 +3,11 @@ package dev.inmo.tgbotapi.requests.edit.media import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.InputMedia.InputMedia +import dev.inmo.tgbotapi.types.media.TelegramMedia import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.message.content.MediaContent import kotlinx.serialization.* const val editMessageMediaMethod = "editMessageMedia" @@ -21,7 +21,7 @@ data class EditChatMessageMedia( @SerialName(messageIdField) override val messageId: MessageIdentifier, @SerialName(mediaField) - override val media: InputMedia, + override val media: TelegramMedia, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null ) : EditChatMessage, EditReplyMessage, EditMediaMessage { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditInlineMessageMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditInlineMessageMedia.kt index 1a9246cb06..166b032477 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditInlineMessageMedia.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/media/EditInlineMessageMedia.kt @@ -3,7 +3,7 @@ package dev.inmo.tgbotapi.requests.edit.media import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.InputMedia.InputMedia +import dev.inmo.tgbotapi.types.media.TelegramMedia import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import kotlinx.serialization.* @@ -12,7 +12,7 @@ data class EditInlineMessageMedia( @SerialName(inlineMessageIdField) override val inlineMessageId: InlineMessageIdentifier, @SerialName(mediaField) - override val media: InputMedia, + override val media: TelegramMedia, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null ) : EditInlineMessage, EditReplyMessage, EditMediaMessage { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/reply_markup/EditChatMessageReplyMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/reply_markup/EditChatMessageReplyMarkup.kt new file mode 100644 index 0000000000..dad74a250c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/reply_markup/EditChatMessageReplyMarkup.kt @@ -0,0 +1,31 @@ +package dev.inmo.tgbotapi.requests.edit.reply_markup + +import dev.inmo.tgbotapi.requests.edit.abstracts.EditChatMessage +import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import dev.inmo.tgbotapi.types.message.content.MessageContent +import kotlinx.serialization.* + +const val editMessageReplyMarkupMethod = "editMessageReplyMarkup" + +private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() + +@Serializable +data class EditChatMessageReplyMarkup( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(messageIdField) + override val messageId: MessageIdentifier, + @SerialName(replyMarkupField) + override val replyMarkup: InlineKeyboardMarkup? = null +) : EditChatMessage, EditReplyMessage { + + override fun method(): String = editMessageReplyMarkupMethod + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/reply_markup/EditInlineMessageReplyMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/reply_markup/EditInlineMessageReplyMarkup.kt new file mode 100644 index 0000000000..e7a5d9a152 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/reply_markup/EditInlineMessageReplyMarkup.kt @@ -0,0 +1,19 @@ +package dev.inmo.tgbotapi.requests.edit.reply_markup + +import dev.inmo.tgbotapi.requests.edit.abstracts.EditInlineMessage +import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import kotlinx.serialization.* + +@Serializable +data class EditInlineMessageReplyMarkup( + @SerialName(inlineMessageIdField) + override val inlineMessageId: InlineMessageIdentifier, + @SerialName(replyMarkupField) + override val replyMarkup: InlineKeyboardMarkup? = null +) : EditInlineMessage, EditReplyMessage { + override fun method(): String = editMessageReplyMarkupMethod + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditChatMessageText.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditChatMessageText.kt index 53875a817a..cd071917a4 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditChatMessageText.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditChatMessageText.kt @@ -3,13 +3,15 @@ package dev.inmo.tgbotapi.requests.edit.text import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.requests.send.TextContentMessageResultDeserializer import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.TextContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditInlineMessageText.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditInlineMessageText.kt index c0438f3a55..4793aaa1e3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditInlineMessageText.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/text/EditInlineMessageText.kt @@ -2,11 +2,13 @@ package dev.inmo.tgbotapi.requests.edit.text import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt index 8b17b25d94..3bf9cd2be0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.games -import dev.inmo.tgbotapi.CommonAbstracts.types.MessageAction +import dev.inmo.tgbotapi.abstracts.types.MessageAction import dev.inmo.tgbotapi.requests.games.abstracts.GetGameHighScores import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByInlineMessageId.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByInlineMessageId.kt index 7512c23b4b..b21458d457 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByInlineMessageId.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByInlineMessageId.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.games -import dev.inmo.tgbotapi.CommonAbstracts.types.InlineMessageAction +import dev.inmo.tgbotapi.abstracts.types.InlineMessageAction import dev.inmo.tgbotapi.requests.games.abstracts.GetGameHighScores import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt index 0063be5c4d..90a2f3c314 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.games -import dev.inmo.tgbotapi.CommonAbstracts.types.MessageAction +import dev.inmo.tgbotapi.abstracts.types.MessageAction import dev.inmo.tgbotapi.requests.games.abstracts.SetGameScore import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByInlineMessageId.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByInlineMessageId.kt index 6305f12c1b..4fb30b74f5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByInlineMessageId.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByInlineMessageId.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.games -import dev.inmo.tgbotapi.CommonAbstracts.types.InlineMessageAction +import dev.inmo.tgbotapi.abstracts.types.InlineMessageAction import dev.inmo.tgbotapi.requests.games.abstracts.SetGameScore import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/get/GetFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/get/GetFile.kt index 8388488113..97e74506f6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/get/GetFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/get/GetFile.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.requests.get import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.fileIdField import dev.inmo.tgbotapi.types.files.PathedFile -import dev.inmo.tgbotapi.types.files.abstracts.fileIdField import kotlinx.serialization.* @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/CopyMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/CopyMessage.kt index cc609a21ca..bfa673d478 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/CopyMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/CopyMessage.kt @@ -1,16 +1,18 @@ package dev.inmo.tgbotapi.requests.send -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput -import dev.inmo.tgbotapi.CommonAbstracts.types.MessageAction -import dev.inmo.tgbotapi.CommonAbstracts.types.ProtectContent +import dev.inmo.tgbotapi.abstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.types.MessageAction +import dev.inmo.tgbotapi.abstracts.types.ProtectContent import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendDice.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendDice.kt index 30de39bf7a..90a83c4b33 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendDice.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendDice.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.requests.send -import dev.inmo.tgbotapi.CommonAbstracts.types.DisableNotification -import dev.inmo.tgbotapi.CommonAbstracts.types.ReplyMessageId +import dev.inmo.tgbotapi.abstracts.types.DisableNotification +import dev.inmo.tgbotapi.abstracts.types.ReplyMessageId import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendLocation.kt index 8cb6d76d44..a4ca5d9b0d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendLocation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendLocation.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.send -import dev.inmo.tgbotapi.CommonAbstracts.* +import dev.inmo.tgbotapi.abstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendMessage.kt index c9940e4ebd..5389a8e315 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendMessage.kt @@ -1,16 +1,18 @@ package dev.inmo.tgbotapi.requests.send -import dev.inmo.tgbotapi.CommonAbstracts.types.DisableWebPagePreview +import dev.inmo.tgbotapi.abstracts.types.DisableWebPagePreview import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass import dev.inmo.tgbotapi.types.message.content.TextContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import dev.inmo.tgbotapi.utils.throwRangeError import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/PositionedSendMessageRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/PositionedSendMessageRequest.kt index 533d2b515d..b8fafc6759 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/PositionedSendMessageRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/PositionedSendMessageRequest.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.requests.send.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.Locationed +import dev.inmo.tgbotapi.abstracts.Locationed -interface PositionedSendMessageRequest: SendMessageRequest, Locationed \ No newline at end of file +interface PositionedSendMessageRequest: SendMessageRequest, Locationed diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/ReplyingMarkupSendMessageRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/ReplyingMarkupSendMessageRequest.kt index 3690419ca3..f152390db7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/ReplyingMarkupSendMessageRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/ReplyingMarkupSendMessageRequest.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.requests.send.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.ReplyMarkup -interface ReplyingMarkupSendMessageRequest: SendMessageRequest, ReplyMarkup \ No newline at end of file +interface ReplyingMarkupSendMessageRequest: SendMessageRequest, ReplyMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendChatMessageRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendChatMessageRequest.kt index 5107d6264e..ffc9818312 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendChatMessageRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendChatMessageRequest.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.send.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest +import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest -interface SendChatMessageRequest : SimpleRequest, ChatRequest \ No newline at end of file +interface SendChatMessageRequest : SimpleRequest, ChatRequest diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendMessageRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendMessageRequest.kt index 9d0b463627..27a8a7beb6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendMessageRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/SendMessageRequest.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.requests.send.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.* +import dev.inmo.tgbotapi.abstracts.types.* interface SendMessageRequest : SendChatMessageRequest, ReplyMessageId, DisableNotification, ProtectContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/TextableSendMessageRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/TextableSendMessageRequest.kt index e77f2d321d..b4a97ef2a6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/TextableSendMessageRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/TextableSendMessageRequest.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.requests.send.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput interface TextableSendMessageRequest: SendMessageRequest, TextedOutput diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/games/SendGame.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/games/SendGame.kt index ce58988b5d..93c75b0338 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/games/SendGame.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/games/SendGame.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.send.games -import dev.inmo.tgbotapi.CommonAbstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.ReplyMarkup import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAnimation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAnimation.kt index d74034defb..d666e09f54 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAnimation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAnimation.kt @@ -4,14 +4,16 @@ import dev.inmo.tgbotapi.requests.abstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.requests.send.media.base.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.AnimationContent +import dev.inmo.tgbotapi.types.message.content.AnimationContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import dev.inmo.tgbotapi.utils.mapOfNotNull import dev.inmo.tgbotapi.utils.throwRangeError diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAudio.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAudio.kt index 9c16f1fb6c..6ece6a5cc1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAudio.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendAudio.kt @@ -1,18 +1,20 @@ package dev.inmo.tgbotapi.requests.send.media -import dev.inmo.tgbotapi.CommonAbstracts.Performerable +import dev.inmo.tgbotapi.abstracts.Performerable import dev.inmo.tgbotapi.requests.abstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.requests.send.media.base.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.AudioContent +import dev.inmo.tgbotapi.types.message.content.AudioContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import dev.inmo.tgbotapi.utils.mapOfNotNull import dev.inmo.tgbotapi.utils.throwRangeError diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendDocument.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendDocument.kt index e9f43ae2bd..ce28df1da5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendDocument.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendDocument.kt @@ -4,14 +4,16 @@ import dev.inmo.tgbotapi.requests.abstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.requests.send.media.base.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.DocumentContent +import dev.inmo.tgbotapi.types.message.content.DocumentContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import dev.inmo.tgbotapi.utils.mapOfNotNull import dev.inmo.tgbotapi.utils.throwRangeError diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendMediaGroup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendMediaGroup.kt index 794a054f34..9c747c9972 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendMediaGroup.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendMediaGroup.kt @@ -5,13 +5,13 @@ import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest import dev.inmo.tgbotapi.requests.send.media.base.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.InputMedia.* +import dev.inmo.tgbotapi.types.media.* import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializerClass -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.AudioContent -import dev.inmo.tgbotapi.types.message.content.media.DocumentContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.AudioContent +import dev.inmo.tgbotapi.types.message.content.DocumentContent import dev.inmo.tgbotapi.utils.* import kotlinx.serialization.* import kotlinx.serialization.builtins.ListSerializer @@ -23,7 +23,7 @@ const val rawSendingMediaGroupsWarning = "Media groups contains restrictions rel @RiskFeature(rawSendingMediaGroupsWarning) fun SendMediaGroup( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -36,7 +36,7 @@ fun SendMediaGroup( val files: List = media.flatMap { listOfNotNull( it.file as? MultipartFile, - if (it is ThumbedInputMedia) { + if (it is ThumbedTelegramMedia) { it.thumb as? MultipartFile } else { null @@ -66,12 +66,12 @@ fun SendMediaGroup( /** * Use this method to be sure that you are correctly sending playlist with audios * - * @see InputMediaAudio + * @see TelegramMediaAudio */ @Suppress("NOTHING_TO_INLINE") inline fun SendPlaylist( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -81,12 +81,12 @@ inline fun SendPlaylist( /** * Use this method to be sure that you are correctly sending documents media group * - * @see InputMediaDocument + * @see TelegramMediaDocument */ @Suppress("NOTHING_TO_INLINE") inline fun SendDocumentsGroup( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -96,13 +96,13 @@ inline fun SendDocumentsGroup( /** * Use this method to be sure that you are correctly sending visual media group * - * @see InputMediaPhoto - * @see InputMediaVideo + * @see TelegramMediaPhoto + * @see TelegramMediaVideo */ @Suppress("NOTHING_TO_INLINE") inline fun SendVisualMediaGroup( chatId: ChatIdentifier, - media: List, + media: List, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageIdentifier? = null, @@ -116,7 +116,7 @@ private val messagesListSerializer: KSerializer = emptyList(), + val media: List = emptyList(), @SerialName(disableNotificationField) override val disableNotification: Boolean = false, @SerialName(protectContentField) @@ -130,7 +130,7 @@ data class SendMediaGroupData internal constructor( private val convertedMedia: String get() = buildJsonArray { media.forEach { - add(it.toJsonWithoutNulls(MediaGroupMemberInputMediaSerializer)) + add(it.toJsonWithoutNulls(MediaGroupMemberTelegramMediaSerializer)) } }.toString() diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendPhoto.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendPhoto.kt index 61ac961d0c..95fcbaa175 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendPhoto.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendPhoto.kt @@ -4,14 +4,16 @@ import dev.inmo.tgbotapi.requests.abstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.requests.send.media.base.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.PhotoContent +import dev.inmo.tgbotapi.types.message.content.PhotoContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import dev.inmo.tgbotapi.utils.throwRangeError import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendSticker.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendSticker.kt index 91b771bb40..440979d10c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendSticker.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendSticker.kt @@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.StickerContent +import dev.inmo.tgbotapi.types.message.content.StickerContent import dev.inmo.tgbotapi.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.json.JsonObject diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideo.kt index 3c74a2adbf..16b65d7e2f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideo.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideo.kt @@ -4,14 +4,16 @@ import dev.inmo.tgbotapi.requests.abstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.requests.send.media.base.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.VideoContent +import dev.inmo.tgbotapi.types.message.content.VideoContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import dev.inmo.tgbotapi.utils.mapOfNotNull import dev.inmo.tgbotapi.utils.throwRangeError diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideoNote.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideoNote.kt index d3d61fc220..30a5bbce40 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideoNote.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVideoNote.kt @@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.VideoNoteContent +import dev.inmo.tgbotapi.types.message.content.VideoNoteContent import dev.inmo.tgbotapi.utils.mapOfNotNull import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVoice.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVoice.kt index aa4b60c2da..9c816ea4f7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVoice.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/media/SendVoice.kt @@ -4,14 +4,16 @@ import dev.inmo.tgbotapi.requests.abstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.* import dev.inmo.tgbotapi.requests.send.media.base.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.content.media.VoiceContent +import dev.inmo.tgbotapi.types.message.content.VoiceContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import dev.inmo.tgbotapi.utils.mapOfNotNull import dev.inmo.tgbotapi.utils.throwRangeError diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt index 226f368d3a..a482268ade 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt @@ -1,13 +1,13 @@ package dev.inmo.tgbotapi.requests.send.payments -import dev.inmo.tgbotapi.CommonAbstracts.CommonSendInvoiceData -import dev.inmo.tgbotapi.CommonAbstracts.types.* +import dev.inmo.tgbotapi.abstracts.CommonSendInvoiceData +import dev.inmo.tgbotapi.abstracts.types.* import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent import dev.inmo.tgbotapi.types.payments.LabeledPrice import dev.inmo.tgbotapi.types.payments.LabeledPricesSerializer import dev.inmo.tgbotapi.types.payments.abstracts.Currency diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt index 2333518679..0471509f89 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt @@ -1,17 +1,19 @@ package dev.inmo.tgbotapi.requests.send.polls import com.soywiz.klock.DateTime -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageRequest import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource -import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass import dev.inmo.tgbotapi.types.message.content.PollContent +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.types.polls.* import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/CallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/CallbackQuery.kt index dbbd8a2699..c5bcff1c70 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/CallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/CallbackQuery.kt @@ -1,17 +1,7 @@ package dev.inmo.tgbotapi.types.CallbackQuery -import dev.inmo.tgbotapi.CommonAbstracts.FromUser -import dev.inmo.tgbotapi.types.CallbackQueryIdentifier -import dev.inmo.tgbotapi.types.User +@Deprecated("Replaced", ReplaceWith("CallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.CallbackQuery")) +typealias CallbackQuery = dev.inmo.tgbotapi.types.queries.callback.CallbackQuery -sealed interface CallbackQuery : FromUser { - val id: CallbackQueryIdentifier - val chatInstance: String -} - -data class UnknownCallbackQueryType( - override val id: CallbackQueryIdentifier, - override val from: User, - override val chatInstance: String, - val raw: String -) : CallbackQuery +@Deprecated("Replaced", ReplaceWith("UnknownCallbackQueryType", "dev.inmo.tgbotapi.types.queries.callback.UnknownCallbackQueryType")) +typealias UnknownCallbackQueryType = dev.inmo.tgbotapi.types.queries.callback.UnknownCallbackQueryType diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/DataCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/DataCallbackQuery.kt index 9858b3a996..80152765da 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/DataCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/DataCallbackQuery.kt @@ -1,10 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -/** - * [CallbackQuery] with [data] field - * - * @see dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton - */ -sealed interface DataCallbackQuery : CallbackQuery { - val data: String -} +@Deprecated("Replaced", ReplaceWith("DataCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery")) +typealias DataCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/GameShortNameCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/GameShortNameCallbackQuery.kt index 512f5f02d4..a200ae40db 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/GameShortNameCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/GameShortNameCallbackQuery.kt @@ -1,5 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -sealed interface GameShortNameCallbackQuery : CallbackQuery { - val gameShortName: String -} +@Deprecated("Replaced", ReplaceWith("GameShortNameCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.GameShortNameCallbackQuery")) +typealias GameShortNameCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.GameShortNameCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdCallbackQuery.kt index 4c23c6d8d6..37eb7a8c69 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdCallbackQuery.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -import dev.inmo.tgbotapi.types.InlineMessageIdentifier - -sealed interface InlineMessageIdCallbackQuery : CallbackQuery { - val inlineMessageId: InlineMessageIdentifier -} +@Deprecated("Replaced", ReplaceWith("InlineMessageIdCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdCallbackQuery")) +typealias InlineMessageIdCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdDataCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdDataCallbackQuery.kt index bdb013340e..5d49e5bcb3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdDataCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdDataCallbackQuery.kt @@ -1,11 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -import dev.inmo.tgbotapi.types.* - -data class InlineMessageIdDataCallbackQuery( - override val id: CallbackQueryIdentifier, - override val from: User, - override val chatInstance: String, - override val inlineMessageId: InlineMessageIdentifier, - override val data: String -) : DataCallbackQuery, InlineMessageIdCallbackQuery +@Deprecated("Replaced", ReplaceWith("InlineMessageIdDataCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdDataCallbackQuery")) +typealias InlineMessageIdDataCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdDataCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdGameShortNameCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdGameShortNameCallbackQuery.kt index 8369e71332..d133eb4a5f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdGameShortNameCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/InlineMessageIdGameShortNameCallbackQuery.kt @@ -1,11 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -import dev.inmo.tgbotapi.types.* - -data class InlineMessageIdGameShortNameCallbackQuery( - override val id: CallbackQueryIdentifier, - override val from: User, - override val chatInstance: String, - override val inlineMessageId: InlineMessageIdentifier, - override val gameShortName: String -) : GameShortNameCallbackQuery, InlineMessageIdCallbackQuery +@Deprecated("Replaced", ReplaceWith("InlineMessageIdGameShortNameCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdGameShortNameCallbackQuery")) +typealias InlineMessageIdGameShortNameCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdGameShortNameCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageCallbackQuery.kt index 7db3589341..07f1c2bf88 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageCallbackQuery.kt @@ -1,8 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent - -sealed interface MessageCallbackQuery : CallbackQuery { - val message: ContentMessage -} +@Deprecated("Replaced", ReplaceWith("MessageCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.MessageCallbackQuery")) +typealias MessageCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.MessageCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageDataCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageDataCallbackQuery.kt index fac77ae179..10fa1bf4f7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageDataCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageDataCallbackQuery.kt @@ -1,14 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -import dev.inmo.tgbotapi.types.CallbackQueryIdentifier -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent - -data class MessageDataCallbackQuery( - override val id: CallbackQueryIdentifier, - override val from: User, - override val chatInstance: String, - override val message: ContentMessage, - override val data: String -) : DataCallbackQuery, MessageCallbackQuery +@Deprecated("Replaced", ReplaceWith("MessageDataCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.MessageDataCallbackQuery")) +typealias MessageDataCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.MessageDataCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageGameShortNameCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageGameShortNameCallbackQuery.kt index 88c66aca9a..ac2ce35f72 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageGameShortNameCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/MessageGameShortNameCallbackQuery.kt @@ -1,14 +1,4 @@ package dev.inmo.tgbotapi.types.CallbackQuery -import dev.inmo.tgbotapi.types.CallbackQueryIdentifier -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent - -data class MessageGameShortNameCallbackQuery( - override val id: CallbackQueryIdentifier, - override val from: User, - override val chatInstance: String, - override val message: ContentMessage, - override val gameShortName: String -) : GameShortNameCallbackQuery, MessageCallbackQuery +@Deprecated("Replaced", ReplaceWith("MessageGameShortNameCallbackQuery", "dev.inmo.tgbotapi.types.queries.callback.MessageGameShortNameCallbackQuery")) +typealias MessageGameShortNameCallbackQuery = dev.inmo.tgbotapi.types.queries.callback.MessageGameShortNameCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt index b7398fa49d..6f88f65b07 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt @@ -1,31 +1,4 @@ package dev.inmo.tgbotapi.types -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatAdministratorRights -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ChatAdministratorRightsImpl( - @SerialName(canChangeInfoField) - override val canChangeInfo: Boolean = false, - @SerialName(canPostMessagesField) - override val canPostMessages: Boolean = false, - @SerialName(canEditMessagesField) - override val canEditMessages: Boolean = false, - @SerialName(canDeleteMessagesField) - override val canRemoveMessages: Boolean = false, - @SerialName(canInviteUsersField) - override val canInviteUsers: Boolean = false, - @SerialName(canRestrictMembersField) - override val canRestrictMembers: Boolean = false, - @SerialName(canPinMessagesField) - override val canPinMessages: Boolean = false, - @SerialName(canPromoteMembersField) - override val canPromoteMembers: Boolean = false, - @SerialName(canManageVideoChatsField) - override val canManageVideoChats: Boolean = false, - @SerialName(canManageChatField) - override val canManageChat: Boolean = false, - @SerialName(isAnonymousField) - override val isAnonymous: Boolean = false -) : ChatAdministratorRights +@Deprecated("Renamed", ReplaceWith("ChatAdministratorRightsImpl", "dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl")) +typealias ChatAdministratorRightsImpl = dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt index 9d0ba534b5..b7ea893b3c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types import dev.inmo.micro_utils.common.Warning +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.utils.RiskFeature import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt index 76b7d58127..91a295a843 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt @@ -1,7 +1,8 @@ package dev.inmo.tgbotapi.types import com.soywiz.klock.DateTime -import dev.inmo.tgbotapi.CommonAbstracts.WithUser +import dev.inmo.tgbotapi.abstracts.WithUser +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.utils.RiskFeature import kotlinx.serialization.* import kotlinx.serialization.descriptors.SerialDescriptor @@ -57,10 +58,6 @@ sealed interface ChatInviteLink : WithUser { override val user: User get() = creator - - companion object { - fun serializer(): KSerializer = ChatInviteLinkSerializer - } } /** @@ -70,10 +67,6 @@ sealed interface ChatInviteLink : WithUser { sealed interface SecondaryChatInviteLink : ChatInviteLink { override val isPrimary: Boolean get() = false - - companion object { - fun serializer(): KSerializer = ChatInviteLinkSerializer as KSerializer - } } /** diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatLocation.kt index 3d24f1eb8f..d9b998ad2d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatLocation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatLocation.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Serializable * Represents a location to which a chat is connected. * * @see dev.inmo.tgbotapi.requests.chat.get.GetChat - * @see dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedSupergroupChat + * @see dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChat */ @Serializable data class ChatLocation( diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt index b79d44145d..5e30fbbe29 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt @@ -1,41 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember -import kotlinx.serialization.* - -@Serializable -data class AdministratorChatMemberImpl( - @SerialName(userField) - override val user: User, - @SerialName(canBeEditedField) - override val canBeEdited: Boolean = false, - @SerialName(canChangeInfoField) - override val canChangeInfo: Boolean = false, - @SerialName(canPostMessagesField) - override val canPostMessages: Boolean = false, - @SerialName(canEditMessagesField) - override val canEditMessages: Boolean = false, - @SerialName(canDeleteMessagesField) - override val canRemoveMessages: Boolean = false, - @SerialName(canInviteUsersField) - override val canInviteUsers: Boolean = false, - @SerialName(canRestrictMembersField) - override val canRestrictMembers: Boolean = false, - @SerialName(canPinMessagesField) - override val canPinMessages: Boolean = false, - @SerialName(canPromoteMembersField) - override val canPromoteMembers: Boolean = false, - @SerialName(canManageVideoChatsField) - override val canManageVideoChats: Boolean = false, - @SerialName(canManageChatField) - override val canManageChat: Boolean = false, - @SerialName(isAnonymousField) - override val isAnonymous: Boolean = false, - @SerialName(customTitleField) - override val customTitle: String? = null -) : AdministratorChatMember { - @SerialName(statusField) - @Required - private val type: String = "administrator" -} +@Deprecated("AdministratorChatMemberImpl", ReplaceWith("AdministratorChatMemberImpl", "dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl")) +typealias AdministratorChatMemberImpl = dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt index 36da996d9a..045772c3d3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt @@ -1,40 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember -import kotlinx.serialization.* - -@Serializable -data class CreatorChatMember( - override val user: User, - @SerialName(isAnonymousField) - override val isAnonymous: Boolean = false, - @SerialName(customTitleField) - override val customTitle: String? = null -) : AdministratorChatMember { - @Transient - override val canBeEdited: Boolean = true - @Transient - override val canChangeInfo: Boolean = true - @Transient - override val canPostMessages: Boolean = true - @Transient - override val canEditMessages: Boolean = true - @Transient - override val canRemoveMessages: Boolean = true - @Transient - override val canInviteUsers: Boolean = true - @Transient - override val canRestrictMembers: Boolean = true - @Transient - override val canPinMessages: Boolean = true - @Transient - override val canPromoteMembers: Boolean = true - @Transient - override val canManageVideoChats: Boolean = true - @Transient - override val canManageChat: Boolean = true - @SerialName(statusField) - @Required - private val type: String = "creator" -} +@Deprecated("CreatorChatMember", ReplaceWith("CreatorChatMember", "dev.inmo.tgbotapi.types.chat.member.CreatorChatMember")) +typealias CreatorChatMember = dev.inmo.tgbotapi.types.chat.member.CreatorChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt index df8b87734c..fd14d6cb5b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt @@ -1,17 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.BannedChatMember -import kotlinx.serialization.* - -@Serializable -data class KickedChatMember( - @SerialName(userField) - override val user: User, - @SerialName(untilDateField) - override val untilDate: TelegramDate? = null -) : BannedChatMember { - @SerialName(statusField) - @Required - private val type: String = "kicked" -} \ No newline at end of file +@Deprecated("KickedChatMember", ReplaceWith("KickedChatMember", "dev.inmo.tgbotapi.types.chat.member.KickedChatMember")) +typealias KickedChatMember = dev.inmo.tgbotapi.types.chat.member.KickedChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt index d12e4b551b..c14ceae383 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt @@ -1,12 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.LeftChatMember -import kotlinx.serialization.* - -@Serializable -data class LeftChatMemberImpl(@SerialName(userField) override val user: User) : LeftChatMember { - @SerialName(statusField) - @Required - private val type: String = "left" -} +@Deprecated("LeftChatMemberImpl", ReplaceWith("LeftChatMemberImpl", "dev.inmo.tgbotapi.types.chat.member.LeftChatMemberImpl")) +typealias LeftChatMemberImpl = dev.inmo.tgbotapi.types.chat.member.LeftChatMemberImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt index 0f76788380..2e1e6cef43 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt @@ -1,12 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.MemberChatMember -import kotlinx.serialization.* - -@Serializable -data class MemberChatMemberImpl(@SerialName(userField) override val user: User) : MemberChatMember { - @SerialName(statusField) - @Required - private val type: String = "member" -} +@Deprecated("MemberChatMemberImpl", ReplaceWith("MemberChatMemberImpl", "dev.inmo.tgbotapi.types.chat.member.MemberChatMemberImpl")) +typealias MemberChatMemberImpl = dev.inmo.tgbotapi.types.chat.member.MemberChatMemberImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt index dab888e2cc..ffd910bbba 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt @@ -1,36 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.BannedChatMember -import dev.inmo.tgbotapi.types.ChatMember.abstracts.SpecialRightsChatMember -import kotlinx.serialization.* - -@Serializable -data class RestrictedChatMember( - @SerialName(userField) - override val user: User, - @SerialName(untilDateField) - override val untilDate: TelegramDate? = null, - @SerialName(isMemberField) - val isMember: Boolean = false, - @SerialName(canSendMessagesField) - val canSendMessages: Boolean = false, - @SerialName(canSendMediaMessagesField) - val canSendMediaMessages: Boolean = false, - @SerialName(canSendPollsField) - val canSendPolls: Boolean = false, - @SerialName(canSendOtherMessagesField) - val canSendOtherMessages: Boolean = false, - @SerialName(canAddWebPagePreviewsField) - val canAddWebpagePreviews: Boolean = false, - @SerialName(canChangeInfoField) - override val canChangeInfo: Boolean = false, - @SerialName(canInviteUsersField) - override val canInviteUsers: Boolean = false, - @SerialName(canPinMessagesField) - override val canPinMessages: Boolean = false -) : BannedChatMember, SpecialRightsChatMember { - @SerialName(statusField) - @Required - private val type: String = "restricted" -} \ No newline at end of file +@Deprecated("RestrictedChatMember", ReplaceWith("RestrictedChatMember", "dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember")) +typealias RestrictedChatMember = dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt index 9d48b9f9ad..05cb4364dc 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt @@ -1,25 +1,7 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import dev.inmo.tgbotapi.utils.RiskFeature -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder +@Deprecated("AdministratorChatMember", ReplaceWith("AdministratorChatMember", "dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember")) +typealias AdministratorChatMember = dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember -@Serializable(AdministratorChatMemberSerializer::class) -interface AdministratorChatMember : SpecialRightsChatMember, ChatAdministratorRights { - val canBeEdited: Boolean - val customTitle: String? - - val canManageVoiceChats: Boolean - get() = canManageVideoChats -} - -@RiskFeature -object AdministratorChatMemberSerializer : KSerializer { - override val descriptor: SerialDescriptor = ChatMemberSerializer.descriptor - - override fun deserialize(decoder: Decoder): AdministratorChatMember = ChatMemberSerializer.deserialize(decoder) as AdministratorChatMember - override fun serialize(encoder: Encoder, value: AdministratorChatMember) = ChatMemberSerializer.serialize(encoder, value) -} +@Deprecated("AdministratorChatMemberSerializer", ReplaceWith("AdministratorChatMemberSerializer", "dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberSerializer")) +typealias AdministratorChatMemberSerializer = dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt index 52da711ddf..6fd4f6867c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.UntilDate -import kotlinx.serialization.Serializable - -@Serializable(ChatMemberSerializer::class) -interface BannedChatMember : ChatMember, UntilDate \ No newline at end of file +@Deprecated("BannedChatMember", ReplaceWith("BannedChatMember", "dev.inmo.tgbotapi.types.chat.member.BannedChatMember")) +typealias BannedChatMember = dev.inmo.tgbotapi.types.chat.member.BannedChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt index 61a3889778..93c0cbc72a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt @@ -1,18 +1,7 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -sealed interface SpecialChatAdministratorRights { - val canChangeInfo: Boolean - val canInviteUsers: Boolean - val canPinMessages: Boolean -} +@Deprecated("SpecialChatAdministratorRights", ReplaceWith("SpecialChatAdministratorRights", "dev.inmo.tgbotapi.types.chat.member.SpecialChatAdministratorRights")) +typealias SpecialChatAdministratorRights = dev.inmo.tgbotapi.types.chat.member.SpecialChatAdministratorRights -interface ChatAdministratorRights : SpecialChatAdministratorRights { - val isAnonymous: Boolean - val canManageChat: Boolean - val canRemoveMessages: Boolean - val canManageVideoChats: Boolean - val canRestrictMembers: Boolean - val canPromoteMembers: Boolean - val canPostMessages: Boolean - val canEditMessages: Boolean -} +@Deprecated("ChatAdministratorRights", ReplaceWith("ChatAdministratorRights", "dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRights")) +typealias ChatAdministratorRights = dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRights diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt index 8b6de401ab..6498f6090d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt @@ -1,47 +1,7 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.WithUser -import dev.inmo.tgbotapi.types.ChatMember.* -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.statusField -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.nonstrictJsonFormat -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.jsonPrimitive +@Deprecated("ChatMember", ReplaceWith("ChatMember", "dev.inmo.tgbotapi.types.chat.member.ChatMember")) +typealias ChatMember = dev.inmo.tgbotapi.types.chat.member.ChatMember -@Serializable(ChatMemberSerializer::class) -sealed interface ChatMember : WithUser - -@RiskFeature -object ChatMemberSerializer : KSerializer { - override val descriptor: SerialDescriptor = JsonObject.serializer().descriptor - - override fun deserialize(decoder: Decoder): ChatMember { - val json = JsonObject.serializer().deserialize(decoder) - return when (json[statusField] ?.jsonPrimitive ?.content ?: error("Status field of chat member must be specified, but incoming json contains next: $json")) { - "creator" -> nonstrictJsonFormat.decodeFromJsonElement(CreatorChatMember.serializer(), json) - "administrator" -> nonstrictJsonFormat.decodeFromJsonElement(AdministratorChatMemberImpl.serializer(), json) - "member" -> nonstrictJsonFormat.decodeFromJsonElement(MemberChatMemberImpl.serializer(), json) - "restricted" -> nonstrictJsonFormat.decodeFromJsonElement(RestrictedChatMember.serializer(), json) - "left" -> nonstrictJsonFormat.decodeFromJsonElement(LeftChatMemberImpl.serializer(), json) - "kicked" -> nonstrictJsonFormat.decodeFromJsonElement(KickedChatMember.serializer(), json) - else -> error("Unknown type of chat member in json: $json") - } - } - - override fun serialize(encoder: Encoder, value: ChatMember) { - when (value) { - is CreatorChatMember -> CreatorChatMember.serializer() - is AdministratorChatMemberImpl -> AdministratorChatMemberImpl.serializer() - is MemberChatMember -> MemberChatMemberImpl.serializer() - is RestrictedChatMember -> RestrictedChatMember.serializer() - is LeftChatMember -> LeftChatMemberImpl.serializer() - is KickedChatMember -> KickedChatMember.serializer() - } - } -} +@Deprecated("ChatMemberSerializer", ReplaceWith("ChatMemberSerializer", "dev.inmo.tgbotapi.types.chat.member.ChatMemberSerializer")) +typealias ChatMemberSerializer = dev.inmo.tgbotapi.types.chat.member.ChatMemberSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt index 7a31dfc9a8..831545fe87 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt @@ -1,3 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -interface LeftChatMember : ChatMember +@Deprecated("LeftChatMember", ReplaceWith("LeftChatMember", "dev.inmo.tgbotapi.types.chat.member.LeftChatMember")) +typealias LeftChatMember = dev.inmo.tgbotapi.types.chat.member.LeftChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt index 665aeb04aa..5885111058 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt @@ -1,3 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -interface MemberChatMember : ChatMember +@Deprecated("MemberChatMember", ReplaceWith("MemberChatMember", "dev.inmo.tgbotapi.types.chat.member.MemberChatMember")) +typealias MemberChatMember = dev.inmo.tgbotapi.types.chat.member.MemberChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt index 79cea14abb..0bf0cc79a3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt @@ -1,6 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import kotlinx.serialization.Serializable - -@Serializable(ChatMemberSerializer::class) -interface SpecialRightsChatMember : ChatMember, SpecialChatAdministratorRights +@Deprecated("SpecialRightsChatMember", ReplaceWith("SpecialRightsChatMember", "dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember")) +typealias SpecialRightsChatMember = dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index c90052f0c8..ccebdf3348 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -194,6 +194,13 @@ const val requestContactField = "request_contact" const val requestLocationField = "request_location" const val requestPollField = "request_poll" +const val fileNameField = "file_name" +const val mimeTypeField = "mime_type" +const val fileIdField = "file_id" +const val fileSizeField = "file_size" +const val fileDateField = "file_date" +const val filePathField = "file_path" + const val requestWriteAccessField = "request_write_access" @@ -384,6 +391,8 @@ const val requireShippingAddressField = "need_shipping_address" const val shouldSendPhoneNumberToProviderField = "send_phone_number_to_provider" const val shouldSendEmailToProviderField = "send_email_to_provider" +const val resizeKeyboardField = "resize_keyboard" +const val oneTimeKeyboardField = "one_time_keyboard" const val inputFieldPlaceholderField = "input_field_placeholder" const val priceDependOnShipAddressField = "is_flexible" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Contact.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Contact.kt index e8ed573d3d..1e11d16ad3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Contact.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Contact.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types -import dev.inmo.tgbotapi.CommonAbstracts.CommonContactData +import dev.inmo.tgbotapi.abstracts.CommonContactData import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/BaseChosenInlineResult.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/BaseChosenInlineResult.kt index a19a61d7a0..9e1a12dd4f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/BaseChosenInlineResult.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/BaseChosenInlineResult.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/ChosenInlineResult.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/ChosenInlineResult.kt index 8f0f91fc58..517cc023d8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/ChosenInlineResult.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/ChosenInlineResult.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult -import dev.inmo.tgbotapi.CommonAbstracts.FromUser +import dev.inmo.tgbotapi.abstracts.FromUser import dev.inmo.tgbotapi.types.InlineMessageIdentifier import dev.inmo.tgbotapi.types.InlineQueryIdentifier diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/LocationChosenInlineResult.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/LocationChosenInlineResult.kt index c56bc5e520..bca107a101 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/LocationChosenInlineResult.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/LocationChosenInlineResult.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.location.StaticLocation import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt index c16c87b3df..1d3cbebae6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.location.StaticLocation import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioCachedImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioCachedImpl.kt index 2e6e95be52..5006b600f3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioCachedImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioCachedImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCached import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.inlineQueryResultAudioType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioImpl.kt index f167a52275..08051002d7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultAudioImpl.kt @@ -4,11 +4,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudio import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.inlineQueryResultAudioType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultContact.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultContact.kt index 6403a79c8e..25ee6f4c9a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultContact.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultContact.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult -import dev.inmo.tgbotapi.CommonAbstracts.CommonContactData +import dev.inmo.tgbotapi.abstracts.CommonContactData import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentCachedImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentCachedImpl.kt index 2316fbeb7f..245fc786fd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentCachedImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentCachedImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCached import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.inlineQueryResultDocumentType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentImpl.kt index f5db3e5966..ea2d06a3cb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultDocumentImpl.kt @@ -4,12 +4,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocument import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.inlineQueryResultDocumentType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.files.abstracts.mimeTypeField +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.MimeType import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifCachedImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifCachedImpl.kt index af41a9c0c6..d67ae91a49 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifCachedImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifCachedImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCached import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.inlineQueryResultGifType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifImpl.kt index 6523e3ddf7..7945ea13f2 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultGifImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGif import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.inlineQueryResultGifType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.MimeType import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultLocation.kt index 7a7f383371..cd1426d15b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultLocation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultLocation.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult -import dev.inmo.tgbotapi.CommonAbstracts.* +import dev.inmo.tgbotapi.abstracts.* import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifCachedImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifCachedImpl.kt index e37425cee8..9c50134967 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifCachedImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifCachedImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCached import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.inlineQueryResultMpeg4GifType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifImpl.kt index c7d90cd9fb..bda5d0b884 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultMpeg4GifImpl.kt @@ -4,11 +4,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4Gif import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.inlineQueryResultMpeg4GifType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.MimeType import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoCachedImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoCachedImpl.kt index 39a35fdb30..8e4489060d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoCachedImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoCachedImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCached import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.inlineQueryResultPhotoType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoImpl.kt index 10c3467c27..905a51f47d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultPhotoImpl.kt @@ -4,11 +4,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhoto import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.inlineQueryResultPhotoType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVenue.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVenue.kt index a3dc134bfd..afd4b6ac3f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVenue.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVenue.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult -import dev.inmo.tgbotapi.CommonAbstracts.CommonVenueData -import dev.inmo.tgbotapi.CommonAbstracts.Locationed +import dev.inmo.tgbotapi.abstracts.CommonVenueData +import dev.inmo.tgbotapi.abstracts.Locationed import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoCachedImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoCachedImpl.kt index 955eaa587e..10b17463aa 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoCachedImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoCachedImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCached import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.inlineQueryResultVideoType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoImpl.kt index c9304ef296..c711860c18 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVideoImpl.kt @@ -4,12 +4,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideo import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.inlineQueryResultVideoType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.files.abstracts.mimeTypeField +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.MimeType import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceCachedImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceCachedImpl.kt index 41f3b6145a..ce55825492 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceCachedImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceCachedImpl.kt @@ -5,11 +5,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCached import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.inlineQueryResultVoiceType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceImpl.kt index 9b7e511f60..ee15ecea1f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/InlineQueryResultVoiceImpl.kt @@ -4,11 +4,13 @@ import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoice import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.inlineQueryResultVoiceType import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/OptionallyTitledInlineQueryResult.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/OptionallyTitledInlineQueryResult.kt index 66a9dae772..5708383a78 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/OptionallyTitledInlineQueryResult.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/OptionallyTitledInlineQueryResult.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.Titled +import dev.inmo.tgbotapi.abstracts.Titled interface OptionallyTitledInlineQueryResult : InlineQueryResult, Titled diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudio.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudio.kt index 9ad95a8ed8..8a40cccabf 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudio.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudio.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio -import dev.inmo.tgbotapi.CommonAbstracts.Performerable +import dev.inmo.tgbotapi.abstracts.Performerable import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* -interface InlineQueryResultAudio : InlineQueryResultAudioCommon, UrlInlineQueryResult, DuratedInlineResultQuery, Performerable, TitledInlineQueryResult \ No newline at end of file +interface InlineQueryResultAudio : InlineQueryResultAudioCommon, UrlInlineQueryResult, DuratedInlineResultQuery, + Performerable, TitledInlineQueryResult diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudioCommon.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudioCommon.kt index b56f188204..13f5ee462e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudioCommon.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/audio/InlineQueryResultAudioCommon.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.InlineQueryResult import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.WithInputMessageContentInlineQueryResult diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocument.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocument.kt index ca527256b7..b89899a7f0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocument.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocument.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document -import dev.inmo.tgbotapi.CommonAbstracts.MimeTyped +import dev.inmo.tgbotapi.abstracts.MimeTyped import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* -interface InlineQueryResultDocument : InlineQueryResultDocumentCommon, UrlInlineQueryResult, ThumbedInlineQueryResult, ThumbSizedInlineQueryResult, MimeTyped \ No newline at end of file +interface InlineQueryResultDocument : InlineQueryResultDocumentCommon, UrlInlineQueryResult, ThumbedInlineQueryResult, ThumbSizedInlineQueryResult, + MimeTyped diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocumentCommon.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocumentCommon.kt index 44ce297be0..f7f31976a5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocumentCommon.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/document/InlineQueryResultDocumentCommon.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* const val inlineQueryResultDocumentType = "document" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/gif/InlineQueryResultGifCommon.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/gif/InlineQueryResultGifCommon.kt index a99ba9c91c..7202d3b67a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/gif/InlineQueryResultGifCommon.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/gif/InlineQueryResultGifCommon.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* const val inlineQueryResultGifType = "gif" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/mpeg4gif/InlineQueryResultMpeg4GifCommon.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/mpeg4gif/InlineQueryResultMpeg4GifCommon.kt index cdf1e72963..7b1564aadf 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/mpeg4gif/InlineQueryResultMpeg4GifCommon.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/mpeg4gif/InlineQueryResultMpeg4GifCommon.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* const val inlineQueryResultMpeg4GifType = "mpeg4_gif" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/photo/InlineQueryResultPhotoCommon.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/photo/InlineQueryResultPhotoCommon.kt index 85a05c23a9..5de38e39a4 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/photo/InlineQueryResultPhotoCommon.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/photo/InlineQueryResultPhotoCommon.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* const val inlineQueryResultPhotoType = "photo" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideo.kt index c6b1b80d75..34f19bc3a7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideo.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideo.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video -import dev.inmo.tgbotapi.CommonAbstracts.MimeTyped +import dev.inmo.tgbotapi.abstracts.MimeTyped import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* -interface InlineQueryResultVideo : InlineQueryResultVideoCommon, UrlInlineQueryResult, ThumbedInlineQueryResult, MimeTyped, SizedInlineQueryResult, DuratedInlineResultQuery \ No newline at end of file +interface InlineQueryResultVideo : InlineQueryResultVideoCommon, UrlInlineQueryResult, ThumbedInlineQueryResult, + MimeTyped, SizedInlineQueryResult, DuratedInlineResultQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideoCommon.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideoCommon.kt index 1543537e76..b251ea994e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideoCommon.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/video/InlineQueryResultVideoCommon.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* const val inlineQueryResultVideoType = "video" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/voice/InlineQueryResultVoiceCommon.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/voice/InlineQueryResultVoiceCommon.kt index 5c1ffb868c..0d50e6a12a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/voice/InlineQueryResultVoiceCommon.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/results/voice/InlineQueryResultVoiceCommon.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.TextedOutput import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* const val inlineQueryResultVoiceType = "voice" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputContactMessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputContactMessageContent.kt index a410a5b375..59fd31b3bb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputContactMessageContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputContactMessageContent.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent -import dev.inmo.tgbotapi.CommonAbstracts.CommonContactData +import dev.inmo.tgbotapi.abstracts.CommonContactData import dev.inmo.tgbotapi.types.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputInvoiceMessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputInvoiceMessageContent.kt index 9f129a847a..b489aaf2e5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputInvoiceMessageContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputInvoiceMessageContent.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent -import dev.inmo.tgbotapi.CommonAbstracts.CommonSendInvoiceData +import dev.inmo.tgbotapi.abstracts.CommonSendInvoiceData import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.payments.LabeledPrice import dev.inmo.tgbotapi.types.payments.LabeledPricesSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputLocationMessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputLocationMessageContent.kt index 7f37707b9e..456d7e46cb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputLocationMessageContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputLocationMessageContent.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent -import dev.inmo.tgbotapi.CommonAbstracts.* +import dev.inmo.tgbotapi.abstracts.* import dev.inmo.tgbotapi.types.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputTextMessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputTextMessageContent.kt index fcb4a2b00f..d81fa7ac00 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputTextMessageContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputTextMessageContent.kt @@ -1,12 +1,14 @@ package dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput -import dev.inmo.tgbotapi.CommonAbstracts.types.DisableWebPagePreview +import dev.inmo.tgbotapi.abstracts.TextedOutput +import dev.inmo.tgbotapi.abstracts.types.DisableWebPagePreview import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputVenueMessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputVenueMessageContent.kt index 7f88cc74ce..122d979a79 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputVenueMessageContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputVenueMessageContent.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent -import dev.inmo.tgbotapi.CommonAbstracts.CommonVenueData -import dev.inmo.tgbotapi.CommonAbstracts.Locationed +import dev.inmo.tgbotapi.abstracts.CommonVenueData +import dev.inmo.tgbotapi.abstracts.Locationed import dev.inmo.tgbotapi.types.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/BaseInlineQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/BaseInlineQuery.kt index f05f362400..a359b62dc0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/BaseInlineQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/BaseInlineQuery.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.query import dev.inmo.tgbotapi.types.InlineQueryIdentifier -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.chat.ChatType data class BaseInlineQuery( diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/InlineQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/InlineQuery.kt index f94e97b18e..da90c82f88 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/InlineQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/InlineQuery.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.InlineQueries.query -import dev.inmo.tgbotapi.CommonAbstracts.FromUser +import dev.inmo.tgbotapi.abstracts.FromUser import dev.inmo.tgbotapi.types.InlineQueryIdentifier import dev.inmo.tgbotapi.types.chat.ChatType diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/LocationInlineQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/LocationInlineQuery.kt index 530e665eb7..ab9a40cc90 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/LocationInlineQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/LocationInlineQuery.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.InlineQueries.query import dev.inmo.tgbotapi.types.InlineQueryIdentifier -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.chat.ChatType import dev.inmo.tgbotapi.types.location.Location diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/RawInlineQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/RawInlineQuery.kt index 13808bbd40..71519ce891 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/RawInlineQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/query/RawInlineQuery.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.types.InlineQueries.query import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.ChatType -import dev.inmo.tgbotapi.types.chat.ChatTypeSerializer +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.location.Location import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/DuratedInputMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/DuratedInputMedia.kt deleted file mode 100644 index ed7af3d902..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/DuratedInputMedia.kt +++ /dev/null @@ -1,5 +0,0 @@ -package dev.inmo.tgbotapi.types.InputMedia - -sealed interface DuratedInputMedia : InputMedia { - val duration: Long? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAnimation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAnimation.kt index e038e9fef1..cf81ce9cfa 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAnimation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAnimation.kt @@ -1,17 +1,13 @@ package dev.inmo.tgbotapi.types.InputMedia -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput import dev.inmo.tgbotapi.requests.abstracts.InputFile -import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.media.TelegramMediaAnimation import dev.inmo.tgbotapi.utils.extensions.makeString -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaAnimation", "dev.inmo.tgbotapi.types.media.TelegramMediaAnimation")) fun InputMediaAnimation( file: InputFile, text: String? = null, @@ -20,8 +16,9 @@ fun InputMediaAnimation( height: Int? = null, duration: Long? = null, thumb: InputFile? = null -) = InputMediaAnimation(file, text, parseMode, null, width, height, duration, thumb) +) = TelegramMediaAnimation(file, text, parseMode, null, width, height, duration, thumb) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaAnimation", "dev.inmo.tgbotapi.types.media.TelegramMediaAnimation")) fun InputMediaAnimation( file: InputFile, entities: TextSourcesList, @@ -29,7 +26,7 @@ fun InputMediaAnimation( height: Int? = null, duration: Long? = null, thumb: InputFile? = null -) = InputMediaAnimation( +) = TelegramMediaAnimation( file, entities.makeString(), null, @@ -40,26 +37,3 @@ fun InputMediaAnimation( thumb ) -@Serializable -data class InputMediaAnimation internal constructor( - override val file: InputFile, - @SerialName(captionField) - override val text: String? = null, - @SerialName(parseModeField) - override val parseMode: ParseMode? = null, - @SerialName(captionEntitiesField) - private val rawEntities: List? = null, - override val width: Int? = null, - override val height: Int? = null, - override val duration: Long? = null, - override val thumb: InputFile? = null -) : InputMedia, SizedInputMedia, DuratedInputMedia, ThumbedInputMedia, TextedOutput { - override val type: String = "animation" - override val textSources: TextSourcesList? by lazy { - rawEntities ?.asTextSources(text ?: return@lazy null) - } - - @SerialName(mediaField) - override val media: String - init { media = file.fileIdToSend } // crutch until js compiling will be fixed -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAudio.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAudio.kt index 74ec4d15cf..2d47d3a0cb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAudio.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaAudio.kt @@ -1,19 +1,14 @@ package dev.inmo.tgbotapi.types.InputMedia -import dev.inmo.tgbotapi.CommonAbstracts.Performerable import dev.inmo.tgbotapi.requests.abstracts.InputFile -import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.files.AudioFile +import dev.inmo.tgbotapi.types.media.TelegramMediaAudio import dev.inmo.tgbotapi.utils.extensions.makeString -import kotlinx.serialization.* - -internal const val audioInputMediaType = "audio" +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaAudio", "dev.inmo.tgbotapi.types.media.TelegramMediaAudio")) fun InputMediaAudio( file: InputFile, entities: TextSourcesList, @@ -21,10 +16,11 @@ fun InputMediaAudio( performer: String? = null, title: String? = null, thumb: InputFile? = null -) = InputMediaAudio( +) = TelegramMediaAudio( file, entities.makeString(), null, entities.toRawMessageEntities(), duration, performer, title, thumb ) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaAudio", "dev.inmo.tgbotapi.types.media.TelegramMediaAudio")) fun InputMediaAudio( file: InputFile, text: String? = null, @@ -33,41 +29,16 @@ fun InputMediaAudio( performer: String? = null, title: String? = null, thumb: InputFile? = null -) = InputMediaAudio( +) = TelegramMediaAudio( file, text, parseMode, null, duration, performer, title, thumb ) -@Serializable -data class InputMediaAudio internal constructor( - override val file: InputFile, - @SerialName(captionField) - override val text: String? = null, - @SerialName(parseModeField) - override val parseMode: ParseMode? = null, - @SerialName(captionEntitiesField) - private val rawEntities: List? = null, - override val duration: Long? = null, - override val performer: String? = null, - override val title: String? = null, - override val thumb: InputFile? = null -) : InputMedia, AudioMediaGroupMemberInputMedia, DuratedInputMedia, ThumbedInputMedia, TitledInputMedia, Performerable { - override val type: String = audioInputMediaType - override val textSources: TextSourcesList? by lazy { - rawEntities ?.asTextSources(text ?: return@lazy null) - } - - override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) - - @SerialName(mediaField) - override val media: String - init { media = file.fileIdToSend } // crutch until js compiling will be fixed -} - +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaAudio", "dev.inmo.tgbotapi.types.media.TelegramMediaAudio")) fun AudioFile.toInputMediaAudio( text: String? = null, parseMode: ParseMode? = null, title: String? = this.title -): InputMediaAudio = InputMediaAudio( +): InputMediaAudio = TelegramMediaAudio( fileId, text, parseMode, @@ -77,10 +48,11 @@ fun AudioFile.toInputMediaAudio( thumb ?.fileId ) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaAudio", "dev.inmo.tgbotapi.types.media.TelegramMediaAudio")) fun AudioFile.toInputMediaAudio( textSources: TextSourcesList = emptyList(), title: String? = this.title -): InputMediaAudio = InputMediaAudio( +): InputMediaAudio = TelegramMediaAudio( fileId, textSources, duration, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaDocument.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaDocument.kt index 7c503c4431..26410ef131 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaDocument.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaDocument.kt @@ -1,31 +1,29 @@ package dev.inmo.tgbotapi.types.InputMedia -import dev.inmo.tgbotapi.requests.abstracts.* -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.requests.abstracts.InputFile +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.files.DocumentFile +import dev.inmo.tgbotapi.types.media.TelegramMediaDocument import dev.inmo.tgbotapi.utils.extensions.makeString -import kotlinx.serialization.* - -internal const val documentInputMediaType = "document" +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaDocument", "dev.inmo.tgbotapi.types.media.TelegramMediaDocument")) fun InputMediaDocument( file: InputFile, text: String? = null, parseMode: ParseMode? = null, thumb: InputFile? = null, disableContentTypeDetection: Boolean? = null -) = InputMediaDocument(file, text, parseMode, null, thumb, disableContentTypeDetection) +) = TelegramMediaDocument(file, text, parseMode, null, thumb, disableContentTypeDetection) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaDocument", "dev.inmo.tgbotapi.types.media.TelegramMediaDocument")) fun InputMediaDocument( file: InputFile, entities: TextSourcesList, thumb: InputFile? = null, disableContentTypeDetection: Boolean? = null -) = InputMediaDocument( +) = TelegramMediaDocument( file, entities.makeString(), null, @@ -34,54 +32,21 @@ fun InputMediaDocument( disableContentTypeDetection ) -/** - * Represents a general file to be sent. See https://core.telegram.org/bots/api#inputmediadocument - * - * @param disableContentTypeDetection Disables automatic server-side content type detection for files uploaded using - * multipart/form-data. Always used by Telegram system as true, if the document is sent as part of an album. - * - * @see InputFile - * @see MultipartFile - * @see FileId - */ -@Serializable -data class InputMediaDocument internal constructor( - override val file: InputFile, - @SerialName(captionField) - override val text: String? = null, - @SerialName(parseModeField) - override val parseMode: ParseMode? = null, - @SerialName(captionEntitiesField) - private val rawEntities: List? = null, - override val thumb: InputFile? = null, - @SerialName(disableContentTypeDetectionField) - val disableContentTypeDetection: Boolean? = null -) : InputMedia, DocumentMediaGroupMemberInputMedia, ThumbedInputMedia { - override val type: String = documentInputMediaType - override val textSources: TextSourcesList? by lazy { - rawEntities ?.asTextSources(text ?: return@lazy null) - } - - override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) - - @SerialName(mediaField) - override val media: String - init { media = file.fileIdToSend } // crutch until js compiling will be fixed -} - +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaDocument", "dev.inmo.tgbotapi.types.media.TelegramMediaDocument")) fun DocumentFile.toInputMediaDocument( text: String? = null, parseMode: ParseMode? = null -) = InputMediaDocument( +) = TelegramMediaDocument( fileId, text, parseMode, thumb ?.fileId ) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaDocument", "dev.inmo.tgbotapi.types.media.TelegramMediaDocument")) fun DocumentFile.toInputMediaDocument( textSources: TextSourcesList = emptyList() -) = InputMediaDocument( +) = TelegramMediaDocument( fileId, textSources, thumb ?.fileId diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaPhoto.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaPhoto.kt index 1e74d24566..d554eecbc7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaPhoto.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaPhoto.kt @@ -1,63 +1,40 @@ package dev.inmo.tgbotapi.types.InputMedia import dev.inmo.tgbotapi.requests.abstracts.InputFile -import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.files.PhotoSize +import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto import dev.inmo.tgbotapi.utils.extensions.makeString -import kotlinx.serialization.* - -internal const val photoInputMediaType = "photo" +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaPhoto", "dev.inmo.tgbotapi.types.media.TelegramMediaPhoto")) fun InputMediaPhoto( file: InputFile, text: String? = null, parseMode: ParseMode? = null -) = InputMediaPhoto(file, text, parseMode, null) +) = TelegramMediaPhoto(file, text, parseMode, null) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaPhoto", "dev.inmo.tgbotapi.types.media.TelegramMediaPhoto")) fun InputMediaPhoto( file: InputFile, entities: TextSourcesList -) = InputMediaPhoto(file, entities.makeString(), null, entities.toRawMessageEntities()) - -@Serializable -data class InputMediaPhoto internal constructor( - override val file: InputFile, - @SerialName(captionField) - override val text: String? = null, - @SerialName(parseModeField) - override val parseMode: ParseMode? = null, - @SerialName(captionEntitiesField) - private val rawEntities: List? = null -) : InputMedia, VisualMediaGroupMemberInputMedia { - override val type: String = photoInputMediaType - override val textSources: TextSourcesList? by lazy { - rawEntities ?.asTextSources(text ?: return@lazy null) - } - - override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) - - @SerialName(mediaField) - override val media: String - init { media = file.fileIdToSend } // crutch until js compiling will be fixed -} +) = TelegramMediaPhoto(file, entities.makeString(), null, entities.toRawMessageEntities()) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaPhoto", "dev.inmo.tgbotapi.types.media.TelegramMediaPhoto")) fun PhotoSize.toInputMediaPhoto( text: String? = null, parseMode: ParseMode? = null -): InputMediaPhoto = InputMediaPhoto( +): InputMediaPhoto = TelegramMediaPhoto( fileId, text, parseMode ) +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaPhoto", "dev.inmo.tgbotapi.types.media.TelegramMediaPhoto")) fun PhotoSize.toInputMediaPhoto( textSources: TextSourcesList = emptyList() -): InputMediaPhoto = InputMediaPhoto( +): InputMediaPhoto = TelegramMediaPhoto( fileId, textSources ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaSerializer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaSerializer.kt deleted file mode 100644 index 5a6bf23735..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaSerializer.kt +++ /dev/null @@ -1,28 +0,0 @@ -package dev.inmo.tgbotapi.types.InputMedia - -import dev.inmo.tgbotapi.utils.RiskFeature -import kotlinx.serialization.InternalSerializationApi -import kotlinx.serialization.KSerializer -import kotlinx.serialization.descriptors.* -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder - -@RiskFeature -object InputMediaSerializer : KSerializer { - @OptIn(InternalSerializationApi::class) - override val descriptor: SerialDescriptor = buildSerialDescriptor(InputMedia::class.toString(), PolymorphicKind.OPEN) - override fun serialize(encoder: Encoder, value: InputMedia) { - when (value) { - is InputMediaVideo -> InputMediaVideo.serializer().serialize(encoder, value) - is InputMediaAudio -> InputMediaAudio.serializer().serialize(encoder, value) - is InputMediaPhoto -> InputMediaPhoto.serializer().serialize(encoder, value) - is InputMediaAnimation -> InputMediaAnimation.serializer().serialize(encoder, value) - is InputMediaDocument -> InputMediaDocument.serializer().serialize(encoder, value) - else -> throw IllegalArgumentException("Can't perform and serialize $value") - } - } - - override fun deserialize(decoder: Decoder): InputMedia { - throw IllegalStateException("Object can't be deserialized") - } -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaVideo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaVideo.kt index 243f14131a..64d64d8a39 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaVideo.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMediaVideo.kt @@ -1,17 +1,13 @@ package dev.inmo.tgbotapi.types.InputMedia import dev.inmo.tgbotapi.requests.abstracts.InputFile -import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.ParseMode.parseModeField +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.media.TelegramMediaVideo import dev.inmo.tgbotapi.utils.extensions.makeString -import kotlinx.serialization.* - -internal const val videoInputMediaType = "video" +@Deprecated("Replaced and renamed", ReplaceWith("TelegramMediaVideo", "dev.inmo.tgbotapi.types.media.TelegramMediaVideo")) fun InputMediaVideo( file: InputFile, text: String? = null, @@ -20,7 +16,7 @@ fun InputMediaVideo( height: Int? = null, duration: Long? = null, thumb: InputFile? = null -) = InputMediaVideo(file, text, parseMode, null, width, height, duration, thumb) +) = TelegramMediaVideo(file, text, parseMode, null, width, height, duration, thumb) fun InputMediaVideo( file: InputFile, @@ -29,30 +25,4 @@ fun InputMediaVideo( height: Int? = null, duration: Long? = null, thumb: InputFile? = null -) = InputMediaVideo(file, entities.makeString(), null, entities.toRawMessageEntities(), width, height, duration, thumb) - -@Serializable -data class InputMediaVideo internal constructor ( - override val file: InputFile, - @SerialName(captionField) - override val text: String? = null, - @SerialName(parseModeField) - override val parseMode: ParseMode? = null, - @SerialName(captionEntitiesField) - private val rawEntities: List? = null, - override val width: Int? = null, - override val height: Int? = null, - override val duration: Long? = null, - override val thumb: InputFile? = null -) : InputMedia, SizedInputMedia, DuratedInputMedia, ThumbedInputMedia, VisualMediaGroupMemberInputMedia { - override val type: String = videoInputMediaType - override val textSources: TextSourcesList? by lazy { - rawEntities ?.asTextSources(text ?: return@lazy null) - } - - override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) - - @SerialName(mediaField) - override val media: String - init { media = file.fileIdToSend } // crutch until js compiling will be fixed -} +) = TelegramMediaVideo(file, entities.makeString(), null, entities.toRawMessageEntities(), width, height, duration, thumb) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/MediaGroupMemberInputMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/MediaGroupMemberInputMedia.kt deleted file mode 100644 index 21b30e4e02..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/MediaGroupMemberInputMedia.kt +++ /dev/null @@ -1,26 +0,0 @@ -package dev.inmo.tgbotapi.types.InputMedia - -import dev.inmo.tgbotapi.CommonAbstracts.TextedOutput -import kotlinx.serialization.* -import kotlinx.serialization.json.Json - -internal val argumentsFormatter by lazy { - Json { - encodeDefaults = true - } -} -internal fun T.buildArguments(withSerializer: SerializationStrategy) = argumentsFormatter.encodeToJsonElement( - withSerializer, - this -) - -@Serializable(MediaGroupMemberInputMediaSerializer::class) -sealed interface MediaGroupMemberInputMedia : InputMedia, TextedOutput { - fun serialize(format: StringFormat): String -} - -sealed interface AudioMediaGroupMemberInputMedia: MediaGroupMemberInputMedia -sealed interface DocumentMediaGroupMemberInputMedia: MediaGroupMemberInputMedia - -@Serializable(MediaGroupMemberInputMediaSerializer::class) -sealed interface VisualMediaGroupMemberInputMedia : MediaGroupMemberInputMedia diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt deleted file mode 100644 index 9c1f4bca79..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt +++ /dev/null @@ -1,37 +0,0 @@ -package dev.inmo.tgbotapi.types.InputMedia - -import dev.inmo.tgbotapi.types.typeField -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.nonstrictJsonFormat -import kotlinx.serialization.InternalSerializationApi -import kotlinx.serialization.KSerializer -import kotlinx.serialization.descriptors.* -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.json.* - -@RiskFeature -object MediaGroupMemberInputMediaSerializer : KSerializer { - @OptIn(InternalSerializationApi::class) - override val descriptor: SerialDescriptor = buildSerialDescriptor(MediaGroupMemberInputMedia::class.toString(), PolymorphicKind.OPEN) - override fun serialize(encoder: Encoder, value: MediaGroupMemberInputMedia) { - when (value) { - is InputMediaPhoto -> InputMediaPhoto.serializer().serialize(encoder, value) - is InputMediaVideo -> InputMediaVideo.serializer().serialize(encoder, value) - is InputMediaAudio -> InputMediaAudio.serializer().serialize(encoder, value) - is InputMediaDocument -> InputMediaDocument.serializer().serialize(encoder, value) - } - } - - override fun deserialize(decoder: Decoder): MediaGroupMemberInputMedia { - val json = JsonObject.serializer().deserialize(decoder) - - return when (json[typeField] ?.jsonPrimitive ?.contentOrNull) { - photoInputMediaType -> nonstrictJsonFormat.decodeFromJsonElement(InputMediaPhoto.serializer(), json) - videoInputMediaType -> nonstrictJsonFormat.decodeFromJsonElement(InputMediaVideo.serializer(), json) - audioInputMediaType -> nonstrictJsonFormat.decodeFromJsonElement(InputMediaAudio.serializer(), json) - documentInputMediaType -> nonstrictJsonFormat.decodeFromJsonElement(InputMediaDocument.serializer(), json) - else -> error("Illegal type of incoming MediaGroupMemberInputMedia") - } - } -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/SizedInputMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/SizedInputMedia.kt deleted file mode 100644 index 2af7a352d4..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/SizedInputMedia.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.inmo.tgbotapi.types.InputMedia - -sealed interface SizedInputMedia : InputMedia { - val width: Int? - val height: Int? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/ThumbedInputMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/ThumbedInputMedia.kt deleted file mode 100644 index a377adb1cf..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/ThumbedInputMedia.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.InputMedia - -import dev.inmo.tgbotapi.requests.abstracts.InputFile - -sealed interface ThumbedInputMedia : InputMedia { - val thumb: InputFile? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/TitledInputMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/TitledInputMedia.kt deleted file mode 100644 index 95a4b9ccc8..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/TitledInputMedia.kt +++ /dev/null @@ -1,5 +0,0 @@ -package dev.inmo.tgbotapi.types.InputMedia - -sealed interface TitledInputMedia : InputMedia { - val title: String? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/Typealiases.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/Typealiases.kt new file mode 100644 index 0000000000..dee16d09fa --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/Typealiases.kt @@ -0,0 +1,34 @@ +package dev.inmo.tgbotapi.types.InputMedia + +@Deprecated("Replaced and renamed", ReplaceWith("DuratedInputMedia", "dev.inmo.tgbotapi.types.media.DuratedInputMedia")) +typealias DuratedInputMedia = dev.inmo.tgbotapi.types.media.DuratedTelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("InputMedia", "dev.inmo.tgbotapi.types.media.InputMedia")) +typealias InputMedia = dev.inmo.tgbotapi.types.media.TelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("InputMediaAnimation", "dev.inmo.tgbotapi.types.media.InputMediaAnimation")) +typealias InputMediaAnimation = dev.inmo.tgbotapi.types.media.TelegramMediaAnimation +@Deprecated("Replaced and renamed", ReplaceWith("InputMediaAudio", "dev.inmo.tgbotapi.types.media.InputMediaAudio")) +typealias InputMediaAudio = dev.inmo.tgbotapi.types.media.TelegramMediaAudio +@Deprecated("Replaced and renamed", ReplaceWith("InputMediaDocument", "dev.inmo.tgbotapi.types.media.InputMediaDocument")) +typealias InputMediaDocument = dev.inmo.tgbotapi.types.media.TelegramMediaDocument +@Deprecated("Replaced and renamed", ReplaceWith("InputMediaPhoto", "dev.inmo.tgbotapi.types.media.InputMediaPhoto")) +typealias InputMediaPhoto = dev.inmo.tgbotapi.types.media.TelegramMediaPhoto +@Deprecated("Replaced and renamed", ReplaceWith("InputMediaSerializer", "dev.inmo.tgbotapi.types.media.InputMediaSerializer")) +typealias InputMediaSerializer = dev.inmo.tgbotapi.types.media.TelegramMediaSerializer +@Deprecated("Replaced and renamed", ReplaceWith("InputMediaVideo", "dev.inmo.tgbotapi.types.media.InputMediaVideo")) +typealias InputMediaVideo = dev.inmo.tgbotapi.types.media.TelegramMediaVideo +@Deprecated("Replaced and renamed", ReplaceWith("MediaGroupMemberInputMedia", "dev.inmo.tgbotapi.types.media.MediaGroupMemberInputMedia")) +typealias MediaGroupMemberInputMedia = dev.inmo.tgbotapi.types.media.MediaGroupMemberTelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("AudioMediaGroupMemberInputMedia", "dev.inmo.tgbotapi.types.media.AudioMediaGroupMemberInputMedia")) +typealias AudioMediaGroupMemberInputMedia = dev.inmo.tgbotapi.types.media.AudioMediaGroupMemberTelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("DocumentMediaGroupMemberInputMedia", "dev.inmo.tgbotapi.types.media.DocumentMediaGroupMemberInputMedia")) +typealias DocumentMediaGroupMemberInputMedia = dev.inmo.tgbotapi.types.media.DocumentMediaGroupMemberTelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("VisualMediaGroupMemberInputMedia", "dev.inmo.tgbotapi.types.media.VisualMediaGroupMemberInputMedia")) +typealias VisualMediaGroupMemberInputMedia = dev.inmo.tgbotapi.types.media.VisualMediaGroupMemberTelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("MediaGroupMemberInputMediaSerializer", "dev.inmo.tgbotapi.types.media.MediaGroupMemberInputMediaSerializer")) +typealias MediaGroupMemberInputMediaSerializer = dev.inmo.tgbotapi.types.media.MediaGroupMemberTelegramMediaSerializer +@Deprecated("Replaced and renamed", ReplaceWith("ThumbedInputMedia", "dev.inmo.tgbotapi.types.media.ThumbedInputMedia")) +typealias ThumbedInputMedia = dev.inmo.tgbotapi.types.media.ThumbedTelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("SizedInputMedia", "dev.inmo.tgbotapi.types.media.SizedInputMedia")) +typealias SizedInputMedia = dev.inmo.tgbotapi.types.media.SizedTelegramMedia +@Deprecated("Replaced and renamed", ReplaceWith("TitledInputMedia", "dev.inmo.tgbotapi.types.media.TitledInputMedia")) +typealias TitledInputMedia = dev.inmo.tgbotapi.types.media.TitledTelegramMedia diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MenuButton.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MenuButton.kt index 3ce057ce7c..25b9f71159 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MenuButton.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MenuButton.kt @@ -49,10 +49,6 @@ sealed interface MenuButton { override val type: String, val rawJson: JsonElement ) : MenuButton - - companion object { - fun serializer(): KSerializer = MenuButtonSerializer - } } @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/RemoveLeading.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/RemoveLeading.kt new file mode 100644 index 0000000000..31b76cf1ce --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/RemoveLeading.kt @@ -0,0 +1,8 @@ +package dev.inmo.tgbotapi.types.MessageEntity + +@Deprecated("Redundant and will be removed soon") +fun String.removeLeading(word: String) = if (startsWith(word)) { + substring(word.length) +} else { + this +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BoldTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BoldTextSource.kt index b8fc500f45..435a74e5e1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BoldTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BoldTextSource.kt @@ -1,26 +1,17 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see bold */ -@Serializable -data class BoldTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.boldMarkdown() } - override val markdownV2: String by lazy { boldMarkdownV2() } - override val html: String by lazy { boldHTML() } -} +@Deprecated("Replaced", ReplaceWith("BoldTextSource", "dev.inmo.tgbotapi.types.message.textsources.BoldTextSource")) +typealias BoldTextSource = dev.inmo.tgbotapi.types.message.textsources.BoldTextSource @Suppress("NOTHING_TO_INLINE") -inline fun bold(parts: TextSourcesList) = BoldTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("bold", "dev.inmo.tgbotapi.types.message.textsources.bold")) +inline fun bold(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.bold(parts) @Suppress("NOTHING_TO_INLINE") -inline fun bold(vararg parts: TextSource) = bold(parts.toList()) +@Deprecated("Replaced", ReplaceWith("bold", "dev.inmo.tgbotapi.types.message.textsources.bold")) +inline fun bold(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.bold(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun bold(text: String) = bold(regular(text)) +@Deprecated("Replaced", ReplaceWith("bold", "dev.inmo.tgbotapi.types.message.textsources.bold")) +inline fun bold(text: String) = dev.inmo.tgbotapi.types.message.textsources.bold(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BotCommandTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BotCommandTextSource.kt index f659e7b9ea..1abdc2e068 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BotCommandTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/BotCommandTextSource.kt @@ -1,29 +1,16 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - private val commandRegex = Regex("[/!][^@\\s]*") /** * @see botCommand */ -@Serializable -data class BotCommandTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String -) : TextSource { - val command: String by lazy { - commandRegex.find(source) ?.value ?.substring(1) ?: source.substring(1)// skip first symbol like "/" or "!" - } - - override val markdown: String by lazy { source.commandMarkdown() } - override val markdownV2: String by lazy { source.commandMarkdownV2() } - override val html: String by lazy { source.commandHTML() } -} +@Deprecated("Replaced", ReplaceWith("BotCommandTextSource", "dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource")) +typealias BotCommandTextSource = dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource /** * @param command Without leading "/" */ @Suppress("NOTHING_TO_INLINE") -inline fun botCommand(command: String) = BotCommandTextSource("/$command") +@Deprecated("Replaced", ReplaceWith("botCommand", "dev.inmo.tgbotapi.types.message.textsources.botCommand")) +inline fun botCommand(command: String) = dev.inmo.tgbotapi.types.message.textsources.botCommand(command) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CashTagTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CashTagTextSource.kt index a1311c6249..a6f9d1a0f7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CashTagTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CashTagTextSource.kt @@ -1,26 +1,17 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see cashTag */ -@Serializable -data class CashTagTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.cashTagMarkdown() } - override val markdownV2: String by lazy { cashTagMarkdownV2() } - override val html: String by lazy { cashTagHTML() } -} +@Deprecated("Replaced", ReplaceWith("CashTagTextSource", "dev.inmo.tgbotapi.types.message.textsources.CashTagTextSource")) +typealias CashTagTextSource = dev.inmo.tgbotapi.types.message.textsources.CashTagTextSource @Suppress("NOTHING_TO_INLINE") -inline fun cashTag(parts: TextSourcesList) = CashTagTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("cashTag", "dev.inmo.tgbotapi.types.message.textsources.cashTag")) +inline fun cashTag(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.cashTag(parts) @Suppress("NOTHING_TO_INLINE") -inline fun cashTag(vararg parts: TextSource) = cashTag(parts.toList()) +@Deprecated("Replaced", ReplaceWith("cashTag", "dev.inmo.tgbotapi.types.message.textsources.cashTag")) +inline fun cashTag(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.cashTag(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun cashTag(tag: String) = cashTag(regular(tag)) +@Deprecated("Replaced", ReplaceWith("cashTag", "dev.inmo.tgbotapi.types.message.textsources.cashTag")) +inline fun cashTag(tag: String) = dev.inmo.tgbotapi.types.message.textsources.cashTag(tag) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CodeTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CodeTextSource.kt index f783b2363c..96f39ce223 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CodeTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/CodeTextSource.kt @@ -1,20 +1,13 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable +import dev.inmo.tgbotapi.utils.internal.code /** * @see code */ -@Serializable -data class CodeTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String -) : TextSource { - override val markdown: String by lazy { source.codeMarkdown() } - override val markdownV2: String by lazy { source.codeMarkdownV2() } - override val html: String by lazy { source.codeHTML() } -} +@Deprecated("Replaced", ReplaceWith("CodeTextSource", "dev.inmo.tgbotapi.types.message.textsources.CodeTextSource")) +typealias CodeTextSource = dev.inmo.tgbotapi.types.message.textsources.CodeTextSource @Suppress("NOTHING_TO_INLINE") -inline fun code(code: String) = CodeTextSource(code) +@Deprecated("Replaced", ReplaceWith("code", "dev.inmo.tgbotapi.types.message.textsources.code")) +inline fun code(code: String) = dev.inmo.tgbotapi.types.message.textsources.code(code) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/EMailTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/EMailTextSource.kt index 6caf8ea9a9..18842eb8da 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/EMailTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/EMailTextSource.kt @@ -1,26 +1,17 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see email */ -@Serializable -data class EMailTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.emailMarkdown() } - override val markdownV2: String by lazy { emailMarkdownV2(source) } - override val html: String by lazy { emailHTML(source) } -} +@Deprecated("Replaced", ReplaceWith("EMailTextSource", "dev.inmo.tgbotapi.types.message.textsources.EMailTextSource")) +typealias EMailTextSource = dev.inmo.tgbotapi.types.message.textsources.EMailTextSource @Suppress("NOTHING_TO_INLINE") -inline fun email(parts: TextSourcesList) = EMailTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("email", "dev.inmo.tgbotapi.types.message.textsources.email")) +inline fun email(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.email(parts) @Suppress("NOTHING_TO_INLINE") -inline fun email(vararg parts: TextSource) = email(parts.toList()) +@Deprecated("Replaced", ReplaceWith("email", "dev.inmo.tgbotapi.types.message.textsources.email")) +inline fun email(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.email(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun email(emailAddress: String) = email(regular(emailAddress)) +@Deprecated("Replaced", ReplaceWith("email", "dev.inmo.tgbotapi.types.message.textsources.email")) +inline fun email(emailAddress: String) = dev.inmo.tgbotapi.types.message.textsources.email(emailAddress) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/HashTagTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/HashTagTextSource.kt index 3bfc19a39c..d9aaeb9878 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/HashTagTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/HashTagTextSource.kt @@ -1,35 +1,20 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see hashtag */ -@Serializable -data class HashTagTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.hashTagMarkdown() } - override val markdownV2: String by lazy { hashTagMarkdownV2() } - override val html: String by lazy { hashTagHTML() } - - init { - if (!source.startsWith("#")) { - error("HashTag source must starts with #, but actual value is \"$source\"") - } - } -} +@Deprecated("Replaced", ReplaceWith("HashTagTextSource", "dev.inmo.tgbotapi.types.message.textsources.HashTagTextSource")) +typealias HashTagTextSource = dev.inmo.tgbotapi.types.message.textsources.HashTagTextSource @Suppress("NOTHING_TO_INLINE", "EXPERIMENTAL_API_USAGE") -inline fun hashtag(parts: TextSourcesList) = (regular("#") + parts).let { HashTagTextSource(it.makeString(), it) } +@Deprecated("Replaced", ReplaceWith("hashtag", "dev.inmo.tgbotapi.types.message.textsources.hashtag")) +inline fun hashtag(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.hashtag(parts) @Suppress("NOTHING_TO_INLINE") -inline fun hashtag(vararg parts: TextSource) = hashtag(parts.toList()) +@Deprecated("Replaced", ReplaceWith("hashtag", "dev.inmo.tgbotapi.types.message.textsources.hashtag")) +inline fun hashtag(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.hashtag(*parts) /** * Without sharp (#) */ @Suppress("NOTHING_TO_INLINE") -inline fun hashtag(hashtag: String) = hashtag(regular(hashtag)) +@Deprecated("Replaced", ReplaceWith("hashtag", "dev.inmo.tgbotapi.types.message.textsources.hashtag")) +inline fun hashtag(hashtag: String) = dev.inmo.tgbotapi.types.message.textsources.hashtag(hashtag) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/ItalicTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/ItalicTextSource.kt index cab6dd1d6d..7c5aeea699 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/ItalicTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/ItalicTextSource.kt @@ -1,27 +1,18 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see italic */ -@Serializable -data class ItalicTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.italicMarkdown() } - override val markdownV2: String by lazy { italicMarkdownV2() } - override val html: String by lazy { italicHTML() } -} +@Deprecated("Replaced", ReplaceWith("ItalicTextSource", "dev.inmo.tgbotapi.types.message.textsources.ItalicTextSource")) +typealias ItalicTextSource = dev.inmo.tgbotapi.types.message.textsources.ItalicTextSource @Suppress("NOTHING_TO_INLINE") -inline fun italic(parts: TextSourcesList) = ItalicTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("italic", "dev.inmo.tgbotapi.types.message.textsources.italic")) +inline fun italic(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.italic(parts) @Suppress("NOTHING_TO_INLINE") -inline fun italic(vararg parts: TextSource) = italic(parts.toList()) +@Deprecated("Replaced", ReplaceWith("italic", "dev.inmo.tgbotapi.types.message.textsources.italic")) +inline fun italic(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.italic(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun italic(text: String) = italic(regular(text)) +@Deprecated("Replaced", ReplaceWith("italic", "dev.inmo.tgbotapi.types.message.textsources.italic")) +inline fun italic(text: String) = dev.inmo.tgbotapi.types.message.textsources.italic(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/MentionTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/MentionTextSource.kt index b0a5d8db3f..e783e2b76e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/MentionTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/MentionTextSource.kt @@ -1,49 +1,28 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources import dev.inmo.tgbotapi.types.Username -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - -private val String.withoutCommercialAt - get() = if (startsWith("@")) { - substring(1) - } else { - this - } /** * @see mention */ -@Serializable -data class MentionTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.mentionMarkdown() } - override val markdownV2: String by lazy { mentionMarkdownV2() } - override val html: String by lazy { mentionHTML() } - val username: Username = Username(source) - - init { - if (!source.startsWith("@")) { - error("Mention source must starts with @, but actual value is \"$source\"") - } - } -} +@Deprecated("Replaced", ReplaceWith("MentionTextSource", "dev.inmo.tgbotapi.types.message.textsources.MentionTextSource")) +typealias MentionTextSource = dev.inmo.tgbotapi.types.message.textsources.MentionTextSource @Suppress("NOTHING_TO_INLINE") -inline fun mention(parts: TextSourcesList) = (regular("@") + parts).let { MentionTextSource(it.makeString(), it) } +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.mention(parts) @Suppress("NOTHING_TO_INLINE") -inline fun mention(vararg parts: TextSource) = mention(parts.toList()) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.mention(*parts) /** * Without leading "@" */ @Suppress("NOTHING_TO_INLINE") -inline fun mention(whoToMention: String) = mention(regular(whoToMention)) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(whoToMention: String) = dev.inmo.tgbotapi.types.message.textsources.mention(whoToMention) @Suppress("NOTHING_TO_INLINE") -inline fun mention(whoToMention: Username) = mention(whoToMention.username.dropWhile { it == '@' }) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(whoToMention: Username) = dev.inmo.tgbotapi.types.message.textsources.mention(whoToMention) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PhoneNumberTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PhoneNumberTextSource.kt index 67e3295968..5f3c780fdd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PhoneNumberTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PhoneNumberTextSource.kt @@ -1,27 +1,18 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see phone */ -@Serializable -data class PhoneNumberTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.phoneMarkdown() } - override val markdownV2: String by lazy { phoneMarkdownV2() } - override val html: String by lazy { phoneHTML() } -} +@Deprecated("Replaced", ReplaceWith("PhoneNumberTextSource", "dev.inmo.tgbotapi.types.message.textsources.PhoneNumberTextSource")) +typealias PhoneNumberTextSource = dev.inmo.tgbotapi.types.message.textsources.PhoneNumberTextSource @Suppress("NOTHING_TO_INLINE") -inline fun phone(parts: TextSourcesList) = PhoneNumberTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("phone", "dev.inmo.tgbotapi.types.message.textsources.phone")) +inline fun phone(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.phone(parts) @Suppress("NOTHING_TO_INLINE") -inline fun phone(vararg parts: TextSource) = phone(parts.toList()) +@Deprecated("Replaced", ReplaceWith("phone", "dev.inmo.tgbotapi.types.message.textsources.phone")) +inline fun phone(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.phone(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun phone(number: String) = phone(regular(number)) +@Deprecated("Replaced", ReplaceWith("phone", "dev.inmo.tgbotapi.types.message.textsources.phone")) +inline fun phone(number: String) = dev.inmo.tgbotapi.types.message.textsources.phone(number) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PreTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PreTextSource.kt index 988952d75b..bd9e06a7c2 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PreTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/PreTextSource.kt @@ -1,22 +1,12 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see pre */ -@Serializable -data class PreTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - val language: String? = null -) : TextSource { - override val markdown: String by lazy { source.preMarkdown(language) } - override val markdownV2: String by lazy { source.preMarkdownV2(language) } - override val html: String by lazy { source.preHTML(language) } -} +@Deprecated("Replaced", ReplaceWith("PreTextSource", "dev.inmo.tgbotapi.types.message.textsources.PreTextSource")) +typealias PreTextSource = dev.inmo.tgbotapi.types.message.textsources.PreTextSource @Suppress("NOTHING_TO_INLINE") -inline fun pre(code: String, language: String? = null) = PreTextSource(code, language) +@Deprecated("Replaced", ReplaceWith("pre", "dev.inmo.tgbotapi.types.message.textsources.pre")) +inline fun pre(code: String, language: String? = null) = dev.inmo.tgbotapi.types.message.textsources.pre(code, language) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/RegularTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/RegularTextSource.kt index ae9ca3e9e9..28b73c2263 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/RegularTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/RegularTextSource.kt @@ -1,20 +1,11 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see regular */ -@Serializable -data class RegularTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String -) : TextSource { - override val markdown: String by lazy { source.regularMarkdown() } - override val markdownV2: String by lazy { source.regularMarkdownV2() } - override val html: String by lazy { source.regularHtml() } -} +@Deprecated("Replaced", ReplaceWith("RegularTextSource", "dev.inmo.tgbotapi.types.message.textsources.RegularTextSource")) +typealias RegularTextSource = dev.inmo.tgbotapi.types.message.textsources.RegularTextSource @Suppress("NOTHING_TO_INLINE") -inline fun regular(text: String) = RegularTextSource(text) +@Deprecated("Replaced", ReplaceWith("regular", "dev.inmo.tgbotapi.types.message.textsources.regular")) +inline fun regular(text: String) = dev.inmo.tgbotapi.types.message.textsources.regular(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/SpoilerTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/SpoilerTextSource.kt index 7b0a3e9c99..df3dc56f86 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/SpoilerTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/SpoilerTextSource.kt @@ -1,27 +1,18 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see italic */ -@Serializable -data class SpoilerTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.spoilerMarkdown() } - override val markdownV2: String by lazy { spoilerMarkdownV2() } - override val html: String by lazy { spoilerHTML() } -} +@Deprecated("Replaced", ReplaceWith("SpoilerTextSource", "dev.inmo.tgbotapi.types.message.textsources.SpoilerTextSource")) +typealias SpoilerTextSource = dev.inmo.tgbotapi.types.message.textsources.SpoilerTextSource @Suppress("NOTHING_TO_INLINE") -inline fun spoiler(parts: TextSourcesList) = SpoilerTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("spoiler", "dev.inmo.tgbotapi.types.message.textsources.spoiler")) +inline fun spoiler(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.spoiler(parts) @Suppress("NOTHING_TO_INLINE") -inline fun spoiler(vararg parts: TextSource) = spoiler(parts.toList()) +@Deprecated("Replaced", ReplaceWith("spoiler", "dev.inmo.tgbotapi.types.message.textsources.spoiler")) +inline fun spoiler(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.spoiler(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun spoiler(text: String) = spoiler(regular(text)) +@Deprecated("Replaced", ReplaceWith("spoiler", "dev.inmo.tgbotapi.types.message.textsources.spoiler")) +inline fun spoiler(text: String) = dev.inmo.tgbotapi.types.message.textsources.spoiler(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/StrikethroughTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/StrikethroughTextSource.kt index e7773ee7d1..ae87e43d53 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/StrikethroughTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/StrikethroughTextSource.kt @@ -1,26 +1,17 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable - /** * @see strikethrough */ -@Serializable -data class StrikethroughTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val html: String by lazy { strikethroughHTML() } - override val markdownV2: String by lazy { strikethroughMarkdownV2() } - override val markdown: String by lazy { source.strikethroughMarkdown() } -} +@Deprecated("Replaced", ReplaceWith("StrikethroughTextSource", "dev.inmo.tgbotapi.types.message.textsources.StrikethroughTextSource")) +typealias StrikethroughTextSource = dev.inmo.tgbotapi.types.message.textsources.StrikethroughTextSource @Suppress("NOTHING_TO_INLINE") -inline fun strikethrough(parts: TextSourcesList) = StrikethroughTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("strikethrough", "dev.inmo.tgbotapi.types.message.textsources.strikethrough")) +inline fun strikethrough(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.strikethrough(parts) @Suppress("NOTHING_TO_INLINE") -inline fun strikethrough(vararg parts: TextSource) = strikethrough(parts.toList()) +@Deprecated("Replaced", ReplaceWith("strikethrough", "dev.inmo.tgbotapi.types.message.textsources.strikethrough")) +inline fun strikethrough(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.strikethrough(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun strikethrough(text: String) = strikethrough(regular(text)) +@Deprecated("Replaced", ReplaceWith("strikethrough", "dev.inmo.tgbotapi.types.message.textsources.strikethrough")) +inline fun strikethrough(text: String) = dev.inmo.tgbotapi.types.message.textsources.strikethrough(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextLinkTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextLinkTextSource.kt index 46eaf6c440..ce2e734880 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextLinkTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextLinkTextSource.kt @@ -1,21 +1,13 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable +import dev.inmo.tgbotapi.utils.internal.link /** * @see link */ -@Serializable -data class TextLinkTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - val url: String -) : TextSource { - override val markdown: String by lazy { source.linkMarkdown(url) } - override val markdownV2: String by lazy { source.linkMarkdownV2(url) } - override val html: String by lazy { source.linkHTML(url) } -} +@Deprecated("Replaced", ReplaceWith("TextLinkTextSource", "dev.inmo.tgbotapi.types.message.textsources.TextLinkTextSource")) +typealias TextLinkTextSource = dev.inmo.tgbotapi.types.message.textsources.TextLinkTextSource @Suppress("NOTHING_TO_INLINE") -inline fun link(text: String, url: String) = TextLinkTextSource(text, url) +@Deprecated("Replaced", ReplaceWith("link", "dev.inmo.tgbotapi.types.message.textsources.link")) +inline fun link(text: String, url: String) = dev.inmo.tgbotapi.types.message.textsources.link(text, url) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextMentionTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextMentionTextSource.kt index 359c296b3c..772a6dffe8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextMentionTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextMentionTextSource.kt @@ -1,53 +1,51 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable +import dev.inmo.tgbotapi.types.Identifier +import dev.inmo.tgbotapi.types.UserId +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.message.textsources.mention /** * @see mention */ -@Serializable -data class TextMentionTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - val user: User, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.textMentionMarkdown(user.id) } - override val markdownV2: String by lazy { textMentionMarkdownV2(user.id) } - override val html: String by lazy { textMentionHTML(user.id) } -} +@Deprecated("Replaced", ReplaceWith("TextMentionTextSource", "dev.inmo.tgbotapi.types.message.textsources.TextMentionTextSource")) +typealias TextMentionTextSource = dev.inmo.tgbotapi.types.message.textsources.TextMentionTextSource @Suppress("NOTHING_TO_INLINE") -inline fun mention(parts: TextSourcesList, user: User) = TextMentionTextSource(parts.makeString(), user, parts) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(parts: TextSourcesList, user: User) = mention(parts, user) @Suppress("NOTHING_TO_INLINE") -inline fun User.mention(parts: TextSourcesList) = mention(parts, this) +@Deprecated("Replaced", ReplaceWith("User.mention", "dev.inmo.tgbotapi.types.message.textsources.User.mention")) +inline fun User.mention(parts: TextSourcesList) = mention(parts) @Suppress("NOTHING_TO_INLINE") -inline fun mention(parts: TextSourcesList, userId: UserId) = mention(parts, CommonUser(userId, "")) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(parts: TextSourcesList, userId: UserId) = mention(parts, userId) @Suppress("NOTHING_TO_INLINE") -inline fun UserId.mention(parts: TextSourcesList) = mention(parts, this) +@Deprecated("Replaced", ReplaceWith("UserId.mention", "dev.inmo.tgbotapi.types.message.textsources.UserId.mention")) +inline fun UserId.mention(parts: TextSourcesList) = mention(parts) @Suppress("NOTHING_TO_INLINE") -inline fun mention(parts: TextSourcesList, id: Identifier) = mention(parts, UserId(id)) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(parts: TextSourcesList, id: Identifier) = mention(parts, id) @Suppress("NOTHING_TO_INLINE") -inline fun Identifier.mention(parts: TextSourcesList) = mention(parts, this) +@Deprecated("Replaced", ReplaceWith("Identifier.mention", "dev.inmo.tgbotapi.types.message.textsources.Identifier.mention")) +inline fun Identifier.mention(parts: TextSourcesList) = mention(parts) @Suppress("NOTHING_TO_INLINE") -inline fun mention(user: User, vararg parts: TextSource) = mention( - textSourcesOrElseTextSource(parts.toList()) { - RegularTextSource("${user.lastName} ${user.firstName}") - }, - user -) +inline fun mention(user: User, vararg parts: TextSource) = mention(user, *parts) @Suppress("NOTHING_TO_INLINE") -inline fun mention(text: String, user: User) = mention(user, regular(text)) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(text: String, user: User) = mention(text, user) @Suppress("NOTHING_TO_INLINE") -inline fun User.mention(text: String) = mention(this, regular(text)) +@Deprecated("Replaced", ReplaceWith("User.mention", "dev.inmo.tgbotapi.types.message.textsources.User.mention")) +inline fun User.mention(text: String) = mention(text) @Suppress("NOTHING_TO_INLINE") -inline fun mention(text: String, userId: UserId) = mention(text, CommonUser(userId, "")) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(text: String, userId: UserId) = mention(text, userId) @Suppress("NOTHING_TO_INLINE") -inline fun UserId.mention(text: String) = mention(text, this) +@Deprecated("Replaced", ReplaceWith("UserId.mention", "dev.inmo.tgbotapi.types.message.textsources.UserId.mention")) +inline fun UserId.mention(text: String) = mention(text) @Suppress("NOTHING_TO_INLINE") -inline fun mention(text: String, id: Identifier) = mention(text, UserId(id)) +@Deprecated("Replaced", ReplaceWith("mention", "dev.inmo.tgbotapi.types.message.textsources.mention")) +inline fun mention(text: String, id: Identifier) = mention(text, id) @Suppress("NOTHING_TO_INLINE") -inline fun Identifier.mention(text: String) = mention(text, this) +@Deprecated("Replaced", ReplaceWith("Identifier.mention", "dev.inmo.tgbotapi.types.message.textsources.Identifier.mention")) +inline fun Identifier.mention(text: String) = mention(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSource.kt index 539410980d..3f3776347e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSource.kt @@ -1,88 +1,50 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources import dev.inmo.tgbotapi.types.captionLength +import dev.inmo.tgbotapi.types.message.textsources.separateForCaption +import dev.inmo.tgbotapi.types.message.textsources.separateForMessage +import dev.inmo.tgbotapi.types.message.textsources.separateForText import dev.inmo.tgbotapi.types.textLength -import kotlinx.serialization.Serializable const val DirectInvocationOfTextSourceConstructor = "It is strongly not recommended to use constructors directly instead of factory methods" -typealias TextSourcesList = List -typealias MutableTextSourcesList = MutableList +@Deprecated("Replaced", ReplaceWith("TextSourcesList", "dev.inmo.tgbotapi.types.message.textsources.TextSourcesList")) +typealias TextSourcesList = dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +@Deprecated("Replaced", ReplaceWith("MutableTextSourcesList", "dev.inmo.tgbotapi.types.message.textsources.MutableTextSourcesList")) +typealias MutableTextSourcesList = dev.inmo.tgbotapi.types.message.textsources.MutableTextSourcesList -@Serializable(TextSourceSerializer::class) -sealed interface TextSource { - val markdown: String - val markdownV2: String - val html: String - val source: String - - val asText: String - get() = source - - companion object { - fun serializer() = TextSourceSerializer - } -} +@Deprecated("Replaced", ReplaceWith("TextSource", "dev.inmo.tgbotapi.types.message.textsources.TextSource")) +typealias TextSource = dev.inmo.tgbotapi.types.message.textsources.TextSource @Suppress("NOTHING_TO_INLINE") +@Deprecated("Replaced", ReplaceWith("plus", "dev.inmo.tgbotapi.types.message.textsources.plus")) inline operator fun TextSource.plus(other: TextSource) = listOf(this, other) @Suppress("NOTHING_TO_INLINE") +@Deprecated("Replaced", ReplaceWith("plus", "dev.inmo.tgbotapi.types.message.textsources.plus")) inline operator fun TextSource.plus(other: List) = listOf(this) + other @Suppress("NOTHING_TO_INLINE") +@Deprecated("Replaced", ReplaceWith("plus", "dev.inmo.tgbotapi.types.message.textsources.plus")) inline operator fun TextSource.plus(text: String) = listOf(this, regular(text)) @Suppress("NOTHING_TO_INLINE") +@Deprecated("Replaced", ReplaceWith("plus", "dev.inmo.tgbotapi.types.message.textsources.plus")) inline operator fun List.plus(text: String) = this + regular(text) -@Serializable(TextSourceSerializer::class) -sealed interface MultilevelTextSource : TextSource { - val subsources: List +@Deprecated("Replaced", ReplaceWith("MultilevelTextSource", "dev.inmo.tgbotapi.types.message.textsources.MultilevelTextSource")) +typealias MultilevelTextSource = dev.inmo.tgbotapi.types.message.textsources.MultilevelTextSource - companion object { - fun serializer() = TextSourceSerializer - } -} - -fun List.separateForMessage(limit: IntRange, numberOfParts: Int? = null): List> { - if (isEmpty()) { - return emptyList() - } - - val resultList = mutableListOf>(mutableListOf()) - var currentPartLength = 0 - val maxSize = limit.last + 1 - - for (current in this) { - if (current.source.length > maxSize) { - error("Currently unsupported parts with size more than target one-message parts (${current.source.length} > ${maxSize})") - } - - if (currentPartLength + current.source.length > maxSize) { - if (numberOfParts == null || numberOfParts < resultList.size) { - resultList.add(mutableListOf()) - currentPartLength = 0 - } else { - break - } - } - - resultList.last().add(current) - currentPartLength += current.source.length - } - - return resultList -} +@Deprecated("Replaced", ReplaceWith("separateForMessage", "dev.inmo.tgbotapi.types.message.textsources.separateForMessage")) +inline fun List.separateForMessage(limit: IntRange, numberOfParts: Int? = null) = separateForMessage(limit, numberOfParts) /** * This method will prepare [TextSource]s list for messages. Remember, that first part will be separated with * [captionLength] and all others with */ -fun List.separateForCaption(): List> { - val captionPart = separateForMessage(captionLength, 1).first() - return listOf(captionPart) + minus(captionPart).separateForMessage(textLength) -} +@Deprecated("Replaced", ReplaceWith("separateForCaption", "dev.inmo.tgbotapi.types.message.textsources.separateForCaption")) +fun List.separateForCaption() = separateForCaption() /** * This method will prepare [TextSource]s list for messages with [textLength] */ @Suppress("NOTHING_TO_INLINE") -inline fun List.separateForText(): List> = separateForMessage(textLength) +@Deprecated("Replaced", ReplaceWith("separateForText", "dev.inmo.tgbotapi.types.message.textsources.separateForText")) +inline fun List.separateForText() = separateForText() diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourceSerializer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourceSerializer.kt index d6fd6ef438..b15efad0be 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourceSerializer.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourceSerializer.kt @@ -1,36 +1,5 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.micro_utils.serialization.typed_serializer.TypedSerializer -import kotlinx.serialization.KSerializer +import dev.inmo.tgbotapi.types.message.textsources.TextSourceSerializer -private val baseSerializers: Map> = mapOf( - "regular" to RegularTextSource.serializer(), - "text_link" to TextLinkTextSource.serializer(), - "code" to CodeTextSource.serializer(), - "url" to URLTextSource.serializer(), - "pre" to PreTextSource.serializer(), - "bot_command" to BotCommandTextSource.serializer(), - "strikethrough" to StrikethroughTextSource.serializer(), - "italic" to ItalicTextSource.serializer(), - "bold" to BoldTextSource.serializer(), - "email" to EMailTextSource.serializer(), - "underline" to UnderlineTextSource.serializer(), - "mention" to MentionTextSource.serializer(), - "phone_number" to PhoneNumberTextSource.serializer(), - "text_mention" to TextMentionTextSource.serializer(), - "hashtag" to HashTagTextSource.serializer(), - "cashtag" to CashTagTextSource.serializer(), - "spoiler" to SpoilerTextSource.serializer(), -) - -object TextSourceSerializer : TypedSerializer(TextSource::class, baseSerializers) { - override fun include(type: String, serializer: KSerializer) { - require(type !in baseSerializers.keys) - super.include(type, serializer) - } - - override fun exclude(type: String) { - require(type !in baseSerializers.keys) - super.exclude(type) - } -} +val TextSourceSerializer = TextSourceSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourcesOrElse.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourcesOrElse.kt index 68643b5f34..3fc73e7919 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourcesOrElse.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/TextSourcesOrElse.kt @@ -1,17 +1,15 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources import dev.inmo.tgbotapi.utils.RiskFeature -import kotlin.js.JsName -import kotlin.jvm.JvmName @RiskFeature inline fun textSourcesOrElse( textSources: TextSourcesList, block: () -> TextSourcesList -): TextSourcesList = textSources.takeIf { it.isNotEmpty() } ?: block() +) = dev.inmo.tgbotapi.types.message.textsources.textSourcesOrElse(textSources, block) @RiskFeature inline fun textSourcesOrElseTextSource( textSources: TextSourcesList, block: () -> TextSource -): TextSourcesList = textSources.takeIf { it.isNotEmpty() } ?: listOf(block()) +) = dev.inmo.tgbotapi.types.message.textsources.textSourcesOrElseTextSource(textSources, block) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/URLTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/URLTextSource.kt index 54ac9944e9..f27222bb75 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/URLTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/URLTextSource.kt @@ -1,20 +1,13 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable +import dev.inmo.tgbotapi.utils.internal.link /** * @see link */ -@Serializable -data class URLTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String -) : TextSource { - override val markdown: String by lazy { source.linkMarkdown(source) } - override val markdownV2: String by lazy { source.linkMarkdownV2(source) } - override val html: String by lazy { source.linkHTML(source) } -} +@Deprecated("Replaced", ReplaceWith("URLTextSource", "dev.inmo.tgbotapi.types.message.textsources.URLTextSource")) +typealias URLTextSource = dev.inmo.tgbotapi.types.message.textsources.URLTextSource @Suppress("NOTHING_TO_INLINE") -inline fun link(url: String) = URLTextSource(url) +@Deprecated("Replaced", ReplaceWith("link", "dev.inmo.tgbotapi.types.message.textsources.link")) +inline fun link(url: String) = dev.inmo.tgbotapi.types.message.textsources.link(url) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/UnderlineTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/UnderlineTextSource.kt index fd40c1a74c..def733b371 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/UnderlineTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/textsources/UnderlineTextSource.kt @@ -1,26 +1,19 @@ package dev.inmo.tgbotapi.types.MessageEntity.textsources -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.extensions.makeString -import dev.inmo.tgbotapi.utils.internal.* -import kotlinx.serialization.Serializable +import dev.inmo.tgbotapi.utils.internal.underline /** * @see underline */ -@Serializable -data class UnderlineTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( - override val source: String, - override val subsources: TextSourcesList -) : MultilevelTextSource { - override val markdown: String by lazy { source.underlineMarkdown() } - override val markdownV2: String by lazy { underlineMarkdownV2() } - override val html: String by lazy { underlineHTML() } -} +@Deprecated("Replaced", ReplaceWith("UnderlineTextSource", "dev.inmo.tgbotapi.types.message.textsources.UnderlineTextSource")) +typealias UnderlineTextSource = dev.inmo.tgbotapi.types.message.textsources.UnderlineTextSource @Suppress("NOTHING_TO_INLINE") -inline fun underline(parts: TextSourcesList) = UnderlineTextSource(parts.makeString(), parts) +@Deprecated("Replaced", ReplaceWith("underline", "dev.inmo.tgbotapi.types.message.textsources.underline")) +inline fun underline(parts: TextSourcesList) = dev.inmo.tgbotapi.types.message.textsources.underline(parts) @Suppress("NOTHING_TO_INLINE") -inline fun underline(vararg parts: TextSource) = underline(parts.toList()) +@Deprecated("Replaced", ReplaceWith("underline", "dev.inmo.tgbotapi.types.message.textsources.underline")) +inline fun underline(vararg parts: TextSource) = dev.inmo.tgbotapi.types.message.textsources.underline(*parts) @Suppress("NOTHING_TO_INLINE") -inline fun underline(text: String) = underline(regular(text)) +@Deprecated("Replaced", ReplaceWith("underline", "dev.inmo.tgbotapi.types.message.textsources.underline")) +inline fun underline(text: String) = dev.inmo.tgbotapi.types.message.textsources.underline(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ParseMode/ParseMode.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ParseMode/ParseMode.kt index 65a70a03da..926ff79322 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ParseMode/ParseMode.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ParseMode/ParseMode.kt @@ -1,42 +1,22 @@ package dev.inmo.tgbotapi.types.ParseMode -import dev.inmo.tgbotapi.utils.RiskFeature -import kotlinx.serialization.* -import kotlinx.serialization.builtins.serializer -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder +@Deprecated("Replaced", ReplaceWith("ParseMode", "dev.inmo.tgbotapi.types.message.ParseMode")) +typealias ParseMode = dev.inmo.tgbotapi.types.message.ParseMode -internal const val parseModeField = "parse_mode" +@Deprecated("Replaced", ReplaceWith("MarkdownParseMode", "dev.inmo.tgbotapi.types.message.MarkdownParseMode")) +typealias MarkdownParseMode = dev.inmo.tgbotapi.types.message.MarkdownParseMode -@Serializable(ParseModeSerializer::class) -sealed interface ParseMode { - val parseModeName: String -} +@Deprecated("Replaced", ReplaceWith("MarkdownV2ParseMode", "dev.inmo.tgbotapi.types.message.MarkdownV2ParseMode")) +typealias MarkdownV2ParseMode = dev.inmo.tgbotapi.types.message.MarkdownV2ParseMode +@Deprecated("Replaced", ReplaceWith("HTMLParseMode", "dev.inmo.tgbotapi.types.message.HTMLParseMode")) +typealias HTMLParseMode = dev.inmo.tgbotapi.types.message.HTMLParseMode -@Serializable(ParseModeSerializer::class) -object MarkdownParseMode : ParseMode { - @Serializable - @SerialName(parseModeField) - override val parseModeName: String = "Markdown" -} - -@Serializable(ParseModeSerializer::class) -object MarkdownV2ParseMode : ParseMode { - @Serializable - @SerialName(parseModeField) - override val parseModeName: String = "MarkdownV2" -} -@Serializable(ParseModeSerializer::class) -object HTMLParseMode : ParseMode { - @Serializable - @SerialName(parseModeField) - override val parseModeName: String = "HTML" -} - -typealias Markdown = MarkdownParseMode -typealias MarkdownV2 = MarkdownV2ParseMode -typealias HTML = HTMLParseMode +@Deprecated("Replaced", ReplaceWith("Markdown", "dev.inmo.tgbotapi.types.message.Markdown")) +typealias Markdown = dev.inmo.tgbotapi.types.message.Markdown +@Deprecated("Replaced", ReplaceWith("MarkdownV2", "dev.inmo.tgbotapi.types.message.MarkdownV2")) +typealias MarkdownV2 = dev.inmo.tgbotapi.types.message.MarkdownV2 +@Deprecated("Replaced", ReplaceWith("HTML", "dev.inmo.tgbotapi.types.message.HTML")) +typealias HTML = dev.inmo.tgbotapi.types.message.HTML /** * This variable respects to default parse mode used in places like next: @@ -44,21 +24,8 @@ typealias HTML = HTMLParseMode * * [dev.inmo.tgbotapi.types.message.content.TextContent.createResends] * * */ -var defaultParseMode: ParseMode = HTML +@Deprecated("Replaced", ReplaceWith("defaultParseMode", "dev.inmo.tgbotapi.types.message.defaultParseMode")) +var defaultParseMode = dev.inmo.tgbotapi.types.message.defaultParseMode -@RiskFeature -object ParseModeSerializer : KSerializer { - override val descriptor: SerialDescriptor = String.serializer().descriptor - override fun deserialize(decoder: Decoder): ParseMode { - return when (decoder.decodeString()) { - Markdown.parseModeName -> Markdown - MarkdownV2.parseModeName -> MarkdownV2 - HTML.parseModeName -> HTML - else -> throw IllegalArgumentException("Unknown parse mode") - } - } - - override fun serialize(encoder: Encoder, value: ParseMode) { - encoder.encodeString(value.parseModeName) - } -} +@Deprecated("Replaced", ReplaceWith("ParseModeSerializer", "dev.inmo.tgbotapi.types.message.ParseModeSerializer")) +typealias ParseModeSerializer = dev.inmo.tgbotapi.types.message.ParseModeSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/User.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/User.kt index 1ee03ce417..3a4f3f2cfd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/User.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/User.kt @@ -1,121 +1,22 @@ package dev.inmo.tgbotapi.types -import dev.inmo.micro_utils.language_codes.IetfLanguageCode -import dev.inmo.micro_utils.language_codes.IetfLanguageCodeSerializer -import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode -import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat -import dev.inmo.tgbotapi.types.chat.extended.ExtendedPrivateChatImpl -import dev.inmo.tgbotapi.utils.* -import kotlinx.serialization.* -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.json.* +@Deprecated("Replaced", ReplaceWith("User", "dev.inmo.tgbotapi.types.chat.User")) +typealias User = dev.inmo.tgbotapi.types.chat.User -@Serializable(UserSerializer::class) -sealed class User : PrivateChat +@Deprecated("Replaced", ReplaceWith("CommonUser", "dev.inmo.tgbotapi.types.chat.CommonUser")) +typealias CommonUser = dev.inmo.tgbotapi.types.chat.CommonUser -@Serializable -data class CommonUser( - override val id: UserId, - @SerialName(firstNameField) - override val firstName: String, - @SerialName(lastNameField) - override val lastName: String = "", - @SerialName(usernameField) - override val username: Username? = null, - @SerialName(languageCodeField) - @Serializable(IetfLanguageCodeSerializer::class) - override val ietfLanguageCode: IetfLanguageCode? = null -) : User(), WithOptionalLanguageCode { - constructor( - id: UserId, - firstName: String, - lastName: String = "", - username: Username? = null, - languageCode: String - ) : this(id, firstName, lastName, username, IetfLanguageCode(languageCode)) -} +@Deprecated("Replaced", ReplaceWith("ExtendedUser", "dev.inmo.tgbotapi.types.chat.ExtendedUser")) +typealias ExtendedUser = dev.inmo.tgbotapi.types.chat.ExtendedUser -@PreviewFeature -typealias ExtendedUser = ExtendedPrivateChatImpl +@Deprecated("Replaced", ReplaceWith("Bot", "dev.inmo.tgbotapi.types.chat.Bot")) +typealias Bot = dev.inmo.tgbotapi.types.chat.Bot -@Serializable(UserSerializer::class) -sealed class Bot : User() { - abstract override val username: Username -} +@Deprecated("Replaced", ReplaceWith("CommonBot", "dev.inmo.tgbotapi.types.chat.CommonBot")) +typealias CommonBot = dev.inmo.tgbotapi.types.chat.CommonBot -@Serializable -data class CommonBot( - override val id: UserId, - @SerialName(usernameField) - override val username: Username, - @SerialName(firstNameField) - override val firstName: String, - @SerialName(lastNameField) - override val lastName: String = "" -) : Bot() { - @SerialName(isBotField) - private val isBot = true -} +@Deprecated("Replaced", ReplaceWith("ExtendedBot", "dev.inmo.tgbotapi.types.chat.ExtendedBot")) +typealias ExtendedBot = dev.inmo.tgbotapi.types.chat.ExtendedBot -@Serializable -data class ExtendedBot( - override val id: UserId, - @SerialName(usernameField) - override val username: Username, - @SerialName(firstNameField) - override val firstName: String, - @SerialName(lastNameField) - override val lastName: String = "", - @SerialName(canJoinGroupsField) - val canJoinGroups: Boolean = false, - @SerialName(canReadAllGroupMessagesField) - val canReadAllGroupMessages: Boolean = false, - @SerialName(supportInlineQueriesField) - val supportsInlineQueries: Boolean = false -) : Bot() { - @SerialName(isBotField) - private val isBot = true -} - - -@RiskFeature -object UserSerializer : KSerializer { - private val internalSerializer = JsonObject.serializer() - override val descriptor: SerialDescriptor = internalSerializer.descriptor - override fun deserialize(decoder: Decoder): User { - val asJson = internalSerializer.deserialize(decoder) - - return when { - asJson[isBotField] ?.jsonPrimitive ?.booleanOrNull != true -> nonstrictJsonFormat.decodeFromJsonElement( - CommonUser.serializer(), - asJson - ) - else -> { - if ((asJson[canJoinGroupsField] - ?: asJson[canReadAllGroupMessagesField] - ?: asJson[supportInlineQueriesField]) != null - ) { - nonstrictJsonFormat.decodeFromJsonElement( - ExtendedBot.serializer(), - asJson - ) - } else { - nonstrictJsonFormat.decodeFromJsonElement( - CommonBot.serializer(), - asJson - ) - } - } - } - } - - override fun serialize(encoder: Encoder, value: User) { - when (value) { - is CommonUser -> CommonUser.serializer().serialize(encoder, value) - is CommonBot -> CommonBot.serializer().serialize(encoder, value) - is ExtendedBot -> ExtendedBot.serializer().serialize(encoder, value) - } - } -} +@Deprecated("Replaced", ReplaceWith("UserSerializer", "dev.inmo.tgbotapi.types.chat.UserSerializer")) +typealias UserSerializer = dev.inmo.tgbotapi.types.chat.UserSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton.kt index a3f95bce73..5117b6dfde 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton.kt @@ -43,14 +43,14 @@ data class PayInlineKeyboardButton( * Simple button with [callbackData] which you are able to catch this type of updates and data using * [dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onDataCallbackQuery] in * case you are using Behaviour Builder OR [dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter.callbackQueriesFlow] - * with [kotlinx.coroutines.flow.filterIsInstance] and filtering by type [dev.inmo.tgbotapi.types.CallbackQuery.DataCallbackQuery] + * with [kotlinx.coroutines.flow.filterIsInstance] and filtering by type [dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery] */ @Serializable data class CallbackDataInlineKeyboardButton( @SerialName(textField) override val text: String, /** - * You will receive this data in [dev.inmo.tgbotapi.types.CallbackQuery.DataCallbackQuery.data] field + * You will receive this data in [dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery.data] field */ @SerialName(callbackDataField) val callbackData: String diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyKeyboardMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyKeyboardMarkup.kt index a88703b9ff..753b947389 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyKeyboardMarkup.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyKeyboardMarkup.kt @@ -1,16 +1,15 @@ package dev.inmo.tgbotapi.types.buttons -import dev.inmo.tgbotapi.types.inputFieldPlaceholderField -import dev.inmo.tgbotapi.types.inputFieldPlaceholderLimit +import dev.inmo.tgbotapi.types.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class ReplyKeyboardMarkup( val keyboard: Matrix, - @SerialName("resize_keyboard") + @SerialName(resizeKeyboardField) val resizeKeyboard: Boolean? = null, - @SerialName("one_time_keyboard") + @SerialName(oneTimeKeyboardField) val oneTimeKeyboard: Boolean? = null, @SerialName(inputFieldPlaceholderField) val inputFieldPlaceholder: String? = null, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt new file mode 100644 index 0000000000..3391dc1668 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt @@ -0,0 +1,38 @@ +package dev.inmo.tgbotapi.types.chat + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.Serializable + +@Serializable(PreviewChatSerializer::class) +sealed interface ChannelChat : SuperPublicChat + +@Serializable(PreviewChatSerializer::class) +sealed interface GroupChat : PublicChat + +@Serializable(PreviewChatSerializer::class) +sealed interface PrivateChat : Chat, UsernameChat { + override val id: UserId + val firstName: String + val lastName: String +} + +@Serializable(PreviewChatSerializer::class) +sealed interface PublicChat : Chat { + val title: String +} + +@Serializable(PreviewChatSerializer::class) +sealed interface SupergroupChat : GroupChat, SuperPublicChat + +@Serializable(PreviewChatSerializer::class) +sealed interface SuperPublicChat : PublicChat, UsernameChat + +@Serializable(PreviewChatSerializer::class) +sealed interface UsernameChat : Chat { + val username: Username? +} + +@Serializable(PreviewChatSerializer::class) +sealed interface Chat { + val id: ChatId +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChannelChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChannelChatImpl.kt deleted file mode 100644 index f0bf9f6d73..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChannelChatImpl.kt +++ /dev/null @@ -1,16 +0,0 @@ -package dev.inmo.tgbotapi.types.chat - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ChannelChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(titleField) - override val title: String, - @SerialName(usernameField) - override val username: Username? = null -) : ChannelChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatJoinRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatJoinRequest.kt similarity index 81% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatJoinRequest.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatJoinRequest.kt index 3a2c827b51..25af5c9e36 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatJoinRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatJoinRequest.kt @@ -1,8 +1,8 @@ -package dev.inmo.tgbotapi.types +package dev.inmo.tgbotapi.types.chat import com.soywiz.klock.DateTime -import dev.inmo.tgbotapi.CommonAbstracts.FromUser -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.abstracts.FromUser +import dev.inmo.tgbotapi.types.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt index bacbbf121d..30adce6407 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt @@ -1,11 +1,6 @@ package dev.inmo.tgbotapi.types.chat import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.Chat -import dev.inmo.tgbotapi.types.chat.abstracts.UnknownChatType -import dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChat -import dev.inmo.tgbotapi.types.chat.abstracts.extended.UnknownExtendedChat -import dev.inmo.tgbotapi.types.chat.extended.* import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.nonstrictJsonFormat import kotlinx.serialization.* @@ -119,5 +114,42 @@ object ExtendedChatSerializer : KSerializer { } } +@RiskFeature +object UserSerializer : KSerializer { + private val internalSerializer = JsonObject.serializer() + override val descriptor: SerialDescriptor = internalSerializer.descriptor + override fun deserialize(decoder: Decoder): User { + val asJson = internalSerializer.deserialize(decoder) + return when { + asJson[isBotField] ?.jsonPrimitive ?.booleanOrNull != true -> nonstrictJsonFormat.decodeFromJsonElement( + CommonUser.serializer(), + asJson + ) + else -> { + if ((asJson[canJoinGroupsField] + ?: asJson[canReadAllGroupMessagesField] + ?: asJson[supportInlineQueriesField]) != null + ) { + nonstrictJsonFormat.decodeFromJsonElement( + ExtendedBot.serializer(), + asJson + ) + } else { + nonstrictJsonFormat.decodeFromJsonElement( + CommonBot.serializer(), + asJson + ) + } + } + } + } + override fun serialize(encoder: Encoder, value: User) { + when (value) { + is CommonUser -> CommonUser.serializer().serialize(encoder, value) + is CommonBot -> CommonBot.serializer().serialize(encoder, value) + is ExtendedBot -> ExtendedBot.serializer().serialize(encoder, value) + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Extended.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Extended.kt new file mode 100644 index 0000000000..0dc5c4a1ee --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Extended.kt @@ -0,0 +1,125 @@ +package dev.inmo.tgbotapi.types.chat + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.message.abstracts.Message +import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ExtendedChannelChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(titleField) + override val title: String, + @SerialName(usernameField) + override val username: Username? = null, + @SerialName(photoField) + override val chatPhoto: ChatPhoto? = null, + @SerialName(descriptionField) + override val description: String = "", + @SerialName(inviteLinkField) + override val inviteLink: String? = null, + @SerialName(pinnedMessageField) + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null, + @SerialName(linkedChatIdField) + override val linkedGroupChatId: ChatId? = null +) : ExtendedChannelChat + +@Serializable +data class ExtendedGroupChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(titleField) + override val title: String, + @SerialName(photoField) + override val chatPhoto: ChatPhoto? = null, + @SerialName(permissionsField) + override val permissions: ChatPermissions, + @SerialName(descriptionField) + override val description: String = "", + @SerialName(inviteLinkField) + override val inviteLink: String? = null, + @SerialName(pinnedMessageField) + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null +) : ExtendedGroupChat + +@Serializable +data class ExtendedPrivateChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(photoField) + override val chatPhoto: ChatPhoto? = null, + @SerialName(usernameField) + override val username: Username? = null, + @SerialName(firstNameField) + override val firstName: String = "", + @SerialName(lastNameField) + override val lastName: String = "", + @SerialName(bioField) + override val bio: String = "", + @SerialName(hasPrivateForwardsField) + override val hasPrivateForwards: Boolean = false +) : ExtendedPrivateChat + +typealias ExtendedUser = ExtendedPrivateChatImpl + +@Serializable +data class ExtendedSupergroupChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(titleField) + override val title: String, + @SerialName(usernameField) + override val username: Username? = null, + @SerialName(photoField) + override val chatPhoto: ChatPhoto? = null, + @SerialName(permissionsField) + override val permissions: ChatPermissions, + @SerialName(descriptionField) + override val description: String = "", + @SerialName(inviteLinkField) + override val inviteLink: String? = null, + @SerialName(pinnedMessageField) + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null, + @SerialName(stickerSetNameFullField) + override val stickerSetName: StickerSetName? = null, + @SerialName(slowModeDelayField) + override val slowModeDelay: Long? = null, + @SerialName(canSetStickerSetField) + override val canSetStickerSet: Boolean = false, + @SerialName(linkedChatIdField) + override val linkedChannelChatId: ChatId? = null, + @SerialName(locationField) + override val location: ChatLocation? = null +) : ExtendedSupergroupChat + +@Serializable +data class ExtendedBot( + override val id: UserId, + @SerialName(usernameField) + override val username: Username, + @SerialName(firstNameField) + override val firstName: String, + @SerialName(lastNameField) + override val lastName: String = "", + @SerialName(canJoinGroupsField) + val canJoinGroups: Boolean = false, + @SerialName(canReadAllGroupMessagesField) + val canReadAllGroupMessages: Boolean = false, + @SerialName(supportInlineQueriesField) + val supportsInlineQueries: Boolean = false +) : Bot() { + @SerialName(isBotField) + private val isBot = true +} + +data class UnknownExtendedChat( + override val id: ChatId, + val raw: String +) : ExtendedChat { + override val chatPhoto: ChatPhoto? = null +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ExtendedAbstracts.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ExtendedAbstracts.kt new file mode 100644 index 0000000000..91af9e1e33 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ExtendedAbstracts.kt @@ -0,0 +1,47 @@ +package dev.inmo.tgbotapi.types.chat + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.ExtendedChat +import dev.inmo.tgbotapi.types.message.abstracts.Message +import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer +import kotlinx.serialization.Serializable + +@Serializable(ExtendedChatSerializer::class) +sealed interface ExtendedChannelChat : ChannelChat, ExtendedPublicChat { + val linkedGroupChatId: ChatId? +} + +@Serializable(ExtendedChatSerializer::class) +sealed interface ExtendedGroupChat : GroupChat, ExtendedPublicChat { + val permissions: ChatPermissions +} + +@Serializable(ExtendedChatSerializer::class) +sealed interface ExtendedPrivateChat : PrivateChat, ExtendedChat { + val bio: String + val hasPrivateForwards: Boolean + + val allowCreateUserIdLink: Boolean + get() = hasPrivateForwards +} + +sealed interface ExtendedPublicChat : ExtendedChat, PublicChat { + val description: String + val inviteLink: String? + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + val pinnedMessage: Message? +} + +@Serializable(ExtendedChatSerializer::class) +sealed interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat { + val slowModeDelay: Long? + val stickerSetName: StickerSetName? + val canSetStickerSet: Boolean + val linkedChannelChatId: ChatId? + val location: ChatLocation? +} + +@Serializable(ExtendedChatSerializer::class) +sealed interface ExtendedChat : Chat { + val chatPhoto: ChatPhoto? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/GroupChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/GroupChatImpl.kt deleted file mode 100644 index 26cff478b6..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/GroupChatImpl.kt +++ /dev/null @@ -1,14 +0,0 @@ -package dev.inmo.tgbotapi.types.chat - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.GroupChat -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class GroupChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(titleField) - override val title: String -) : GroupChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt new file mode 100644 index 0000000000..81c4fd2d5b --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt @@ -0,0 +1,92 @@ +package dev.inmo.tgbotapi.types.chat + +import dev.inmo.micro_utils.language_codes.IetfLanguageCode +import dev.inmo.micro_utils.language_codes.IetfLanguageCodeSerializer +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class GroupChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(titleField) + override val title: String +) : GroupChat + +@Serializable +data class PrivateChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(usernameField) + override val username: Username? = null, + @SerialName(firstNameField) + override val firstName: String = "", + @SerialName(lastNameField) + override val lastName: String = "" +) : PrivateChat + +@Serializable +data class SupergroupChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(titleField) + override val title: String, + @SerialName(usernameField) + override val username: Username? = null +) : SupergroupChat + +@Serializable +data class ChannelChatImpl( + @SerialName(idField) + override val id: ChatId, + @SerialName(titleField) + override val title: String, + @SerialName(usernameField) + override val username: Username? = null +) : ChannelChat + +@Serializable(UserSerializer::class) +sealed class User : PrivateChat + +@Serializable(UserSerializer::class) +sealed class Bot : User() { + abstract override val username: Username +} + +@Serializable +data class CommonBot( + override val id: UserId, + @SerialName(usernameField) + override val username: Username, + @SerialName(firstNameField) + override val firstName: String, + @SerialName(lastNameField) + override val lastName: String = "" +) : Bot() { + @SerialName(isBotField) + private val isBot = true +} + +@Serializable +data class CommonUser( + override val id: UserId, + @SerialName(firstNameField) + override val firstName: String, + @SerialName(lastNameField) + override val lastName: String = "", + @SerialName(usernameField) + override val username: Username? = null, + @SerialName(languageCodeField) + @Serializable(IetfLanguageCodeSerializer::class) + override val ietfLanguageCode: IetfLanguageCode? = null +) : User(), WithOptionalLanguageCode { + constructor( + id: UserId, + firstName: String, + lastName: String = "", + username: Username? = null, + languageCode: String + ) : this(id, firstName, lastName, username, IetfLanguageCode(languageCode)) +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/PrivateChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/PrivateChatImpl.kt deleted file mode 100644 index ba52fc47aa..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/PrivateChatImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package dev.inmo.tgbotapi.types.chat - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class PrivateChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(usernameField) - override val username: Username? = null, - @SerialName(firstNameField) - override val firstName: String = "", - @SerialName(lastNameField) - override val lastName: String = "" -) : PrivateChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/SupergroupChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/SupergroupChatImpl.kt deleted file mode 100644 index ea8463de05..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/SupergroupChatImpl.kt +++ /dev/null @@ -1,16 +0,0 @@ -package dev.inmo.tgbotapi.types.chat - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.SupergroupChat -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class SupergroupChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(titleField) - override val title: String, - @SerialName(usernameField) - override val username: Username? = null -) : SupergroupChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/UnknownChatType.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/UnknownChatType.kt new file mode 100644 index 0000000000..01f146c96c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/UnknownChatType.kt @@ -0,0 +1,9 @@ +package dev.inmo.tgbotapi.types.chat + +import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.chat.Chat + +data class UnknownChatType( + override val id: ChatId, + val raw: String +) : Chat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/ChannelChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/ChannelChat.kt deleted file mode 100644 index 3e42f887d1..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/ChannelChat.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface ChannelChat : SuperPublicChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/Chat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/Chat.kt deleted file mode 100644 index 65043c55de..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/Chat.kt +++ /dev/null @@ -1,15 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.ChatId -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface Chat { - val id: ChatId -} - -data class UnknownChatType( - override val id: ChatId, - val raw: String -) : Chat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/GroupChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/GroupChat.kt deleted file mode 100644 index 591a565624..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/GroupChat.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface GroupChat : PublicChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/PrivateChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/PrivateChat.kt deleted file mode 100644 index 83dfb87afc..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/PrivateChat.kt +++ /dev/null @@ -1,12 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.UserId -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface PrivateChat : Chat, UsernameChat { - override val id: UserId - val firstName: String - val lastName: String -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/PublicChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/PublicChat.kt deleted file mode 100644 index f78e434f44..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/PublicChat.kt +++ /dev/null @@ -1,9 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface PublicChat : Chat { - val title: String -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/SuperPublicChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/SuperPublicChat.kt deleted file mode 100644 index ce290dbe2f..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/SuperPublicChat.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface SuperPublicChat : PublicChat, UsernameChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/SupergroupChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/SupergroupChat.kt deleted file mode 100644 index d4ad4d90d2..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/SupergroupChat.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface SupergroupChat : GroupChat, SuperPublicChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/Typealiases.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/Typealiases.kt new file mode 100644 index 0000000000..5ddd62c421 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/Typealiases.kt @@ -0,0 +1,25 @@ +package dev.inmo.tgbotapi.types.chat.abstracts + +@Deprecated("Replaced", ReplaceWith("ChannelChat", "dev.inmo.tgbotapi.types.chat.ChannelChat")) +typealias ChannelChat = dev.inmo.tgbotapi.types.chat.ChannelChat + +@Deprecated("Replaced", ReplaceWith("GroupChat", "dev.inmo.tgbotapi.types.chat.GroupChat")) +typealias GroupChat = dev.inmo.tgbotapi.types.chat.GroupChat + +@Deprecated("Replaced", ReplaceWith("PrivateChat", "dev.inmo.tgbotapi.types.chat.PrivateChat")) +typealias PrivateChat = dev.inmo.tgbotapi.types.chat.PrivateChat + +@Deprecated("Replaced", ReplaceWith("PublicChat", "dev.inmo.tgbotapi.types.chat.PublicChat")) +typealias PublicChat = dev.inmo.tgbotapi.types.chat.PublicChat + +@Deprecated("Replaced", ReplaceWith("SupergroupChat", "dev.inmo.tgbotapi.types.chat.SupergroupChat")) +typealias SupergroupChat = dev.inmo.tgbotapi.types.chat.SupergroupChat + +@Deprecated("Replaced", ReplaceWith("SuperPublicChat", "dev.inmo.tgbotapi.types.chat.SuperPublicChat")) +typealias SuperPublicChat = dev.inmo.tgbotapi.types.chat.SuperPublicChat + +@Deprecated("Replaced", ReplaceWith("UsernameChat", "dev.inmo.tgbotapi.types.chat.UsernameChat")) +typealias UsernameChat = dev.inmo.tgbotapi.types.chat.UsernameChat + +@Deprecated("Replaced", ReplaceWith("Chat", "dev.inmo.tgbotapi.types.chat.Chat")) +typealias Chat = dev.inmo.tgbotapi.types.chat.Chat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/UsernameChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/UsernameChat.kt deleted file mode 100644 index eb2149799f..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/UsernameChat.kt +++ /dev/null @@ -1,10 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts - -import dev.inmo.tgbotapi.types.Username -import dev.inmo.tgbotapi.types.chat.PreviewChatSerializer -import kotlinx.serialization.Serializable - -@Serializable(PreviewChatSerializer::class) -interface UsernameChat : Chat { - val username: Username? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedChannelChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedChannelChat.kt deleted file mode 100644 index e21d2e314b..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedChannelChat.kt +++ /dev/null @@ -1,11 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts.extended - -import dev.inmo.tgbotapi.types.ChatId -import dev.inmo.tgbotapi.types.chat.ExtendedChatSerializer -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat -import kotlinx.serialization.Serializable - -@Serializable(ExtendedChatSerializer::class) -interface ExtendedChannelChat : ChannelChat, ExtendedPublicChat { - val linkedGroupChatId: ChatId? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedChat.kt deleted file mode 100644 index dea56901e6..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedChat.kt +++ /dev/null @@ -1,19 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts.extended - -import dev.inmo.tgbotapi.types.ChatId -import dev.inmo.tgbotapi.types.ChatPhoto -import dev.inmo.tgbotapi.types.chat.ExtendedChatSerializer -import dev.inmo.tgbotapi.types.chat.abstracts.Chat -import kotlinx.serialization.Serializable - -@Serializable(ExtendedChatSerializer::class) -interface ExtendedChat : Chat { - val chatPhoto: ChatPhoto? -} - -data class UnknownExtendedChat( - override val id: ChatId, - val raw: String -) : ExtendedChat { - override val chatPhoto: ChatPhoto? = null -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedGroupChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedGroupChat.kt deleted file mode 100644 index a24939a299..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedGroupChat.kt +++ /dev/null @@ -1,11 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts.extended - -import dev.inmo.tgbotapi.types.chat.ChatPermissions -import dev.inmo.tgbotapi.types.chat.ExtendedChatSerializer -import dev.inmo.tgbotapi.types.chat.abstracts.GroupChat -import kotlinx.serialization.Serializable - -@Serializable(ExtendedChatSerializer::class) -interface ExtendedGroupChat : GroupChat, ExtendedPublicChat { - val permissions: ChatPermissions -} \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedPrivateChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedPrivateChat.kt deleted file mode 100644 index 8fb6617a95..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedPrivateChat.kt +++ /dev/null @@ -1,14 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts.extended - -import dev.inmo.tgbotapi.types.chat.ExtendedChatSerializer -import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat -import kotlinx.serialization.Serializable - -@Serializable(ExtendedChatSerializer::class) -interface ExtendedPrivateChat : PrivateChat, ExtendedChat { - val bio: String - val hasPrivateForwards: Boolean - - val allowCreateUserIdLink: Boolean - get() = hasPrivateForwards -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedPublicChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedPublicChat.kt deleted file mode 100644 index 95d9366a60..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedPublicChat.kt +++ /dev/null @@ -1,13 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts.extended - -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat -import dev.inmo.tgbotapi.types.message.abstracts.Message -import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer -import kotlinx.serialization.Serializable - -interface ExtendedPublicChat : ExtendedChat, PublicChat { - val description: String - val inviteLink: String? - @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) - val pinnedMessage: Message? -} \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedSupergroupChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedSupergroupChat.kt deleted file mode 100644 index fc50b3bd37..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/ExtendedSupergroupChat.kt +++ /dev/null @@ -1,15 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.abstracts.extended - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.ExtendedChatSerializer -import dev.inmo.tgbotapi.types.chat.abstracts.SupergroupChat -import kotlinx.serialization.Serializable - -@Serializable(ExtendedChatSerializer::class) -interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat { - val slowModeDelay: Long? - val stickerSetName: StickerSetName? - val canSetStickerSet: Boolean - val linkedChannelChatId: ChatId? - val location: ChatLocation? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/Typealiases.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/Typealiases.kt new file mode 100644 index 0000000000..a520dbad34 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/abstracts/extended/Typealiases.kt @@ -0,0 +1,19 @@ +package dev.inmo.tgbotapi.types.chat.abstracts.extended + +@Deprecated("Replaced", ReplaceWith("ExtendedChannelChat", "dev.inmo.tgbotapi.types.chat.ExtendedChannelChat")) +typealias ExtendedChannelChat = dev.inmo.tgbotapi.types.chat.ExtendedChannelChat + +@Deprecated("Replaced", ReplaceWith("ExtendedGroupChat", "dev.inmo.tgbotapi.types.chat.ExtendedGroupChat")) +typealias ExtendedGroupChat = dev.inmo.tgbotapi.types.chat.ExtendedGroupChat + +@Deprecated("Replaced", ReplaceWith("ExtendedPrivateChat", "dev.inmo.tgbotapi.types.chat.ExtendedPrivateChat")) +typealias ExtendedPrivateChat = dev.inmo.tgbotapi.types.chat.ExtendedPrivateChat + +@Deprecated("Replaced", ReplaceWith("ExtendedPublicChat", "dev.inmo.tgbotapi.types.chat.ExtendedPublicChat")) +typealias ExtendedPublicChat = dev.inmo.tgbotapi.types.chat.ExtendedPublicChat + +@Deprecated("Replaced", ReplaceWith("ExtendedSupergroupChat", "dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChat")) +typealias ExtendedSupergroupChat = dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChat + +@Deprecated("Replaced", ReplaceWith("ExtendedChat", "dev.inmo.tgbotapi.types.chat.ExtendedChat")) +typealias ExtendedChat = dev.inmo.tgbotapi.types.chat.ExtendedChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedChannelChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedChannelChatImpl.kt deleted file mode 100644 index d632a1f04d..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedChannelChatImpl.kt +++ /dev/null @@ -1,29 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.extended - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedChannelChat -import dev.inmo.tgbotapi.types.message.abstracts.Message -import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ExtendedChannelChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(titleField) - override val title: String, - @SerialName(usernameField) - override val username: Username? = null, - @SerialName(photoField) - override val chatPhoto: ChatPhoto? = null, - @SerialName(descriptionField) - override val description: String = "", - @SerialName(inviteLinkField) - override val inviteLink: String? = null, - @SerialName(pinnedMessageField) - @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) - override val pinnedMessage: Message? = null, - @SerialName(linkedChatIdField) - override val linkedGroupChatId: ChatId? = null -) : ExtendedChannelChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedGroupChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedGroupChatImpl.kt deleted file mode 100644 index c19b0f4683..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedGroupChatImpl.kt +++ /dev/null @@ -1,28 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.extended - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.ChatPermissions -import dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedGroupChat -import dev.inmo.tgbotapi.types.message.abstracts.Message -import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ExtendedGroupChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(titleField) - override val title: String, - @SerialName(photoField) - override val chatPhoto: ChatPhoto? = null, - @SerialName(permissionsField) - override val permissions: ChatPermissions, - @SerialName(descriptionField) - override val description: String = "", - @SerialName(inviteLinkField) - override val inviteLink: String? = null, - @SerialName(pinnedMessageField) - @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) - override val pinnedMessage: Message? = null -) : ExtendedGroupChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedPrivateChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedPrivateChatImpl.kt deleted file mode 100644 index 4f1d86d55d..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedPrivateChatImpl.kt +++ /dev/null @@ -1,24 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.extended - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedPrivateChat -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ExtendedPrivateChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(photoField) - override val chatPhoto: ChatPhoto? = null, - @SerialName(usernameField) - override val username: Username? = null, - @SerialName(firstNameField) - override val firstName: String = "", - @SerialName(lastNameField) - override val lastName: String = "", - @SerialName(bioField) - override val bio: String = "", - @SerialName(hasPrivateForwardsField) - override val hasPrivateForwards: Boolean = false -) : ExtendedPrivateChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedSupergroupChatImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedSupergroupChatImpl.kt deleted file mode 100644 index df17d30760..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/ExtendedSupergroupChatImpl.kt +++ /dev/null @@ -1,40 +0,0 @@ -package dev.inmo.tgbotapi.types.chat.extended - -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.ChatPermissions -import dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedSupergroupChat -import dev.inmo.tgbotapi.types.message.abstracts.Message -import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ExtendedSupergroupChatImpl( - @SerialName(idField) - override val id: ChatId, - @SerialName(titleField) - override val title: String, - @SerialName(usernameField) - override val username: Username? = null, - @SerialName(photoField) - override val chatPhoto: ChatPhoto? = null, - @SerialName(permissionsField) - override val permissions: ChatPermissions, - @SerialName(descriptionField) - override val description: String = "", - @SerialName(inviteLinkField) - override val inviteLink: String? = null, - @SerialName(pinnedMessageField) - @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) - override val pinnedMessage: Message? = null, - @SerialName(stickerSetNameFullField) - override val stickerSetName: StickerSetName? = null, - @SerialName(slowModeDelayField) - override val slowModeDelay: Long? = null, - @SerialName(canSetStickerSetField) - override val canSetStickerSet: Boolean = false, - @SerialName(linkedChatIdField) - override val linkedChannelChatId: ChatId? = null, - @SerialName(locationField) - override val location: ChatLocation? = null -) : ExtendedSupergroupChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/Typealiases.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/Typealiases.kt new file mode 100644 index 0000000000..b8e99b677b --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/extended/Typealiases.kt @@ -0,0 +1,19 @@ +package dev.inmo.tgbotapi.types.chat.extended + +@Deprecated("Replaced", ReplaceWith("ExtendedChannelChatImpl", "dev.inmo.tgbotapi.types.chat.ExtendedChannelChatImpl")) +typealias ExtendedChannelChatImpl = dev.inmo.tgbotapi.types.chat.ExtendedChannelChatImpl +@Deprecated("Replaced", ReplaceWith("ExtendedGroupChatImpl", "dev.inmo.tgbotapi.types.chat.ExtendedGroupChatImpl")) +typealias ExtendedGroupChatImpl = dev.inmo.tgbotapi.types.chat.ExtendedGroupChatImpl +@Deprecated("Replaced", ReplaceWith("ExtendedPrivateChatImpl", "dev.inmo.tgbotapi.types.chat.ExtendedPrivateChatImpl")) +typealias ExtendedPrivateChatImpl = dev.inmo.tgbotapi.types.chat.ExtendedPrivateChatImpl + +@Deprecated("ExtendedUser", ReplaceWith("ExtendedPrivateChatImpl", "dev.inmo.tgbotapi.types.chat.ExtendedUser")) +typealias ExtendedUser = ExtendedPrivateChatImpl + +@Deprecated("Replaced", ReplaceWith("ExtendedSupergroupChatImpl", "dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChatImpl")) +typealias ExtendedSupergroupChatImpl = dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChatImpl +@Deprecated("Replaced", ReplaceWith("ExtendedBot", "dev.inmo.tgbotapi.types.chat.ExtendedBot")) +typealias ExtendedBot = dev.inmo.tgbotapi.types.chat.ExtendedBot + +@Deprecated("Replaced", ReplaceWith("UnknownExtendedChat", "dev.inmo.tgbotapi.types.chat.UnknownExtendedChat")) +typealias UnknownExtendedChat = dev.inmo.tgbotapi.types.chat.UnknownExtendedChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMember.kt new file mode 100644 index 0000000000..7d25a41eaf --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMember.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.utils.RiskFeature +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +@Serializable(AdministratorChatMemberSerializer::class) +sealed interface AdministratorChatMember : SpecialRightsChatMember, ChatAdministratorRights { + val canBeEdited: Boolean + val customTitle: String? + + val canManageVoiceChats: Boolean + get() = canManageVideoChats +} + +@RiskFeature +object AdministratorChatMemberSerializer : KSerializer { + override val descriptor: SerialDescriptor = ChatMemberSerializer.descriptor + + override fun deserialize(decoder: Decoder): AdministratorChatMember = ChatMemberSerializer.deserialize(decoder) as AdministratorChatMember + override fun serialize(encoder: Encoder, value: AdministratorChatMember) = + ChatMemberSerializer.serialize(encoder, value) +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMemberImpl.kt new file mode 100644 index 0000000000..f6421cb160 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMemberImpl.kt @@ -0,0 +1,41 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User +import kotlinx.serialization.* + +@Serializable +data class AdministratorChatMemberImpl( + @SerialName(userField) + override val user: User, + @SerialName(canBeEditedField) + override val canBeEdited: Boolean = false, + @SerialName(canChangeInfoField) + override val canChangeInfo: Boolean = false, + @SerialName(canPostMessagesField) + override val canPostMessages: Boolean = false, + @SerialName(canEditMessagesField) + override val canEditMessages: Boolean = false, + @SerialName(canDeleteMessagesField) + override val canRemoveMessages: Boolean = false, + @SerialName(canInviteUsersField) + override val canInviteUsers: Boolean = false, + @SerialName(canRestrictMembersField) + override val canRestrictMembers: Boolean = false, + @SerialName(canPinMessagesField) + override val canPinMessages: Boolean = false, + @SerialName(canPromoteMembersField) + override val canPromoteMembers: Boolean = false, + @SerialName(canManageVideoChatsField) + override val canManageVideoChats: Boolean = false, + @SerialName(canManageChatField) + override val canManageChat: Boolean = false, + @SerialName(isAnonymousField) + override val isAnonymous: Boolean = false, + @SerialName(customTitleField) + override val customTitle: String? = null +) : AdministratorChatMember { + @SerialName(statusField) + @Required + private val type: String = "administrator" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/BannedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/BannedChatMember.kt new file mode 100644 index 0000000000..b5cbb48456 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/BannedChatMember.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.abstracts.types.UntilDate +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface BannedChatMember : ChatMember, UntilDate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRights.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRights.kt new file mode 100644 index 0000000000..683325ed12 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRights.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.types.chat.member + +sealed interface SpecialChatAdministratorRights { + val canChangeInfo: Boolean + val canInviteUsers: Boolean + val canPinMessages: Boolean +} + +sealed interface ChatAdministratorRights : SpecialChatAdministratorRights { + val isAnonymous: Boolean + val canManageChat: Boolean + val canRemoveMessages: Boolean + val canManageVideoChats: Boolean + val canRestrictMembers: Boolean + val canPromoteMembers: Boolean + val canPostMessages: Boolean + val canEditMessages: Boolean +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRightsImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRightsImpl.kt new file mode 100644 index 0000000000..8f1ea768b3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRightsImpl.kt @@ -0,0 +1,31 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ChatAdministratorRightsImpl( + @SerialName(canChangeInfoField) + override val canChangeInfo: Boolean = false, + @SerialName(canPostMessagesField) + override val canPostMessages: Boolean = false, + @SerialName(canEditMessagesField) + override val canEditMessages: Boolean = false, + @SerialName(canDeleteMessagesField) + override val canRemoveMessages: Boolean = false, + @SerialName(canInviteUsersField) + override val canInviteUsers: Boolean = false, + @SerialName(canRestrictMembersField) + override val canRestrictMembers: Boolean = false, + @SerialName(canPinMessagesField) + override val canPinMessages: Boolean = false, + @SerialName(canPromoteMembersField) + override val canPromoteMembers: Boolean = false, + @SerialName(canManageVideoChatsField) + override val canManageVideoChats: Boolean = false, + @SerialName(canManageChatField) + override val canManageChat: Boolean = false, + @SerialName(isAnonymousField) + override val isAnonymous: Boolean = false +) : ChatAdministratorRights diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMember.kt new file mode 100644 index 0000000000..fc90fa4271 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMember.kt @@ -0,0 +1,45 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.abstracts.WithUser +import dev.inmo.tgbotapi.types.statusField +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.nonstrictJsonFormat +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive + +@Serializable(ChatMemberSerializer::class) +sealed interface ChatMember : WithUser + +@RiskFeature +object ChatMemberSerializer : KSerializer { + override val descriptor: SerialDescriptor = JsonObject.serializer().descriptor + + override fun deserialize(decoder: Decoder): ChatMember { + val json = JsonObject.serializer().deserialize(decoder) + return when (json[statusField] ?.jsonPrimitive ?.content ?: error("Status field of chat member must be specified, but incoming json contains next: $json")) { + "creator" -> nonstrictJsonFormat.decodeFromJsonElement(CreatorChatMember.serializer(), json) + "administrator" -> nonstrictJsonFormat.decodeFromJsonElement(AdministratorChatMemberImpl.serializer(), json) + "member" -> nonstrictJsonFormat.decodeFromJsonElement(MemberChatMemberImpl.serializer(), json) + "restricted" -> nonstrictJsonFormat.decodeFromJsonElement(RestrictedChatMember.serializer(), json) + "left" -> nonstrictJsonFormat.decodeFromJsonElement(LeftChatMemberImpl.serializer(), json) + "kicked" -> nonstrictJsonFormat.decodeFromJsonElement(KickedChatMember.serializer(), json) + else -> error("Unknown type of chat member in json: $json") + } + } + + override fun serialize(encoder: Encoder, value: ChatMember) { + when (value) { + is CreatorChatMember -> CreatorChatMember.serializer() + is AdministratorChatMemberImpl -> AdministratorChatMemberImpl.serializer() + is MemberChatMember -> MemberChatMemberImpl.serializer() + is RestrictedChatMember -> RestrictedChatMember.serializer() + is LeftChatMember -> LeftChatMemberImpl.serializer() + is KickedChatMember -> KickedChatMember.serializer() + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMemberUpdated.kt similarity index 76% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMemberUpdated.kt index 856e113ac0..59646cc3df 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMemberUpdated.kt @@ -1,7 +1,8 @@ -package dev.inmo.tgbotapi.types +package dev.inmo.tgbotapi.types.chat.member -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.chat.User import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/CreatorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/CreatorChatMember.kt new file mode 100644 index 0000000000..fb0397afb6 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/CreatorChatMember.kt @@ -0,0 +1,40 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User +import kotlinx.serialization.* + +@Serializable +data class CreatorChatMember( + override val user: User, + @SerialName(isAnonymousField) + override val isAnonymous: Boolean = false, + @SerialName(customTitleField) + override val customTitle: String? = null +) : AdministratorChatMember { + @Transient + override val canBeEdited: Boolean = true + @Transient + override val canChangeInfo: Boolean = true + @Transient + override val canPostMessages: Boolean = true + @Transient + override val canEditMessages: Boolean = true + @Transient + override val canRemoveMessages: Boolean = true + @Transient + override val canInviteUsers: Boolean = true + @Transient + override val canRestrictMembers: Boolean = true + @Transient + override val canPinMessages: Boolean = true + @Transient + override val canPromoteMembers: Boolean = true + @Transient + override val canManageVideoChats: Boolean = true + @Transient + override val canManageChat: Boolean = true + @SerialName(statusField) + @Required + private val type: String = "creator" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/KickedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/KickedChatMember.kt new file mode 100644 index 0000000000..96c0778236 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/KickedChatMember.kt @@ -0,0 +1,17 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User +import kotlinx.serialization.* + +@Serializable +data class KickedChatMember( + @SerialName(userField) + override val user: User, + @SerialName(untilDateField) + override val untilDate: TelegramDate? = null +) : BannedChatMember { + @SerialName(statusField) + @Required + private val type: String = "kicked" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMember.kt new file mode 100644 index 0000000000..436a0eb261 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMember.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.chat.member + +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface LeftChatMember : ChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMemberImpl.kt new file mode 100644 index 0000000000..617d2f2531 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMemberImpl.kt @@ -0,0 +1,12 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User +import kotlinx.serialization.* + +@Serializable +data class LeftChatMemberImpl(@SerialName(userField) override val user: User) : LeftChatMember { + @SerialName(statusField) + @Required + private val type: String = "left" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMember.kt new file mode 100644 index 0000000000..e11554acb7 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMember.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.chat.member + +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface MemberChatMember : ChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMemberImpl.kt new file mode 100644 index 0000000000..489bbb9b92 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMemberImpl.kt @@ -0,0 +1,12 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User +import kotlinx.serialization.* + +@Serializable +data class MemberChatMemberImpl(@SerialName(userField) override val user: User) : MemberChatMember { + @SerialName(statusField) + @Required + private val type: String = "member" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/RestrictedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/RestrictedChatMember.kt new file mode 100644 index 0000000000..f28a9ffe1a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/RestrictedChatMember.kt @@ -0,0 +1,35 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User +import kotlinx.serialization.* + +@Serializable +data class RestrictedChatMember( + @SerialName(userField) + override val user: User, + @SerialName(untilDateField) + override val untilDate: TelegramDate? = null, + @SerialName(isMemberField) + val isMember: Boolean = false, + @SerialName(canSendMessagesField) + val canSendMessages: Boolean = false, + @SerialName(canSendMediaMessagesField) + val canSendMediaMessages: Boolean = false, + @SerialName(canSendPollsField) + val canSendPolls: Boolean = false, + @SerialName(canSendOtherMessagesField) + val canSendOtherMessages: Boolean = false, + @SerialName(canAddWebPagePreviewsField) + val canAddWebpagePreviews: Boolean = false, + @SerialName(canChangeInfoField) + override val canChangeInfo: Boolean = false, + @SerialName(canInviteUsersField) + override val canInviteUsers: Boolean = false, + @SerialName(canPinMessagesField) + override val canPinMessages: Boolean = false +) : BannedChatMember, SpecialRightsChatMember { + @SerialName(statusField) + @Required + private val type: String = "restricted" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/SpecialRightsChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/SpecialRightsChatMember.kt new file mode 100644 index 0000000000..858b22edff --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/SpecialRightsChatMember.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.chat.member + +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface SpecialRightsChatMember : ChatMember, SpecialChatAdministratorRights diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AnimationFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AnimationFile.kt index 9087f96d7b..7293d908cf 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AnimationFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AnimationFile.kt @@ -1,9 +1,8 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.FileUniqueId -import dev.inmo.tgbotapi.types.fileUniqueIdField -import dev.inmo.tgbotapi.types.files.abstracts.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.utils.MimeType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AudioFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AudioFile.kt index 554b878069..8a3f4ebd28 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AudioFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/AudioFile.kt @@ -1,9 +1,8 @@ package dev.inmo.tgbotapi.types.files -import dev.inmo.tgbotapi.CommonAbstracts.Performerable +import dev.inmo.tgbotapi.abstracts.Performerable import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.files.abstracts.* import dev.inmo.tgbotapi.utils.MimeType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -28,6 +27,7 @@ data class AudioFile( override val fileSize: Long? = null, @SerialName(thumbField) override val thumb: PhotoSize? = null -) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, TitledMediaFile, Performerable +) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, TitledMediaFile, + Performerable fun AudioFile.asVoiceFile() = VoiceFile(fileId, fileUniqueId, duration, mimeType, fileSize) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/CustomNamedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/CustomNamedMediaFile.kt new file mode 100644 index 0000000000..f5581cc156 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/CustomNamedMediaFile.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.files + +sealed interface CustomNamedMediaFile { + val fileName: String? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/DocumentFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/DocumentFile.kt index d869f4cb69..c477da4b4f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/DocumentFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/DocumentFile.kt @@ -1,10 +1,8 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.FileUniqueId -import dev.inmo.tgbotapi.types.fileUniqueIdField -import dev.inmo.tgbotapi.types.files.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.DocumentContent +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.utils.MimeType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/File.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/File.kt index bbfcfa8393..f94f9b8f2c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/File.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/File.kt @@ -1,9 +1,8 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.FileUniqueId -import dev.inmo.tgbotapi.types.fileUniqueIdField -import dev.inmo.tgbotapi.types.files.abstracts.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/MimedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/MimedMediaFile.kt new file mode 100644 index 0000000000..365c7bb9b0 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/MimedMediaFile.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.files + +import dev.inmo.tgbotapi.abstracts.MimeTyped + +sealed interface MimedMediaFile : TelegramMediaFile, MimeTyped diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PassportFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PassportFile.kt new file mode 100644 index 0000000000..73098d8b26 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PassportFile.kt @@ -0,0 +1,22 @@ +package dev.inmo.tgbotapi.types.files + +import dev.inmo.tgbotapi.requests.abstracts.FileId +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +/** + * This object represents a file uploaded to Telegram Passport. Currently all Telegram Passport files are in JPEG format + * when decrypted and don't exceed 10MB. + */ +@Serializable +data class PassportFile( + @SerialName(fileIdField) + override val fileId: FileId, + @SerialName(fileUniqueIdField) + override val fileUniqueId: FileUniqueId, + @SerialName(fileDateField) + val uploadingDate: TelegramDate, + @SerialName(fileSizeField) + override val fileSize: Long? = null +) : TelegramMediaFile diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PathedFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PathedFile.kt index e1dd2ac001..2ceaf625e1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PathedFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PathedFile.kt @@ -1,9 +1,7 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.FileUniqueId -import dev.inmo.tgbotapi.types.fileUniqueIdField -import dev.inmo.tgbotapi.types.files.abstracts.* +import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.utils.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PhotoSize.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PhotoSize.kt index 78910be5b7..707eed7e2d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PhotoSize.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PhotoSize.kt @@ -1,9 +1,8 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.FileUniqueId -import dev.inmo.tgbotapi.types.fileUniqueIdField -import dev.inmo.tgbotapi.types.files.abstracts.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.utils.RiskFeature import kotlinx.serialization.* import kotlinx.serialization.builtins.ListSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PlayableMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PlayableMediaFile.kt new file mode 100644 index 0000000000..f4b5665469 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PlayableMediaFile.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.types.files + +import dev.inmo.tgbotapi.types.files.TelegramMediaFile + +sealed interface PlayableMediaFile : TelegramMediaFile { + val duration: Long? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/SizedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/SizedMediaFile.kt new file mode 100644 index 0000000000..88f122885c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/SizedMediaFile.kt @@ -0,0 +1,8 @@ +package dev.inmo.tgbotapi.types.files + +import dev.inmo.tgbotapi.types.files.TelegramMediaFile + +sealed interface SizedMediaFile : TelegramMediaFile { + val width: Int + val height: Int +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/Sticker.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/Sticker.kt index 1027fba5c0..e9832c00c2 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/Sticker.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/Sticker.kt @@ -1,6 +1,152 @@ package dev.inmo.tgbotapi.types.files -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.requests.abstracts.FileId +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.stickers.MaskPosition +import dev.inmo.tgbotapi.utils.RiskFeature +import kotlinx.serialization.* +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder -@Deprecated("Replaced", ReplaceWith("Sticker", "dev.inmo.tgbotapi.types.files.sticker.Sticker")) -typealias Sticker = Sticker +@Serializable +@RiskFeature("This class is used for serialization/deserialization of Sticker interface") +data class StickerSurrogate( + val file_id: FileId, + val file_unique_id: FileUniqueId, + val width: Int, + val height: Int, + val is_animated: Boolean? = null, + val is_video: Boolean? = null, + val thumb: PhotoSize? = null, + val emoji: String? = null, + val set_name: StickerSetName? = null, + val mask_position: MaskPosition? = null, + val file_size: Long? = null +) + +// TODO:: Serializer +@Serializable(StickerSerializer::class) +sealed interface Sticker : TelegramMediaFile, SizedMediaFile, ThumbedMediaFile { + val emoji: String? + val maskPosition: MaskPosition? + val stickerSetName: StickerSetName? + + val isAnimated + get() = this is AnimatedSticker + val isVideo + get() = this is VideoSticker +} + +object StickerSerializer : KSerializer { + override val descriptor: SerialDescriptor = StickerSurrogate.serializer().descriptor + + override fun deserialize(decoder: Decoder): Sticker { + val surrogate = StickerSurrogate.serializer().deserialize(decoder) + + return when { + surrogate.is_animated == true -> AnimatedSticker( + surrogate.file_id, + surrogate.file_unique_id, + surrogate.width, + surrogate.height, + surrogate.thumb, + surrogate.emoji, + surrogate.set_name, + surrogate.mask_position, + surrogate.file_size + ) + surrogate.is_video == true -> VideoSticker( + surrogate.file_id, + surrogate.file_unique_id, + surrogate.width, + surrogate.height, + surrogate.thumb, + surrogate.emoji, + surrogate.set_name, + surrogate.mask_position, + surrogate.file_size + ) + else -> SimpleSticker( + surrogate.file_id, + surrogate.file_unique_id, + surrogate.width, + surrogate.height, + surrogate.thumb, + surrogate.emoji, + surrogate.set_name, + surrogate.mask_position, + surrogate.file_size + ) + } + } + + override fun serialize(encoder: Encoder, value: Sticker) { + TODO("Not yet implemented") + } + +} + +@Serializable +data class SimpleSticker( + @SerialName(fileIdField) + override val fileId: FileId, + @SerialName(fileUniqueIdField) + override val fileUniqueId: FileUniqueId, + @SerialName(widthField) + override val width: Int, + @SerialName(heightField) + override val height: Int, + @SerialName(thumbField) + override val thumb: PhotoSize? = null, + @SerialName(emojiField) + override val emoji: String? = null, + @SerialName(stickerSetNameField) + override val stickerSetName: StickerSetName? = null, + @SerialName(maskPositionField) + override val maskPosition: MaskPosition? = null, + @SerialName(fileSizeField) + override val fileSize: Long? = null, +) : Sticker +@Serializable +data class AnimatedSticker( + @SerialName(fileIdField) + override val fileId: FileId, + @SerialName(fileUniqueIdField) + override val fileUniqueId: FileUniqueId, + @SerialName(widthField) + override val width: Int, + @SerialName(heightField) + override val height: Int, + @SerialName(thumbField) + override val thumb: PhotoSize? = null, + @SerialName(emojiField) + override val emoji: String? = null, + @SerialName(stickerSetNameField) + override val stickerSetName: StickerSetName? = null, + @SerialName(maskPositionField) + override val maskPosition: MaskPosition? = null, + @SerialName(fileSizeField) + override val fileSize: Long? = null, +) : Sticker +@Serializable +data class VideoSticker( + @SerialName(fileIdField) + override val fileId: FileId, + @SerialName(fileUniqueIdField) + override val fileUniqueId: FileUniqueId, + @SerialName(widthField) + override val width: Int, + @SerialName(heightField) + override val height: Int, + @SerialName(thumbField) + override val thumb: PhotoSize? = null, + @SerialName(emojiField) + override val emoji: String? = null, + @SerialName(stickerSetNameField) + override val stickerSetName: StickerSetName? = null, + @SerialName(maskPositionField) + override val maskPosition: MaskPosition? = null, + @SerialName(fileSizeField) + override val fileSize: Long? = null, +) : Sticker diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/TelegramMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TelegramMediaFile.kt similarity index 52% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/TelegramMediaFile.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TelegramMediaFile.kt index 149391a69c..b6e04f7e06 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/TelegramMediaFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TelegramMediaFile.kt @@ -1,17 +1,12 @@ -package dev.inmo.tgbotapi.types.files.abstracts +package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.FileUniqueId -internal const val fileIdField = "file_id" -internal const val fileSizeField = "file_size" -internal const val fileDateField = "file_date" -internal const val filePathField = "file_path" - /** * Declare common part of media files in Telegram. Note: it is not representation of JVM `File` type */ -interface TelegramMediaFile { +sealed interface TelegramMediaFile { val fileId: FileId val fileUniqueId: FileUniqueId val fileSize: Long? diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/ThumbedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/ThumbedMediaFile.kt new file mode 100644 index 0000000000..b988901009 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/ThumbedMediaFile.kt @@ -0,0 +1,8 @@ +package dev.inmo.tgbotapi.types.files + +import dev.inmo.tgbotapi.types.files.PhotoSize +import dev.inmo.tgbotapi.types.files.TelegramMediaFile + +sealed interface ThumbedMediaFile : TelegramMediaFile { + val thumb: PhotoSize? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TitledMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TitledMediaFile.kt new file mode 100644 index 0000000000..f92d95454d --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TitledMediaFile.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.files + +sealed interface TitledMediaFile { + val title: String? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt index bce88fc7b9..16cb60da04 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt @@ -2,10 +2,9 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.InputMedia.InputMediaVideo -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.ParseMode -import dev.inmo.tgbotapi.types.files.abstracts.* +import dev.inmo.tgbotapi.types.media.TelegramMediaVideo +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.utils.MimeType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -33,10 +32,10 @@ data class VideoFile( ) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile @Suppress("NOTHING_TO_INLINE") -inline fun VideoFile.toInputMediaVideo( +inline fun VideoFile.toTelegramMediaVideo( text: String? = null, parseMode: ParseMode? = null -) = InputMediaVideo( +) = TelegramMediaVideo( fileId, text, parseMode, @@ -47,9 +46,9 @@ inline fun VideoFile.toInputMediaVideo( ) @Suppress("NOTHING_TO_INLINE") -inline fun VideoFile.toInputMediaVideo( +inline fun VideoFile.toTelegramMediaVideo( textSources: TextSourcesList -) = InputMediaVideo( +) = TelegramMediaVideo( fileId, textSources, width, @@ -57,3 +56,16 @@ inline fun VideoFile.toInputMediaVideo( duration, thumb ?.fileId ) + +@Suppress("NOTHING_TO_INLINE") +@Deprecated("Renamed", ReplaceWith("toTelegramMediaVideo", "dev.inmo.tgbotapi.types.files.toTelegramMediaVideo")) +inline fun VideoFile.toInputMediaVideo( + text: String? = null, + parseMode: ParseMode? = null +) = toTelegramMediaVideo(text, parseMode) + +@Suppress("NOTHING_TO_INLINE") +@Deprecated("Renamed", ReplaceWith("toTelegramMediaVideo", "dev.inmo.tgbotapi.types.files.toTelegramMediaVideo")) +inline fun VideoFile.toInputMediaVideo( + textSources: TextSourcesList +) = toTelegramMediaVideo(textSources) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoNoteFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoNoteFile.kt index 528934392a..04b65e14fa 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoNoteFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoNoteFile.kt @@ -1,9 +1,8 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.FileUniqueId -import dev.inmo.tgbotapi.types.fileUniqueIdField -import dev.inmo.tgbotapi.types.files.abstracts.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VoiceFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VoiceFile.kt index 41be71b854..f3a88b1e66 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VoiceFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VoiceFile.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.files import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.files.abstracts.* +import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.utils.MimeType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/CustomNamedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/CustomNamedMediaFile.kt deleted file mode 100644 index e81488bb43..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/CustomNamedMediaFile.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.files.abstracts - -internal const val fileNameField = "file_name" - -interface CustomNamedMediaFile { - val fileName: String? -} \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/MimedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/MimedMediaFile.kt deleted file mode 100644 index 72eaab3c7a..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/MimedMediaFile.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.files.abstracts - -import dev.inmo.tgbotapi.CommonAbstracts.MimeTyped - -internal const val mimeTypeField = "mime_type" - -interface MimedMediaFile : TelegramMediaFile, MimeTyped \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/OldTypealiases.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/OldTypealiases.kt new file mode 100644 index 0000000000..3b5864dfec --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/OldTypealiases.kt @@ -0,0 +1,22 @@ +package dev.inmo.tgbotapi.types.files.abstracts + +@Deprecated("Renamed", ReplaceWith("CustomNamedMediaFile", "dev.inmo.tgbotapi.types.files.CustomNamedMediaFile")) +typealias CustomNamedMediaFile = dev.inmo.tgbotapi.types.files.CustomNamedMediaFile + +@Deprecated("Replaced", ReplaceWith("MimedMediaFile", "dev.inmo.tgbotapi.types.files.MimedMediaFile")) +typealias MimedMediaFile = dev.inmo.tgbotapi.types.files.MimedMediaFile + +@Deprecated("Replaced", ReplaceWith("PlayableMediaFile", "dev.inmo.tgbotapi.types.files.PlayableMediaFile")) +typealias PlayableMediaFile = dev.inmo.tgbotapi.types.files.PlayableMediaFile + +@Deprecated("Replaced", ReplaceWith("SizedMediaFile", "dev.inmo.tgbotapi.types.files.SizedMediaFile")) +typealias SizedMediaFile = dev.inmo.tgbotapi.types.files.SizedMediaFile + +@Deprecated("Replaced", ReplaceWith("TelegramMediaFile", "dev.inmo.tgbotapi.types.files.TelegramMediaFile")) +typealias TelegramMediaFile = dev.inmo.tgbotapi.types.files.TelegramMediaFile + +@Deprecated("Replaced", ReplaceWith("ThumbedMediaFile", "dev.inmo.tgbotapi.types.files.ThumbedMediaFile")) +typealias ThumbedMediaFile = dev.inmo.tgbotapi.types.files.ThumbedMediaFile + +@Deprecated("Replaced", ReplaceWith("TitledMediaFile", "dev.inmo.tgbotapi.types.files.TitledMediaFile")) +typealias TitledMediaFile = dev.inmo.tgbotapi.types.files.TitledMediaFile diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/PlayableMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/PlayableMediaFile.kt deleted file mode 100644 index 3211617a56..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/PlayableMediaFile.kt +++ /dev/null @@ -1,5 +0,0 @@ -package dev.inmo.tgbotapi.types.files.abstracts - -interface PlayableMediaFile : TelegramMediaFile { - val duration: Long? -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/SizedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/SizedMediaFile.kt deleted file mode 100644 index 6aefe5b969..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/SizedMediaFile.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.inmo.tgbotapi.types.files.abstracts - -interface SizedMediaFile : TelegramMediaFile { - val width: Int - val height: Int -} \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/ThumbedMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/ThumbedMediaFile.kt deleted file mode 100644 index 95859cdd60..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/ThumbedMediaFile.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.files.abstracts - -import dev.inmo.tgbotapi.types.files.PhotoSize - -interface ThumbedMediaFile : TelegramMediaFile { - val thumb: PhotoSize? -} \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/TitledMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/TitledMediaFile.kt deleted file mode 100644 index cda38a0e84..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/abstracts/TitledMediaFile.kt +++ /dev/null @@ -1,5 +0,0 @@ -package dev.inmo.tgbotapi.types.files.abstracts - -interface TitledMediaFile { - val title: String? -} \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/sticker/Sticker.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/sticker/Sticker.kt index 76482afecf..c0da51eba1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/sticker/Sticker.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/sticker/Sticker.kt @@ -1,158 +1,19 @@ package dev.inmo.tgbotapi.types.files.sticker -import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.files.PhotoSize -import dev.inmo.tgbotapi.types.files.abstracts.* -import dev.inmo.tgbotapi.types.stickers.MaskPosition -import dev.inmo.tgbotapi.utils.RiskFeature -import kotlinx.serialization.* -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder +@Deprecated("Replaced", ReplaceWith("StickerSurrogate", "dev.inmo.tgbotapi.types.files.StickerSurrogate")) +typealias StickerSurrogate = dev.inmo.tgbotapi.types.files.StickerSurrogate -@Serializable -@RiskFeature("This class is used for serialization/deserialization of Sticker interface") -data class StickerSurrogate( - val file_id: FileId, - val file_unique_id: FileUniqueId, - val width: Int, - val height: Int, - val is_animated: Boolean? = null, - val is_video: Boolean? = null, - val thumb: PhotoSize? = null, - val emoji: String? = null, - val set_name: StickerSetName? = null, - val mask_position: MaskPosition? = null, - val file_size: Long? = null -) +@Deprecated("Replaced", ReplaceWith("Sticker", "dev.inmo.tgbotapi.types.files.Sticker")) +typealias Sticker = dev.inmo.tgbotapi.types.files.Sticker -// TODO:: Serializer -@Serializable(StickerSerializer::class) -sealed interface Sticker : TelegramMediaFile, SizedMediaFile, ThumbedMediaFile { - val emoji: String? - val maskPosition: MaskPosition? - val stickerSetName: StickerSetName? +@Deprecated("Replaced", ReplaceWith("StickerSerializer", "dev.inmo.tgbotapi.types.files.StickerSerializer")) +typealias StickerSerializer = dev.inmo.tgbotapi.types.files.StickerSerializer - val isAnimated - get() = this is AnimatedSticker - val isVideo - get() = this is VideoSticker +@Deprecated("Replaced", ReplaceWith("SimpleSticker", "dev.inmo.tgbotapi.types.files.SimpleSticker")) +typealias SimpleSticker = dev.inmo.tgbotapi.types.files.SimpleSticker - companion object { - fun serializer(): KSerializer = StickerSerializer - } -} +@Deprecated("Replaced", ReplaceWith("AnimatedSticker", "dev.inmo.tgbotapi.types.files.AnimatedSticker")) +typealias AnimatedSticker = dev.inmo.tgbotapi.types.files.AnimatedSticker -object StickerSerializer : KSerializer { - override val descriptor: SerialDescriptor = StickerSurrogate.serializer().descriptor - - override fun deserialize(decoder: Decoder): Sticker { - val surrogate = StickerSurrogate.serializer().deserialize(decoder) - - return when { - surrogate.is_animated == true -> AnimatedSticker( - surrogate.file_id, - surrogate.file_unique_id, - surrogate.width, - surrogate.height, - surrogate.thumb, - surrogate.emoji, - surrogate.set_name, - surrogate.mask_position, - surrogate.file_size - ) - surrogate.is_video == true -> VideoSticker( - surrogate.file_id, - surrogate.file_unique_id, - surrogate.width, - surrogate.height, - surrogate.thumb, - surrogate.emoji, - surrogate.set_name, - surrogate.mask_position, - surrogate.file_size - ) - else -> SimpleSticker( - surrogate.file_id, - surrogate.file_unique_id, - surrogate.width, - surrogate.height, - surrogate.thumb, - surrogate.emoji, - surrogate.set_name, - surrogate.mask_position, - surrogate.file_size - ) - } - } - - override fun serialize(encoder: Encoder, value: Sticker) { - TODO("Not yet implemented") - } - -} - -@Serializable -data class SimpleSticker( - @SerialName(fileIdField) - override val fileId: FileId, - @SerialName(fileUniqueIdField) - override val fileUniqueId: FileUniqueId, - @SerialName(widthField) - override val width: Int, - @SerialName(heightField) - override val height: Int, - @SerialName(thumbField) - override val thumb: PhotoSize? = null, - @SerialName(emojiField) - override val emoji: String? = null, - @SerialName(stickerSetNameField) - override val stickerSetName: StickerSetName? = null, - @SerialName(maskPositionField) - override val maskPosition: MaskPosition? = null, - @SerialName(fileSizeField) - override val fileSize: Long? = null, -) : Sticker -@Serializable -data class AnimatedSticker( - @SerialName(fileIdField) - override val fileId: FileId, - @SerialName(fileUniqueIdField) - override val fileUniqueId: FileUniqueId, - @SerialName(widthField) - override val width: Int, - @SerialName(heightField) - override val height: Int, - @SerialName(thumbField) - override val thumb: PhotoSize? = null, - @SerialName(emojiField) - override val emoji: String? = null, - @SerialName(stickerSetNameField) - override val stickerSetName: StickerSetName? = null, - @SerialName(maskPositionField) - override val maskPosition: MaskPosition? = null, - @SerialName(fileSizeField) - override val fileSize: Long? = null, -) : Sticker -@Serializable -data class VideoSticker( - @SerialName(fileIdField) - override val fileId: FileId, - @SerialName(fileUniqueIdField) - override val fileUniqueId: FileUniqueId, - @SerialName(widthField) - override val width: Int, - @SerialName(heightField) - override val height: Int, - @SerialName(thumbField) - override val thumb: PhotoSize? = null, - @SerialName(emojiField) - override val emoji: String? = null, - @SerialName(stickerSetNameField) - override val stickerSetName: StickerSetName? = null, - @SerialName(maskPositionField) - override val maskPosition: MaskPosition? = null, - @SerialName(fileSizeField) - override val fileSize: Long? = null, -) : Sticker +@Deprecated("Replaced", ReplaceWith("VideoSticker", "dev.inmo.tgbotapi.types.files.VideoSticker")) +typealias VideoSticker = dev.inmo.tgbotapi.types.files.VideoSticker diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/Game.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/Game.kt index 66100ae8ae..bf908d161f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/Game.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/Game.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.types.games -import dev.inmo.tgbotapi.CommonAbstracts.TextedInput -import dev.inmo.tgbotapi.CommonAbstracts.Titled -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.abstracts.TextedInput +import dev.inmo.tgbotapi.abstracts.Titled +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.files.AnimationFile import dev.inmo.tgbotapi.types.files.Photo import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/GameHighScore.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/GameHighScore.kt index 0d05b81f0e..5e9d1002a2 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/GameHighScore.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/GameHighScore.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.games import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,4 +13,4 @@ data class GameHighScore ( val user: User, @SerialName(scoreField) val score: Long -) \ No newline at end of file +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/RawGame.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/RawGame.kt index db398702e3..1c676c8aec 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/RawGame.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/games/RawGame.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.types.games import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.RawMessageEntities -import dev.inmo.tgbotapi.types.MessageEntity.asTextSources +import dev.inmo.tgbotapi.types.message.RawMessageEntities +import dev.inmo.tgbotapi.types.message.asTextSources import dev.inmo.tgbotapi.types.files.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/location/Location.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/location/Location.kt index cefedd5189..28f09c744b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/location/Location.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/location/Location.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.location -import dev.inmo.tgbotapi.CommonAbstracts.* +import dev.inmo.tgbotapi.abstracts.* import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.utils.nonstrictJsonFormat import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/DuratedTelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/DuratedTelegramMedia.kt new file mode 100644 index 0000000000..5cfcc2b1ba --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/DuratedTelegramMedia.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.media + +sealed interface DuratedTelegramMedia : TelegramMedia { + val duration: Long? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMedia.kt new file mode 100644 index 0000000000..782f9b0799 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMedia.kt @@ -0,0 +1,23 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.abstracts.TextedOutput +import kotlinx.serialization.Serializable +import kotlinx.serialization.StringFormat +import kotlinx.serialization.json.Json + +internal val argumentsFormatter by lazy { + Json { + encodeDefaults = true + } +} + +@Serializable(MediaGroupMemberTelegramMediaSerializer::class) +sealed interface MediaGroupMemberTelegramMedia : TelegramMedia, TextedOutput { + fun serialize(format: StringFormat): String +} + +sealed interface AudioMediaGroupMemberTelegramMedia: MediaGroupMemberTelegramMedia +sealed interface DocumentMediaGroupMemberTelegramMedia: MediaGroupMemberTelegramMedia + +@Serializable(MediaGroupMemberTelegramMediaSerializer::class) +sealed interface VisualMediaGroupMemberTelegramMedia : MediaGroupMemberTelegramMedia diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMediaSerializer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMediaSerializer.kt new file mode 100644 index 0000000000..19c9124d52 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMediaSerializer.kt @@ -0,0 +1,37 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.types.typeField +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.nonstrictJsonFormat +import kotlinx.serialization.InternalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.* + +@RiskFeature +object MediaGroupMemberTelegramMediaSerializer : KSerializer { + @OptIn(InternalSerializationApi::class) + override val descriptor: SerialDescriptor = buildSerialDescriptor(MediaGroupMemberTelegramMedia::class.toString(), PolymorphicKind.OPEN) + override fun serialize(encoder: Encoder, value: MediaGroupMemberTelegramMedia) { + when (value) { + is TelegramMediaPhoto -> TelegramMediaPhoto.serializer().serialize(encoder, value) + is TelegramMediaVideo -> TelegramMediaVideo.serializer().serialize(encoder, value) + is TelegramMediaAudio -> TelegramMediaAudio.serializer().serialize(encoder, value) + is TelegramMediaDocument -> TelegramMediaDocument.serializer().serialize(encoder, value) + } + } + + override fun deserialize(decoder: Decoder): MediaGroupMemberTelegramMedia { + val json = JsonObject.serializer().deserialize(decoder) + + return when (json[typeField] ?.jsonPrimitive ?.contentOrNull) { + photoTelegramMediaType -> nonstrictJsonFormat.decodeFromJsonElement(TelegramMediaPhoto.serializer(), json) + videoTelegramMediaType -> nonstrictJsonFormat.decodeFromJsonElement(TelegramMediaVideo.serializer(), json) + audioTelegramMediaType -> nonstrictJsonFormat.decodeFromJsonElement(TelegramMediaAudio.serializer(), json) + documentTelegramMediaType -> nonstrictJsonFormat.decodeFromJsonElement(TelegramMediaDocument.serializer(), json) + else -> error("Illegal type of incoming MediaGroupMemberTelegramMedia") + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/SizedTelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/SizedTelegramMedia.kt new file mode 100644 index 0000000000..f079212f23 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/SizedTelegramMedia.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.media + +sealed interface SizedTelegramMedia : TelegramMedia { + val width: Int? + val height: Int? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMedia.kt similarity index 58% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMedia.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMedia.kt index 5013f33f9c..2ae7932ede 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InputMedia/InputMedia.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMedia.kt @@ -1,10 +1,10 @@ -package dev.inmo.tgbotapi.types.InputMedia +package dev.inmo.tgbotapi.types.media import dev.inmo.tgbotapi.requests.abstracts.InputFile import kotlinx.serialization.Serializable -@Serializable(InputMediaSerializer::class) -sealed interface InputMedia { +@Serializable(TelegramMediaSerializer::class) +sealed interface TelegramMedia { val type: String val file: InputFile val media: String diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAnimation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAnimation.kt new file mode 100644 index 0000000000..557f8f7107 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAnimation.kt @@ -0,0 +1,67 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.abstracts.TextedOutput +import dev.inmo.tgbotapi.requests.abstracts.InputFile +import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.utils.extensions.makeString +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +fun TelegramMediaAnimation( + file: InputFile, + text: String? = null, + parseMode: ParseMode? = null, + width: Int? = null, + height: Int? = null, + duration: Long? = null, + thumb: InputFile? = null +) = TelegramMediaAnimation(file, text, parseMode, null, width, height, duration, thumb) + +fun TelegramMediaAnimation( + file: InputFile, + entities: TextSourcesList, + width: Int? = null, + height: Int? = null, + duration: Long? = null, + thumb: InputFile? = null +) = TelegramMediaAnimation( + file, + entities.makeString(), + null, + entities.toRawMessageEntities(), + width, + height, + duration, + thumb +) + +@Serializable +data class TelegramMediaAnimation internal constructor( + override val file: InputFile, + @SerialName(captionField) + override val text: String? = null, + @SerialName(parseModeField) + override val parseMode: ParseMode? = null, + @SerialName(captionEntitiesField) + private val rawEntities: List? = null, + override val width: Int? = null, + override val height: Int? = null, + override val duration: Long? = null, + override val thumb: InputFile? = null +) : TelegramMedia, SizedTelegramMedia, DuratedTelegramMedia, ThumbedTelegramMedia, TextedOutput { + override val type: String = "animation" + override val textSources: TextSourcesList? by lazy { + rawEntities ?.asTextSources(text ?: return@lazy null) + } + + @SerialName(mediaField) + override val media: String + init { media = file.fileIdToSend } // crutch until js compiling will be fixed +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAudio.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAudio.kt new file mode 100644 index 0000000000..bb9efe8f07 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAudio.kt @@ -0,0 +1,93 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.abstracts.Performerable +import dev.inmo.tgbotapi.requests.abstracts.InputFile +import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField +import dev.inmo.tgbotapi.types.files.AudioFile +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.utils.extensions.makeString +import kotlinx.serialization.* + +internal const val audioTelegramMediaType = "audio" + +fun TelegramMediaAudio( + file: InputFile, + entities: TextSourcesList, + duration: Long? = null, + performer: String? = null, + title: String? = null, + thumb: InputFile? = null +) = TelegramMediaAudio( + file, entities.makeString(), null, entities.toRawMessageEntities(), duration, performer, title, thumb +) + +fun TelegramMediaAudio( + file: InputFile, + text: String? = null, + parseMode: ParseMode? = null, + duration: Long? = null, + performer: String? = null, + title: String? = null, + thumb: InputFile? = null +) = TelegramMediaAudio( + file, text, parseMode, null, duration, performer, title, thumb +) + +@Serializable +data class TelegramMediaAudio internal constructor( + override val file: InputFile, + @SerialName(captionField) + override val text: String? = null, + @SerialName(parseModeField) + override val parseMode: ParseMode? = null, + @SerialName(captionEntitiesField) + private val rawEntities: List? = null, + override val duration: Long? = null, + override val performer: String? = null, + override val title: String? = null, + override val thumb: InputFile? = null +) : TelegramMedia, AudioMediaGroupMemberTelegramMedia, DuratedTelegramMedia, ThumbedTelegramMedia, TitledTelegramMedia, + Performerable { + override val type: String = audioTelegramMediaType + override val textSources: TextSourcesList? by lazy { + rawEntities ?.asTextSources(text ?: return@lazy null) + } + + override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) + + @SerialName(mediaField) + override val media: String + init { media = file.fileIdToSend } // crutch until js compiling will be fixed +} + +fun AudioFile.toTelegramMediaAudio( + text: String? = null, + parseMode: ParseMode? = null, + title: String? = this.title +): TelegramMediaAudio = TelegramMediaAudio( + fileId, + text, + parseMode, + duration, + performer, + title, + thumb ?.fileId +) + +fun AudioFile.toTelegramMediaAudio( + textSources: TextSourcesList = emptyList(), + title: String? = this.title +): TelegramMediaAudio = TelegramMediaAudio( + fileId, + textSources, + duration, + performer, + title, + thumb ?.fileId +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaDocument.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaDocument.kt new file mode 100644 index 0000000000..8f4e4d8df1 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaDocument.kt @@ -0,0 +1,90 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.requests.abstracts.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField +import dev.inmo.tgbotapi.types.files.DocumentFile +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.utils.extensions.makeString +import kotlinx.serialization.* + +internal const val documentTelegramMediaType = "document" + +fun TelegramMediaDocument( + file: InputFile, + text: String? = null, + parseMode: ParseMode? = null, + thumb: InputFile? = null, + disableContentTypeDetection: Boolean? = null +) = TelegramMediaDocument(file, text, parseMode, null, thumb, disableContentTypeDetection) + +fun TelegramMediaDocument( + file: InputFile, + entities: TextSourcesList, + thumb: InputFile? = null, + disableContentTypeDetection: Boolean? = null +) = TelegramMediaDocument( + file, + entities.makeString(), + null, + entities.toRawMessageEntities(), + thumb, + disableContentTypeDetection +) + +/** + * Represents a general file to be sent. See https://core.telegram.org/bots/api#inputmediadocument + * + * @param disableContentTypeDetection Disables automatic server-side content type detection for files uploaded using + * multipart/form-data. Always used by Telegram system as true, if the document is sent as part of an album. + * + * @see InputFile + * @see MultipartFile + * @see FileId + */ +@Serializable +data class TelegramMediaDocument internal constructor( + override val file: InputFile, + @SerialName(captionField) + override val text: String? = null, + @SerialName(parseModeField) + override val parseMode: ParseMode? = null, + @SerialName(captionEntitiesField) + private val rawEntities: List? = null, + override val thumb: InputFile? = null, + @SerialName(disableContentTypeDetectionField) + val disableContentTypeDetection: Boolean? = null +) : TelegramMedia, DocumentMediaGroupMemberTelegramMedia, ThumbedTelegramMedia { + override val type: String = documentTelegramMediaType + override val textSources: TextSourcesList? by lazy { + rawEntities ?.asTextSources(text ?: return@lazy null) + } + + override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) + + @SerialName(mediaField) + override val media: String + init { media = file.fileIdToSend } // crutch until js compiling will be fixed +} + +fun DocumentFile.toTelegramMediaDocument( + text: String? = null, + parseMode: ParseMode? = null +) = TelegramMediaDocument( + fileId, + text, + parseMode, + thumb ?.fileId +) + +fun DocumentFile.toTelegramMediaDocument( + textSources: TextSourcesList = emptyList() +) = TelegramMediaDocument( + fileId, + textSources, + thumb ?.fileId +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaPhoto.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaPhoto.kt new file mode 100644 index 0000000000..b66a07c987 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaPhoto.kt @@ -0,0 +1,65 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.requests.abstracts.InputFile +import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField +import dev.inmo.tgbotapi.types.files.PhotoSize +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.utils.extensions.makeString +import kotlinx.serialization.* + +internal const val photoTelegramMediaType = "photo" + +fun TelegramMediaPhoto( + file: InputFile, + text: String? = null, + parseMode: ParseMode? = null +) = TelegramMediaPhoto(file, text, parseMode, null) + +fun TelegramMediaPhoto( + file: InputFile, + entities: TextSourcesList +) = TelegramMediaPhoto(file, entities.makeString(), null, entities.toRawMessageEntities()) + +@Serializable +data class TelegramMediaPhoto internal constructor( + override val file: InputFile, + @SerialName(captionField) + override val text: String? = null, + @SerialName(parseModeField) + override val parseMode: ParseMode? = null, + @SerialName(captionEntitiesField) + private val rawEntities: List? = null +) : TelegramMedia, VisualMediaGroupMemberTelegramMedia { + override val type: String = photoTelegramMediaType + override val textSources: TextSourcesList? by lazy { + rawEntities ?.asTextSources(text ?: return@lazy null) + } + + override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) + + @SerialName(mediaField) + override val media: String + init { media = file.fileIdToSend } // crutch until js compiling will be fixed +} + +fun PhotoSize.toTelegramMediaPhoto( + text: String? = null, + parseMode: ParseMode? = null +): TelegramMediaPhoto = TelegramMediaPhoto( + fileId, + text, + parseMode +) + +fun PhotoSize.toTelegramMediaPhoto( + textSources: TextSourcesList = emptyList() +): TelegramMediaPhoto = TelegramMediaPhoto( + fileId, + textSources +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaSerializer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaSerializer.kt new file mode 100644 index 0000000000..989f5bbb9a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaSerializer.kt @@ -0,0 +1,27 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.utils.RiskFeature +import kotlinx.serialization.InternalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +@RiskFeature +object TelegramMediaSerializer : KSerializer { + @OptIn(InternalSerializationApi::class) + override val descriptor: SerialDescriptor = buildSerialDescriptor(TelegramMedia::class.toString(), PolymorphicKind.OPEN) + override fun serialize(encoder: Encoder, value: TelegramMedia) { + when (value) { + is TelegramMediaVideo -> TelegramMediaVideo.serializer().serialize(encoder, value) + is TelegramMediaAudio -> TelegramMediaAudio.serializer().serialize(encoder, value) + is TelegramMediaPhoto -> TelegramMediaPhoto.serializer().serialize(encoder, value) + is TelegramMediaAnimation -> TelegramMediaAnimation.serializer().serialize(encoder, value) + is TelegramMediaDocument -> TelegramMediaDocument.serializer().serialize(encoder, value) + } + } + + override fun deserialize(decoder: Decoder): TelegramMedia { + throw IllegalStateException("Object can't be deserialized") + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaVideo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaVideo.kt new file mode 100644 index 0000000000..c5cb541938 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaVideo.kt @@ -0,0 +1,60 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.requests.abstracts.InputFile +import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.ParseMode +import dev.inmo.tgbotapi.types.message.parseModeField +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.toRawMessageEntities +import dev.inmo.tgbotapi.utils.extensions.makeString +import kotlinx.serialization.* + +internal const val videoTelegramMediaType = "video" + +fun TelegramMediaVideo( + file: InputFile, + text: String? = null, + parseMode: ParseMode? = null, + width: Int? = null, + height: Int? = null, + duration: Long? = null, + thumb: InputFile? = null +) = TelegramMediaVideo(file, text, parseMode, null, width, height, duration, thumb) + +fun TelegramMediaVideo( + file: InputFile, + entities: TextSourcesList, + width: Int? = null, + height: Int? = null, + duration: Long? = null, + thumb: InputFile? = null +) = TelegramMediaVideo(file, entities.makeString(), null, entities.toRawMessageEntities(), width, height, duration, thumb) + +@Serializable +data class TelegramMediaVideo internal constructor ( + override val file: InputFile, + @SerialName(captionField) + override val text: String? = null, + @SerialName(parseModeField) + override val parseMode: ParseMode? = null, + @SerialName(captionEntitiesField) + private val rawEntities: List? = null, + override val width: Int? = null, + override val height: Int? = null, + override val duration: Long? = null, + override val thumb: InputFile? = null +) : TelegramMedia, SizedTelegramMedia, DuratedTelegramMedia, ThumbedTelegramMedia, VisualMediaGroupMemberTelegramMedia { + override val type: String = videoTelegramMediaType + override val textSources: TextSourcesList? by lazy { + rawEntities ?.asTextSources(text ?: return@lazy null) + } + + override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) + + @SerialName(mediaField) + override val media: String + init { media = file.fileIdToSend } // crutch until js compiling will be fixed +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/ThumbedTelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/ThumbedTelegramMedia.kt new file mode 100644 index 0000000000..eac1120206 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/ThumbedTelegramMedia.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.requests.abstracts.InputFile + +sealed interface ThumbedTelegramMedia : TelegramMedia { + val thumb: InputFile? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TitledTelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TitledTelegramMedia.kt new file mode 100644 index 0000000000..94fb737daf --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TitledTelegramMedia.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.media + +sealed interface TitledTelegramMedia : TelegramMedia { + val title: String? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt index 5156037aad..4d4b8ad287 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt @@ -3,9 +3,10 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat +import dev.inmo.tgbotapi.types.chat.ChannelChat +import dev.inmo.tgbotapi.types.chat.CommonBot import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent data class ChannelContentMessageImpl( override val messageId: MessageIdentifier, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelEventMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelEventMessage.kt index 65bcc348cc..38b9c1e0b4 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelEventMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelEventMessage.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat +import dev.inmo.tgbotapi.types.chat.ChannelChat import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMediaGroupMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMediaGroupMessage.kt index 745c42ff34..e47b55a722 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMediaGroupMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMediaGroupMessage.kt @@ -4,10 +4,10 @@ import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.MediaGroupIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage import dev.inmo.tgbotapi.types.message.abstracts.Message -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent data class ChannelMediaGroupMessage( override val messageId: MessageIdentifier, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/LeftChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/LeftChatMember.kt index 925cfb35bb..ba73e100ae 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/LeftChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/LeftChatMember.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.message.ChatEvents -import dev.inmo.tgbotapi.CommonAbstracts.WithUser -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.abstracts.WithUser +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PublicChatEvent data class LeftChatMember( diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/NewChatMembers.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/NewChatMembers.kt index 0c307bfd23..ce503c6d17 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/NewChatMembers.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/NewChatMembers.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.message.ChatEvents -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/ProximityAlertTriggered.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/ProximityAlertTriggered.kt index 326385a38a..3f7a8c5caa 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/ProximityAlertTriggered.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/ProximityAlertTriggered.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.message.ChatEvents import dev.inmo.tgbotapi.types.Meters -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PublicChatEvent import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VideoChatParticipantsInvited.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VideoChatParticipantsInvited.kt index aa856c9f5e..3c1a1d2e89 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VideoChatParticipantsInvited.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VideoChatParticipantsInvited.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.message.ChatEvents.voice -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VideoChatEvent import dev.inmo.tgbotapi.types.usersField import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonGroupEventMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonGroupEventMessage.kt index 2e9b602668..cc88cdbd32 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonGroupEventMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonGroupEventMessage.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.chat.abstracts.GroupChat +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.chat.GroupChat import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent import dev.inmo.tgbotapi.types.message.abstracts.GroupEventMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonMediaGroupMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonMediaGroupMessage.kt index 0bc79cce09..06a11f9f67 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonMediaGroupMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonMediaGroupMessage.kt @@ -3,9 +3,10 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent data class CommonMediaGroupMessage( override val messageId: MessageIdentifier, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonSupergroupEventMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonSupergroupEventMessage.kt index 124fe0cac6..ec8183c225 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonSupergroupEventMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/CommonSupergroupEventMessage.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.chat.abstracts.SupergroupChat +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.chat.SupergroupChat import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent import dev.inmo.tgbotapi.types.message.abstracts.SupergroupEventMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt index 8613ff4e43..225bd1e3c1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt @@ -1,8 +1,9 @@ package dev.inmo.tgbotapi.types.message -import dev.inmo.tgbotapi.CommonAbstracts.FromUser +import dev.inmo.tgbotapi.abstracts.FromUser import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.* +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.User sealed class ForwardInfo { abstract val dateOfOriginal: TelegramDate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt index a558cef304..d819f53a2a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt @@ -3,10 +3,11 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat -import dev.inmo.tgbotapi.types.chat.abstracts.GroupChat +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.CommonBot +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent data class ConnectedFromChannelGroupContentMessageImpl( override val chat: GroupChat, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ParseMode.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ParseMode.kt new file mode 100644 index 0000000000..ba94337d51 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ParseMode.kt @@ -0,0 +1,64 @@ +package dev.inmo.tgbotapi.types.message + +import dev.inmo.tgbotapi.utils.RiskFeature +import kotlinx.serialization.* +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +internal const val parseModeField = "parse_mode" + +@Serializable(ParseModeSerializer::class) +sealed interface ParseMode { + val parseModeName: String +} + +@Serializable(ParseModeSerializer::class) +object MarkdownParseMode : ParseMode { + @Serializable + @SerialName(parseModeField) + override val parseModeName: String = "Markdown" +} + +@Serializable(ParseModeSerializer::class) +object MarkdownV2ParseMode : ParseMode { + @Serializable + @SerialName(parseModeField) + override val parseModeName: String = "MarkdownV2" +} +@Serializable(ParseModeSerializer::class) +object HTMLParseMode : ParseMode { + @Serializable + @SerialName(parseModeField) + override val parseModeName: String = "HTML" +} + +typealias Markdown = MarkdownParseMode +typealias MarkdownV2 = MarkdownV2ParseMode +typealias HTML = HTMLParseMode + +/** + * This variable respects to default parse mode used in places like next: + * + * * [dev.inmo.tgbotapi.types.message.content.TextContent.createResends] + * * + */ +var defaultParseMode: ParseMode = HTML + +@RiskFeature +object ParseModeSerializer : KSerializer { + override val descriptor: SerialDescriptor = String.serializer().descriptor + override fun deserialize(decoder: Decoder): ParseMode { + return when (decoder.decodeString()) { + MarkdownParseMode.parseModeName -> Markdown + MarkdownV2ParseMode.parseModeName -> MarkdownV2 + HTMLParseMode.parseModeName -> HTML + else -> throw IllegalArgumentException("Unknown parse mode") + } + } + + override fun serialize(encoder: Encoder, value: ParseMode) { + encoder.encodeString(value.parseModeName) + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PassportMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PassportMessage.kt index b249d704e2..d9413f3e5d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PassportMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PassportMessage.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.abstracts.FromUserMessage import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.passport.PassportData diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt index c53a8d2857..bedcbb32ab 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt @@ -3,10 +3,12 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.CommonBot +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent data class PrivateContentMessageImpl( override val messageId: MessageIdentifier, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateEventMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateEventMessage.kt index 86a9a51845..46e30d2b93 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateEventMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateEventMessage.kt @@ -2,8 +2,7 @@ package dev.inmo.tgbotapi.types.message import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat -import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat +import dev.inmo.tgbotapi.types.chat.PrivateChat import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PrivateEvent import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt index 2ad44c8845..1262958af1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt @@ -1,13 +1,13 @@ package dev.inmo.tgbotapi.types.message import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.RawMessageEntities -import dev.inmo.tgbotapi.types.MessageEntity.asTextSources import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.* +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.CommonBot +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.dice.Dice import dev.inmo.tgbotapi.types.files.* -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker import dev.inmo.tgbotapi.types.games.RawGame import dev.inmo.tgbotapi.types.location.Location import dev.inmo.tgbotapi.types.message.ChatEvents.* @@ -15,8 +15,8 @@ import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.media.* +import dev.inmo.tgbotapi.types.message.content.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.MessageContent import dev.inmo.tgbotapi.types.message.payments.* import dev.inmo.tgbotapi.types.passport.PassportData import dev.inmo.tgbotapi.types.payments.Invoice diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/RawMessageEntity.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessageEntity.kt similarity index 96% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/RawMessageEntity.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessageEntity.kt index 6a35f4dcd5..32386318c3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/MessageEntity/RawMessageEntity.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessageEntity.kt @@ -1,7 +1,7 @@ -package dev.inmo.tgbotapi.types.MessageEntity +package dev.inmo.tgbotapi.types.message -import dev.inmo.tgbotapi.types.MessageEntity.textsources.* -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.message.textsources.* import kotlinx.serialization.Serializable @Serializable @@ -177,12 +177,6 @@ internal fun TextSourcesList.toRawMessageEntities(preOffset: Int = 0): List = toRawMessageEntities(0) internal fun RawMessageEntities.asTextSources(sourceString: String): TextSourcesList = diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt index a7ddbc6e66..985da07ae0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt @@ -1,8 +1,7 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommonMessage +import dev.inmo.tgbotapi.types.chat.ChannelChat +import dev.inmo.tgbotapi.types.message.content.MessageContent interface ChannelContentMessage : PossiblySentViaBotCommonMessage, SignedMessage, WithSenderChatMessage { override val chat: ChannelChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/CommonMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/CommonMessage.kt index 587ed60f42..bca2700613 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/CommonMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/CommonMessage.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent interface CommonMessage : Message, PossiblyForwardedMessage, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ContentMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ContentMessage.kt index b155bad5ec..7c4d04172b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ContentMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ContentMessage.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent interface ContentMessage: Message { val hasProtectedContent: Boolean diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/FromUserMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/FromUserMessage.kt index 50255f0cb4..234b125ccf 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/FromUserMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/FromUserMessage.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.FromUser +import dev.inmo.tgbotapi.abstracts.FromUser interface FromUserMessage : FromUser, Message diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt index 82a370c4fd..7ec7f0bc6c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat -import dev.inmo.tgbotapi.types.chat.abstracts.GroupChat -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.chat.ChannelChat +import dev.inmo.tgbotapi.types.chat.GroupChat +import dev.inmo.tgbotapi.types.message.content.MessageContent interface GroupContentMessage : PublicContentMessage { override val chat: GroupChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/MediaGroupMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/MediaGroupMessage.kt index f6d2dd2538..faac6c32eb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/MediaGroupMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/MediaGroupMessage.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.message.abstracts import dev.inmo.tgbotapi.types.MediaGroupIdentifier -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent interface MediaGroupMessage : CommonMessage { val mediaGroupId: MediaGroupIdentifier diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/Message.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/Message.kt index e9b10b0e95..012164c153 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/Message.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/Message.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.message.abstracts import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.RawMessage import kotlinx.serialization.* import kotlinx.serialization.descriptors.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyPaymentMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyPaymentMessage.kt index 04b8c97387..4989f3b7f1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyPaymentMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyPaymentMessage.kt @@ -4,4 +4,4 @@ import dev.inmo.tgbotapi.types.message.payments.abstracts.PaymentInfo interface PossiblyPaymentMessage : Message { val paymentInfo: PaymentInfo? -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblySentViaBot.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblySentViaBot.kt index 5cb4bf88e8..2903a70275 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblySentViaBot.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblySentViaBot.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.CommonBot +import dev.inmo.tgbotapi.types.chat.CommonBot interface PossiblySentViaBot { val senderBot: CommonBot? diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblySentViaBotCommonMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblySentViaBotCommonMessage.kt new file mode 100644 index 0000000000..155b0fdc17 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblySentViaBotCommonMessage.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.message.abstracts + +import dev.inmo.tgbotapi.types.message.content.MessageContent + +interface PossiblySentViaBotCommonMessage : CommonMessage, PossiblySentViaBot diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt index 767cef23ca..26c58cb8f7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt @@ -1,6 +1,5 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommonMessage +import dev.inmo.tgbotapi.types.message.content.MessageContent interface PrivateContentMessage : PossiblySentViaBotCommonMessage, FromUserMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt index d965cc2db9..18a4b904b6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt @@ -1,8 +1,7 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommonMessage +import dev.inmo.tgbotapi.types.chat.PublicChat +import dev.inmo.tgbotapi.types.message.content.MessageContent interface PublicContentMessage : PossiblySentViaBotCommonMessage { override val chat: PublicChat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/WithSenderChatMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/WithSenderChatMessage.kt index 55147cd92a..fd2934c636 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/WithSenderChatMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/WithSenderChatMessage.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.message.abstracts -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat interface WithSenderChatMessage { val senderChat: Chat -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/Abstracts.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/Abstracts.kt new file mode 100644 index 0000000000..51e2415eca --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/Abstracts.kt @@ -0,0 +1,122 @@ +package dev.inmo.tgbotapi.types.message.content + +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.MessageIdentifier +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.media.TelegramMedia +import dev.inmo.tgbotapi.types.message.abstracts.* +import dev.inmo.tgbotapi.utils.RiskFeature +import kotlinx.serialization.modules.* + +sealed interface MessageContent: ResendableContent { + companion object { + @RiskFeature("This serialization module can be changed in near releases") + fun serializationModule( + visualMediaGroupContentAdditionalBuilder: PolymorphicModuleBuilder.() -> Unit = {}, + documentMediaGroupContentAdditionalBuilder: PolymorphicModuleBuilder.() -> Unit = {}, + audioMediaGroupContentAdditionalBuilder: PolymorphicModuleBuilder.() -> Unit = {}, + mediaGroupContentAdditionalBuilder: PolymorphicModuleBuilder.() -> Unit = {}, + textedMediaContentAdditionalBuilder: PolymorphicModuleBuilder.() -> Unit = {}, + mediaContentAdditionalBuilder: PolymorphicModuleBuilder.() -> Unit = {}, + mediaCollectionContentAdditionalBuilder: PolymorphicModuleBuilder>.() -> Unit = {}, + additionalBuilder: PolymorphicModuleBuilder.() -> Unit = {} + ) = SerializersModule { + polymorphic(MessageContent::class) { + + subclass(ContactContent::class) + subclass(VenueContent::class) + subclass(PollContent::class) + subclass(DiceContent::class) + subclass(TextContent::class) + + subclass(LocationContent::class, LocationContentSerializer) + + subclass(PhotoContent::class) + subclass(VideoContent::class) + subclass(AudioContent::class) + subclass(DocumentContent::class) + + subclass(VoiceContent::class) + subclass(VideoNoteContent::class) + subclass(AnimationContent::class) + subclass(StickerContent::class) + subclass(InvoiceContent::class) + + additionalBuilder() + } + polymorphic(MediaCollectionContent::class) { + subclass(PhotoContent::class) + + mediaCollectionContentAdditionalBuilder() + } + polymorphic(MediaContent::class) { + subclass(VideoNoteContent::class) + subclass(VideoContent::class) + subclass(StickerContent::class) + subclass(PhotoContent::class) + subclass(VoiceContent::class) + subclass(AnimationContent::class) + subclass(AudioContent::class) + subclass(DocumentContent::class) + + mediaContentAdditionalBuilder() + } + polymorphic(TextedMediaContent::class) { + subclass(PhotoContent::class) + subclass(VoiceContent::class) + subclass(AnimationContent::class) + subclass(AudioContent::class) + subclass(DocumentContent::class) + + textedMediaContentAdditionalBuilder() + } + polymorphic(MediaGroupContent::class) { + subclass(PhotoContent::class) + subclass(AudioContent::class) + subclass(DocumentContent::class) + + mediaGroupContentAdditionalBuilder() + } + polymorphic(AudioMediaGroupContent::class) { + subclass(AudioContent::class) + + audioMediaGroupContentAdditionalBuilder() + } + polymorphic(DocumentMediaGroupContent::class) { + subclass(DocumentContent::class) + + documentMediaGroupContentAdditionalBuilder() + } + polymorphic(VisualMediaGroupContent::class) { + subclass(PhotoContent::class) + subclass(VideoContent::class) + + visualMediaGroupContentAdditionalBuilder() + } + } + } +} + +sealed interface MediaCollectionContent: MessageContent, MediaContent { + val mediaCollection: List +} + +sealed interface MediaContent: MessageContent { + val media: TelegramMediaFile + fun asTelegramMedia(): TelegramMedia + @Deprecated("Renamed", ReplaceWith("asTelegramMedia()")) + fun asInputMedia(): TelegramMedia = asTelegramMedia() +} + +sealed interface ResendableContent { + fun createResend( + chatId: ChatIdentifier, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null + ): Request +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AbstractsMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AbstractsMedia.kt new file mode 100644 index 0000000000..0d63566299 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AbstractsMedia.kt @@ -0,0 +1,30 @@ +package dev.inmo.tgbotapi.types.message.content + +import dev.inmo.tgbotapi.abstracts.TextedInput +import dev.inmo.tgbotapi.types.files.AudioFile +import dev.inmo.tgbotapi.types.files.DocumentFile +import dev.inmo.tgbotapi.types.media.* + +sealed interface AudioMediaGroupContent : MediaGroupContent { + override val media: AudioFile + + override fun toMediaGroupMemberTelegramMedia(): AudioMediaGroupMemberTelegramMedia +} + +sealed interface DocumentMediaGroupContent : MediaGroupContent { + override val media: DocumentFile + + override fun toMediaGroupMemberTelegramMedia(): DocumentMediaGroupMemberTelegramMedia +} + +sealed interface MediaGroupContent : TextedMediaContent { + fun toMediaGroupMemberTelegramMedia(): MediaGroupMemberTelegramMedia + @Deprecated("Renamed", ReplaceWith("toMediaGroupMemberTelegramMedia()")) + fun toMediaGroupMemberInputMedia(): MediaGroupMemberTelegramMedia = toMediaGroupMemberTelegramMedia() +} + +sealed interface TextedMediaContent : MediaContent, TextedInput + +sealed interface VisualMediaGroupContent : MediaGroupContent { + override fun toMediaGroupMemberTelegramMedia(): VisualMediaGroupMemberTelegramMedia +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AnimationContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AnimationContent.kt similarity index 79% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AnimationContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AnimationContent.kt index 1812450b8e..3ad0a1acfb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AnimationContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AnimationContent.kt @@ -1,17 +1,15 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content -import dev.inmo.tgbotapi.CommonAbstracts.TextedInput import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendAnimation import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaAnimation -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.media.TelegramMediaAnimation +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.files.AnimationFile import dev.inmo.tgbotapi.types.files.DocumentFile import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent import kotlinx.serialization.Serializable @Serializable @@ -43,7 +41,7 @@ data class AnimationContent( replyMarkup ) - override fun asInputMedia(): InputMediaAnimation = InputMediaAnimation( + override fun asTelegramMedia(): TelegramMediaAnimation = TelegramMediaAnimation( media.fileId, textSources, media.width, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AudioContent.kt similarity index 74% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AudioContent.kt index 67c3c138e7..c9563da27b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AudioContent.kt @@ -1,11 +1,11 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendAudio import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaAudio -import dev.inmo.tgbotapi.types.InputMedia.toInputMediaAudio -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.media.TelegramMediaAudio +import dev.inmo.tgbotapi.types.media.toTelegramMediaAudio +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.files.AudioFile @@ -40,7 +40,7 @@ data class AudioContent( replyMarkup ) - override fun toMediaGroupMemberInputMedia(): InputMediaAudio = asInputMedia() + override fun toMediaGroupMemberTelegramMedia(): TelegramMediaAudio = asTelegramMedia() - override fun asInputMedia(): InputMediaAudio = media.toInputMediaAudio(textSources) + override fun asTelegramMedia(): TelegramMediaAudio = media.toTelegramMediaAudio(textSources) } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ContactContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ContactContent.kt index e35c264e69..a417dc5a5a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ContactContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ContactContent.kt @@ -5,7 +5,6 @@ import dev.inmo.tgbotapi.requests.send.SendContact import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import kotlinx.serialization.Serializable @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/DiceContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/DiceContent.kt index ec7109c855..9c6eb7401d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/DiceContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/DiceContent.kt @@ -7,7 +7,6 @@ import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.dice.Dice import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import kotlinx.serialization.Serializable @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/DocumentContent.kt similarity index 73% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/DocumentContent.kt index 865d8b814f..bbf262736c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/DocumentContent.kt @@ -1,18 +1,17 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content -import dev.inmo.tgbotapi.CommonAbstracts.TextedInput +import dev.inmo.tgbotapi.abstracts.TextedInput import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendDocument import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaDocument -import dev.inmo.tgbotapi.types.InputMedia.toInputMediaDocument -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.media.TelegramMediaDocument +import dev.inmo.tgbotapi.types.media.toTelegramMediaDocument +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.files.DocumentFile import dev.inmo.tgbotapi.types.files.asDocumentFile import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent import kotlinx.serialization.Serializable @Serializable @@ -40,9 +39,9 @@ data class DocumentContent( replyMarkup ) - override fun toMediaGroupMemberInputMedia(): InputMediaDocument = asInputMedia() + override fun toMediaGroupMemberTelegramMedia(): TelegramMediaDocument = asTelegramMedia() - override fun asInputMedia(): InputMediaDocument = media.toInputMediaDocument(textSources) + override fun asTelegramMedia(): TelegramMediaDocument = media.toTelegramMediaDocument(textSources) } @Suppress("NOTHING_TO_INLINE") diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/GameContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/GameContent.kt index 21319f930c..14a0c3f006 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/GameContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/GameContent.kt @@ -7,7 +7,6 @@ import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.games.Game import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import kotlinx.serialization.Serializable @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/InvoiceContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/InvoiceContent.kt new file mode 100644 index 0000000000..fa835c9caf --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/InvoiceContent.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.message.content + +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.MessageIdentifier +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.payments.Invoice +import kotlinx.serialization.Serializable + +@Serializable +data class InvoiceContent( + val invoice: Invoice +) : MessageContent { + override fun createResend( + chatId: ChatIdentifier, + disableNotification: Boolean, + protectContent: Boolean, + replyToMessageId: MessageIdentifier?, + allowSendingWithoutReply: Boolean?, + replyMarkup: KeyboardMarkup? + ): Request> { + error("Unfortunately, currently InvoiceOfPayment can not be resend due to requirement of additional parameters," + + " which can't be provided during the call of this method") + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/LocationContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/LocationContent.kt index 2997a2d5ce..d468e3f36c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/LocationContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/LocationContent.kt @@ -9,7 +9,6 @@ import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.location.* import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import kotlinx.serialization.* import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.buildClassSerialDescriptor diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/PhotoContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PhotoContent.kt similarity index 72% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/PhotoContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PhotoContent.kt index c56826a5e1..6f43c2adaf 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/PhotoContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PhotoContent.kt @@ -1,16 +1,15 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendPhoto import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaPhoto -import dev.inmo.tgbotapi.types.InputMedia.toInputMediaPhoto -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto +import dev.inmo.tgbotapi.types.media.toTelegramMediaPhoto +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaCollectionContent import kotlinx.serialization.Serializable @Serializable @@ -39,7 +38,7 @@ data class PhotoContent( replyMarkup ) - override fun toMediaGroupMemberInputMedia(): InputMediaPhoto = asInputMedia() + override fun toMediaGroupMemberTelegramMedia(): TelegramMediaPhoto = asTelegramMedia() - override fun asInputMedia(): InputMediaPhoto = media.toInputMediaPhoto(textSources) + override fun asTelegramMedia(): TelegramMediaPhoto = media.toTelegramMediaPhoto(textSources) } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PollContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PollContent.kt index 232cf2f595..b4d15de5cc 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PollContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PollContent.kt @@ -6,7 +6,6 @@ import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import dev.inmo.tgbotapi.types.polls.Poll import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/StickerContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/StickerContent.kt similarity index 76% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/StickerContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/StickerContent.kt index 3dc2d9978d..5ad1c94960 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/StickerContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/StickerContent.kt @@ -1,14 +1,13 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendSticker import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaDocument +import dev.inmo.tgbotapi.types.media.TelegramMediaDocument import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent import kotlinx.serialization.Serializable @Serializable @@ -32,7 +31,7 @@ data class StickerContent( replyMarkup ) - override fun asInputMedia(): InputMediaDocument = InputMediaDocument( + override fun asTelegramMedia(): TelegramMediaDocument = TelegramMediaDocument( media.fileId, null, thumb = media.thumb ?.fileId diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt index 5144f253b4..e7bc5a7170 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt @@ -1,14 +1,13 @@ package dev.inmo.tgbotapi.types.message.content -import dev.inmo.tgbotapi.CommonAbstracts.TextedInput +import dev.inmo.tgbotapi.abstracts.TextedInput import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.SendTextMessage import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import kotlinx.serialization.Serializable @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VenueContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VenueContent.kt index c9ada1a345..109fbe8096 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VenueContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VenueContent.kt @@ -6,7 +6,6 @@ import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import dev.inmo.tgbotapi.types.venue.Venue import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VideoContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VideoContent.kt similarity index 74% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VideoContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VideoContent.kt index 1de12b940e..d8b842df8b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VideoContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VideoContent.kt @@ -1,14 +1,14 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendVideo import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaVideo -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.media.TelegramMediaVideo +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.files.VideoFile -import dev.inmo.tgbotapi.types.files.toInputMediaVideo +import dev.inmo.tgbotapi.types.files.toTelegramMediaVideo import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import kotlinx.serialization.Serializable @@ -41,7 +41,7 @@ data class VideoContent( replyMarkup ) - override fun toMediaGroupMemberInputMedia(): InputMediaVideo = asInputMedia() + override fun toMediaGroupMemberTelegramMedia(): TelegramMediaVideo = asTelegramMedia() - override fun asInputMedia(): InputMediaVideo = media.toInputMediaVideo(textSources) + override fun asTelegramMedia(): TelegramMediaVideo = media.toTelegramMediaVideo(textSources) } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VideoNoteContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VideoNoteContent.kt similarity index 83% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VideoNoteContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VideoNoteContent.kt index 8cd74d80b8..7d7ab64526 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VideoNoteContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VideoNoteContent.kt @@ -1,14 +1,13 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendVideoNote import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaVideo +import dev.inmo.tgbotapi.types.media.TelegramMediaVideo import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.files.VideoNoteFile import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent import kotlinx.serialization.Serializable @Serializable @@ -35,7 +34,7 @@ data class VideoNoteContent( replyMarkup ) - override fun asInputMedia(): InputMediaVideo = InputMediaVideo( + override fun asTelegramMedia(): TelegramMediaVideo = TelegramMediaVideo( media.fileId, width = media.width, height = media.height, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VoiceContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VoiceContent.kt similarity index 76% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VoiceContent.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VoiceContent.kt index 9f069902c8..01a66539b3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VoiceContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/VoiceContent.kt @@ -1,16 +1,14 @@ -package dev.inmo.tgbotapi.types.message.content.media +package dev.inmo.tgbotapi.types.message.content -import dev.inmo.tgbotapi.CommonAbstracts.TextedInput import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.media.SendVoice import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.InputMedia.InputMediaAudio -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.media.TelegramMediaAudio +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.files.VoiceFile import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent import kotlinx.serialization.Serializable @Serializable @@ -38,7 +36,7 @@ data class VoiceContent( replyMarkup ) - override fun asInputMedia(): InputMediaAudio = InputMediaAudio( + override fun asTelegramMedia(): TelegramMediaAudio = TelegramMediaAudio( media.fileId, textSources, media.duration diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/AudioMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/AudioMediaGroupContent.kt deleted file mode 100644 index 0200d93012..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/AudioMediaGroupContent.kt +++ /dev/null @@ -1,4 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -@Deprecated("This class has been moved to the other package", ReplaceWith("AudioMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.media.AudioMediaGroupContent")) -typealias AudioMediaGroupContent = dev.inmo.tgbotapi.types.message.content.media.AudioMediaGroupContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/DocumentMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/DocumentMediaGroupContent.kt deleted file mode 100644 index 4eb6efc539..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/DocumentMediaGroupContent.kt +++ /dev/null @@ -1,4 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -@Deprecated("This class has been moved to the other package", ReplaceWith("DocumentMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.media.DocumentMediaGroupContent")) -typealias DocumentMediaGroupContent = dev.inmo.tgbotapi.types.message.content.media.DocumentMediaGroupContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaCollectionContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaCollectionContent.kt deleted file mode 100644 index a13d66600d..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaCollectionContent.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile - -interface MediaCollectionContent: MessageContent, MediaContent { - val mediaCollection: List -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaContent.kt deleted file mode 100644 index 41f8323614..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaContent.kt +++ /dev/null @@ -1,9 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -import dev.inmo.tgbotapi.types.InputMedia.InputMedia -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile - -interface MediaContent: MessageContent { - val media: TelegramMediaFile - fun asInputMedia(): InputMedia -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaGroupContent.kt deleted file mode 100644 index aee066e415..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MediaGroupContent.kt +++ /dev/null @@ -1,4 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -@Deprecated("This class has been moved to the other package", ReplaceWith("MediaGroupContent", "dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent")) -typealias MediaGroupContent = dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MessageContent.kt deleted file mode 100644 index 0c5b7e8a89..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/MessageContent.kt +++ /dev/null @@ -1,40 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent -import dev.inmo.tgbotapi.utils.RiskFeature -import kotlinx.serialization.modules.* - -interface MessageContent: ResendableContent { - companion object { - @RiskFeature("This serialization module can be changed in near releases") - fun serializationModule( - additionalBuilder: PolymorphicModuleBuilder.() -> Unit = {} - ) = SerializersModule { - polymorphic(MessageContent::class) { - - subclass(ContactContent::class) - subclass(VenueContent::class) - subclass(PollContent::class) - subclass(DiceContent::class) - subclass(TextContent::class) - - subclass(LocationContent::class, LocationContentSerializer) - - subclass(PhotoContent::class) - subclass(VideoContent::class) - subclass(AudioContent::class) - subclass(DocumentContent::class) - - subclass(VoiceContent::class) - subclass(VideoNoteContent::class) - subclass(AnimationContent::class) - subclass(StickerContent::class) - subclass(InvoiceContent::class) - - additionalBuilder() - } - } - } -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/PossiblySentViaBotCommonMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/PossiblySentViaBotCommonMessage.kt deleted file mode 100644 index 5e2ba749e3..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/PossiblySentViaBotCommonMessage.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage -import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBot - -interface PossiblySentViaBotCommonMessage : CommonMessage, PossiblySentViaBot diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/ResendableContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/ResendableContent.kt deleted file mode 100644 index c0a4d572bd..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/ResendableContent.kt +++ /dev/null @@ -1,18 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.message.abstracts.Message - -interface ResendableContent { - fun createResend( - chatId: ChatIdentifier, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null - ): Request -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/Typealiases.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/Typealiases.kt new file mode 100644 index 0000000000..44b7c8ba6f --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/Typealiases.kt @@ -0,0 +1,25 @@ +package dev.inmo.tgbotapi.types.message.content.abstracts + +@Deprecated("This class has been moved to the other package", ReplaceWith("AudioMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent")) +typealias AudioMediaGroupContent = dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("DocumentMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent")) +typealias DocumentMediaGroupContent = dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("VisualMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent")) +typealias VisualMediaGroupContent = dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("MediaCollectionContent", "dev.inmo.tgbotapi.types.message.content.MediaCollectionContent")) +typealias MediaCollectionContent = dev.inmo.tgbotapi.types.message.content.MediaCollectionContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("MediaContent", "dev.inmo.tgbotapi.types.message.content.MediaContent")) +typealias MediaContent = dev.inmo.tgbotapi.types.message.content.MediaContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("MessageContent", "dev.inmo.tgbotapi.types.message.content.MessageContent")) +typealias MessageContent = dev.inmo.tgbotapi.types.message.content.MessageContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("PossiblySentViaBotCommonMessage", "dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage")) +typealias PossiblySentViaBotCommonMessage = dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage + +@Deprecated("This class has been moved to the other package", ReplaceWith("ResendableContent", "dev.inmo.tgbotapi.types.message.content.ResendableContent")) +typealias ResendableContent = dev.inmo.tgbotapi.types.message.content.ResendableContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/VisualMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/VisualMediaGroupContent.kt deleted file mode 100644 index 96761afeae..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/VisualMediaGroupContent.kt +++ /dev/null @@ -1,4 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.abstracts - -@Deprecated("This class has been moved to the other package", ReplaceWith("VisualMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent")) -typealias VisualMediaGroupContent = dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioMediaGroupContent.kt deleted file mode 100644 index adc46e7b42..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioMediaGroupContent.kt +++ /dev/null @@ -1,10 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.media - -import dev.inmo.tgbotapi.types.InputMedia.AudioMediaGroupMemberInputMedia -import dev.inmo.tgbotapi.types.files.AudioFile - -interface AudioMediaGroupContent : MediaGroupContent { - override val media: AudioFile - - override fun toMediaGroupMemberInputMedia(): AudioMediaGroupMemberInputMedia -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentMediaGroupContent.kt deleted file mode 100644 index 8319c3dc16..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentMediaGroupContent.kt +++ /dev/null @@ -1,10 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.media - -import dev.inmo.tgbotapi.types.InputMedia.* -import dev.inmo.tgbotapi.types.files.DocumentFile - -interface DocumentMediaGroupContent : MediaGroupContent { - override val media: DocumentFile - - override fun toMediaGroupMemberInputMedia(): DocumentMediaGroupMemberInputMedia -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/MediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/MediaGroupContent.kt deleted file mode 100644 index 0052cfe362..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/MediaGroupContent.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.media - -import dev.inmo.tgbotapi.types.InputMedia.MediaGroupMemberInputMedia - -interface MediaGroupContent : TextedMediaContent { - fun toMediaGroupMemberInputMedia(): MediaGroupMemberInputMedia -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/TextedMediaContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/TextedMediaContent.kt deleted file mode 100644 index 3eab0b0746..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/TextedMediaContent.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.media - -import dev.inmo.tgbotapi.CommonAbstracts.TextedInput -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent - -sealed interface TextedMediaContent : MediaContent, TextedInput diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/Typealiases.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/Typealiases.kt new file mode 100644 index 0000000000..fc15c3fa4a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/Typealiases.kt @@ -0,0 +1,44 @@ +package dev.inmo.tgbotapi.types.message.content.media + +import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.message.content.asDocumentContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("VoiceContent", "dev.inmo.tgbotapi.types.message.content.VoiceContent")) +typealias VoiceContent = dev.inmo.tgbotapi.types.message.content.VoiceContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("VisualMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent")) +typealias VisualMediaGroupContent = dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("VideoNoteContent", "dev.inmo.tgbotapi.types.message.content.VideoNoteContent")) +typealias VideoNoteContent = dev.inmo.tgbotapi.types.message.content.VideoNoteContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("VideoContent", "dev.inmo.tgbotapi.types.message.content.VideoContent")) +typealias VideoContent = dev.inmo.tgbotapi.types.message.content.VideoContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("TextedMediaContent", "dev.inmo.tgbotapi.types.message.content.TextedMediaContent")) +typealias TextedMediaContent = dev.inmo.tgbotapi.types.message.content.TextedMediaContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("StickerContent", "dev.inmo.tgbotapi.types.message.content.StickerContent")) +typealias StickerContent = dev.inmo.tgbotapi.types.message.content.StickerContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("PhotoContent", "dev.inmo.tgbotapi.types.message.content.PhotoContent")) +typealias PhotoContent = dev.inmo.tgbotapi.types.message.content.PhotoContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("DocumentMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent")) +typealias DocumentMediaGroupContent = dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("DocumentContent", "dev.inmo.tgbotapi.types.message.content.DocumentContent")) +typealias DocumentContent = dev.inmo.tgbotapi.types.message.content.DocumentContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("asDocumentContent", "dev.inmo.tgbotapi.types.message.content.asDocumentContent")) +inline fun MediaContent.asDocumentContent() = asDocumentContent() + +@Deprecated("This class has been moved to the other package", ReplaceWith("AudioMediaGroupContent", "dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent")) +typealias AudioMediaGroupContent = dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("AudioContent", "dev.inmo.tgbotapi.types.message.content.AudioContent")) +typealias AudioContent = dev.inmo.tgbotapi.types.message.content.AudioContent + +@Deprecated("This class has been moved to the other package", ReplaceWith("AnimationContent", "dev.inmo.tgbotapi.types.message.content.AnimationContent")) +typealias AnimationContent = dev.inmo.tgbotapi.types.message.content.AnimationContent + diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VisualMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VisualMediaGroupContent.kt deleted file mode 100644 index 5402b716a2..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VisualMediaGroupContent.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.inmo.tgbotapi.types.message.content.media - -import dev.inmo.tgbotapi.types.InputMedia.VisualMediaGroupMemberInputMedia - -interface VisualMediaGroupContent : MediaGroupContent { - override fun toMediaGroupMemberInputMedia(): VisualMediaGroupMemberInputMedia -} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/payments/InvoiceContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/payments/InvoiceContent.kt index 5743059c43..3fd9b21378 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/payments/InvoiceContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/payments/InvoiceContent.kt @@ -1,27 +1,4 @@ package dev.inmo.tgbotapi.types.message.payments -import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.payments.Invoice -import kotlinx.serialization.Serializable - -@Serializable -data class InvoiceContent( - val invoice: Invoice -) : MessageContent { - override fun createResend( - chatId: ChatIdentifier, - disableNotification: Boolean, - protectContent: Boolean, - replyToMessageId: MessageIdentifier?, - allowSendingWithoutReply: Boolean?, - replyMarkup: KeyboardMarkup? - ): Request> { - error("Unfortunately, currently InvoiceOfPayment can not be resend due to requirement of additional parameters," + - " which can't be provided during the call of this method") - } -} +@Deprecated("This class has been moved to the other package", ReplaceWith("InvoiceContent", "dev.inmo.tgbotapi.types.message.content.InvoiceContent")) +typealias InvoiceContent = dev.inmo.tgbotapi.types.message.content.InvoiceContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/BoldTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/BoldTextSource.kt new file mode 100644 index 0000000000..3b5ac0410b --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/BoldTextSource.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see bold + */ +@Serializable +data class BoldTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.boldMarkdown() } + override val markdownV2: String by lazy { boldMarkdownV2() } + override val html: String by lazy { boldHTML() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun bold(parts: TextSourcesList) = BoldTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun bold(vararg parts: TextSource) = bold(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun bold(text: String) = bold(regular(text)) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/BotCommandTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/BotCommandTextSource.kt new file mode 100644 index 0000000000..b58bd11f4f --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/BotCommandTextSource.kt @@ -0,0 +1,29 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +private val commandRegex = Regex("[/!][^@\\s]*") + +/** + * @see botCommand + */ +@Serializable +data class BotCommandTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String +) : TextSource { + val command: String by lazy { + commandRegex.find(source) ?.value ?.substring(1) ?: source.substring(1)// skip first symbol like "/" or "!" + } + + override val markdown: String by lazy { source.commandMarkdown() } + override val markdownV2: String by lazy { source.commandMarkdownV2() } + override val html: String by lazy { source.commandHTML() } +} + +/** + * @param command Without leading "/" + */ +@Suppress("NOTHING_TO_INLINE") +inline fun botCommand(command: String) = BotCommandTextSource("/$command") diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/CashTagTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/CashTagTextSource.kt new file mode 100644 index 0000000000..ed61c49489 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/CashTagTextSource.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see cashTag + */ +@Serializable +data class CashTagTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.cashTagMarkdown() } + override val markdownV2: String by lazy { cashTagMarkdownV2() } + override val html: String by lazy { cashTagHTML() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun cashTag(parts: TextSourcesList) = CashTagTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun cashTag(vararg parts: TextSource) = cashTag(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun cashTag(tag: String) = cashTag(regular(tag)) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/CodeTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/CodeTextSource.kt new file mode 100644 index 0000000000..590c4dfb16 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/CodeTextSource.kt @@ -0,0 +1,20 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see code + */ +@Serializable +data class CodeTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String +) : TextSource { + override val markdown: String by lazy { source.codeMarkdown() } + override val markdownV2: String by lazy { source.codeMarkdownV2() } + override val html: String by lazy { source.codeHTML() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun code(code: String) = CodeTextSource(code) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/EMailTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/EMailTextSource.kt new file mode 100644 index 0000000000..3f48b5b37e --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/EMailTextSource.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see email + */ +@Serializable +data class EMailTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.emailMarkdown() } + override val markdownV2: String by lazy { emailMarkdownV2(source) } + override val html: String by lazy { emailHTML(source) } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun email(parts: TextSourcesList) = EMailTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun email(vararg parts: TextSource) = email(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun email(emailAddress: String) = email(regular(emailAddress)) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/HashTagTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/HashTagTextSource.kt new file mode 100644 index 0000000000..09a042aa1d --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/HashTagTextSource.kt @@ -0,0 +1,35 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see hashtag + */ +@Serializable +data class HashTagTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.hashTagMarkdown() } + override val markdownV2: String by lazy { hashTagMarkdownV2() } + override val html: String by lazy { hashTagHTML() } + + init { + if (!source.startsWith("#")) { + error("HashTag source must starts with #, but actual value is \"$source\"") + } + } +} + +@Suppress("NOTHING_TO_INLINE", "EXPERIMENTAL_API_USAGE") +inline fun hashtag(parts: TextSourcesList) = (regular("#") + parts).let { HashTagTextSource(it.makeString(), it) } +@Suppress("NOTHING_TO_INLINE") +inline fun hashtag(vararg parts: TextSource) = hashtag(parts.toList()) +/** + * Without sharp (#) + */ +@Suppress("NOTHING_TO_INLINE") +inline fun hashtag(hashtag: String) = hashtag(regular(hashtag)) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/ItalicTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/ItalicTextSource.kt new file mode 100644 index 0000000000..9fbc093e77 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/ItalicTextSource.kt @@ -0,0 +1,27 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see italic + */ +@Serializable +data class ItalicTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.italicMarkdown() } + override val markdownV2: String by lazy { italicMarkdownV2() } + override val html: String by lazy { italicHTML() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun italic(parts: TextSourcesList) = ItalicTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun italic(vararg parts: TextSource) = italic(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun italic(text: String) = italic(regular(text)) + diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/MentionTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/MentionTextSource.kt new file mode 100644 index 0000000000..e8f49ecb44 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/MentionTextSource.kt @@ -0,0 +1,49 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.types.Username +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +private val String.withoutCommercialAt + get() = if (startsWith("@")) { + substring(1) + } else { + this + } + +/** + * @see mention + */ +@Serializable +data class MentionTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.mentionMarkdown() } + override val markdownV2: String by lazy { mentionMarkdownV2() } + override val html: String by lazy { mentionHTML() } + val username: Username = Username(source) + + init { + if (!source.startsWith("@")) { + error("Mention source must starts with @, but actual value is \"$source\"") + } + } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun mention(parts: TextSourcesList) = (regular("@") + parts).let { MentionTextSource(it.makeString(), it) } +@Suppress("NOTHING_TO_INLINE") +inline fun mention(vararg parts: TextSource) = mention(parts.toList()) + +/** + * Without leading "@" + */ +@Suppress("NOTHING_TO_INLINE") +inline fun mention(whoToMention: String) = mention(regular(whoToMention)) + +@Suppress("NOTHING_TO_INLINE") +inline fun mention(whoToMention: Username) = mention(whoToMention.username.dropWhile { it == '@' }) + diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/PhoneNumberTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/PhoneNumberTextSource.kt new file mode 100644 index 0000000000..c2d8416b6f --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/PhoneNumberTextSource.kt @@ -0,0 +1,27 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see phone + */ +@Serializable +data class PhoneNumberTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.phoneMarkdown() } + override val markdownV2: String by lazy { phoneMarkdownV2() } + override val html: String by lazy { phoneHTML() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun phone(parts: TextSourcesList) = PhoneNumberTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun phone(vararg parts: TextSource) = phone(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun phone(number: String) = phone(regular(number)) + diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/PreTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/PreTextSource.kt new file mode 100644 index 0000000000..a532c28a38 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/PreTextSource.kt @@ -0,0 +1,22 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see pre + */ +@Serializable +data class PreTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + val language: String? = null +) : TextSource { + override val markdown: String by lazy { source.preMarkdown(language) } + override val markdownV2: String by lazy { source.preMarkdownV2(language) } + override val html: String by lazy { source.preHTML(language) } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun pre(code: String, language: String? = null) = PreTextSource(code, language) + diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/RegularTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/RegularTextSource.kt new file mode 100644 index 0000000000..ce6f65b086 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/RegularTextSource.kt @@ -0,0 +1,20 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see regular + */ +@Serializable +data class RegularTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String +) : TextSource { + override val markdown: String by lazy { source.regularMarkdown() } + override val markdownV2: String by lazy { source.regularMarkdownV2() } + override val html: String by lazy { source.regularHtml() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun regular(text: String) = RegularTextSource(text) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/SpoilerTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/SpoilerTextSource.kt new file mode 100644 index 0000000000..6b4e10ae26 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/SpoilerTextSource.kt @@ -0,0 +1,27 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see italic + */ +@Serializable +data class SpoilerTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.spoilerMarkdown() } + override val markdownV2: String by lazy { spoilerMarkdownV2() } + override val html: String by lazy { spoilerHTML() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun spoiler(parts: TextSourcesList) = SpoilerTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun spoiler(vararg parts: TextSource) = spoiler(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun spoiler(text: String) = spoiler(regular(text)) + diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/StrikethroughTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/StrikethroughTextSource.kt new file mode 100644 index 0000000000..046115e3fd --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/StrikethroughTextSource.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see strikethrough + */ +@Serializable +data class StrikethroughTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val html: String by lazy { strikethroughHTML() } + override val markdownV2: String by lazy { strikethroughMarkdownV2() } + override val markdown: String by lazy { source.strikethroughMarkdown() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun strikethrough(parts: TextSourcesList) = StrikethroughTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun strikethrough(vararg parts: TextSource) = strikethrough(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun strikethrough(text: String) = strikethrough(regular(text)) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextLinkTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextLinkTextSource.kt new file mode 100644 index 0000000000..1e6bb5a026 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextLinkTextSource.kt @@ -0,0 +1,21 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see link + */ +@Serializable +data class TextLinkTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + val url: String +) : TextSource { + override val markdown: String by lazy { source.linkMarkdown(url) } + override val markdownV2: String by lazy { source.linkMarkdownV2(url) } + override val html: String by lazy { source.linkHTML(url) } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun link(text: String, url: String) = TextLinkTextSource(text, url) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextMentionTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextMentionTextSource.kt new file mode 100644 index 0000000000..e0298aec56 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextMentionTextSource.kt @@ -0,0 +1,55 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.CommonUser +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see mention + */ +@Serializable +data class TextMentionTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + val user: User, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.textMentionMarkdown(user.id) } + override val markdownV2: String by lazy { textMentionMarkdownV2(user.id) } + override val html: String by lazy { textMentionHTML(user.id) } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun mention(parts: TextSourcesList, user: User) = TextMentionTextSource(parts.makeString(), user, parts) +@Suppress("NOTHING_TO_INLINE") +inline fun User.mention(parts: TextSourcesList) = mention(parts, this) +@Suppress("NOTHING_TO_INLINE") +inline fun mention(parts: TextSourcesList, userId: UserId) = mention(parts, CommonUser(userId, "")) +@Suppress("NOTHING_TO_INLINE") +inline fun UserId.mention(parts: TextSourcesList) = mention(parts, this) +@Suppress("NOTHING_TO_INLINE") +inline fun mention(parts: TextSourcesList, id: Identifier) = mention(parts, UserId(id)) +@Suppress("NOTHING_TO_INLINE") +inline fun Identifier.mention(parts: TextSourcesList) = mention(parts, this) +@Suppress("NOTHING_TO_INLINE") +inline fun mention(user: User, vararg parts: TextSource) = mention( + textSourcesOrElseTextSource(parts.toList()) { + RegularTextSource("${user.lastName} ${user.firstName}") + }, + user +) +@Suppress("NOTHING_TO_INLINE") +inline fun mention(text: String, user: User) = mention(user, regular(text)) +@Suppress("NOTHING_TO_INLINE") +inline fun User.mention(text: String) = mention(this, regular(text)) +@Suppress("NOTHING_TO_INLINE") +inline fun mention(text: String, userId: UserId) = mention(text, CommonUser(userId, "")) +@Suppress("NOTHING_TO_INLINE") +inline fun UserId.mention(text: String) = mention(text, this) +@Suppress("NOTHING_TO_INLINE") +inline fun mention(text: String, id: Identifier) = mention(text, UserId(id)) +@Suppress("NOTHING_TO_INLINE") +inline fun Identifier.mention(text: String) = mention(text, this) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSource.kt new file mode 100644 index 0000000000..092833fa6c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSource.kt @@ -0,0 +1,80 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.types.captionLength +import dev.inmo.tgbotapi.types.textLength +import kotlinx.serialization.Serializable + +const val DirectInvocationOfTextSourceConstructor = "It is strongly not recommended to use constructors directly instead of factory methods" + +typealias TextSourcesList = List +typealias MutableTextSourcesList = MutableList + +@Serializable(TextSourceSerializer::class) +sealed interface TextSource { + val markdown: String + val markdownV2: String + val html: String + val source: String + + val asText: String + get() = source +} + +@Suppress("NOTHING_TO_INLINE") +inline operator fun TextSource.plus(other: TextSource) = listOf(this, other) +@Suppress("NOTHING_TO_INLINE") +inline operator fun TextSource.plus(other: List) = listOf(this) + other +@Suppress("NOTHING_TO_INLINE") +inline operator fun TextSource.plus(text: String) = listOf(this, regular(text)) +@Suppress("NOTHING_TO_INLINE") +inline operator fun List.plus(text: String) = this + regular(text) + +@Serializable(TextSourceSerializer::class) +sealed interface MultilevelTextSource : TextSource { + val subsources: List +} + +fun List.separateForMessage(limit: IntRange, numberOfParts: Int? = null): List> { + if (isEmpty()) { + return emptyList() + } + + val resultList = mutableListOf>(mutableListOf()) + var currentPartLength = 0 + val maxSize = limit.last + 1 + + for (current in this) { + if (current.source.length > maxSize) { + error("Currently unsupported parts with size more than target one-message parts (${current.source.length} > ${maxSize})") + } + + if (currentPartLength + current.source.length > maxSize) { + if (numberOfParts == null || numberOfParts < resultList.size) { + resultList.add(mutableListOf()) + currentPartLength = 0 + } else { + break + } + } + + resultList.last().add(current) + currentPartLength += current.source.length + } + + return resultList +} + +/** + * This method will prepare [TextSource]s list for messages. Remember, that first part will be separated with + * [captionLength] and all others with + */ +fun List.separateForCaption(): List> { + val captionPart = separateForMessage(captionLength, 1).first() + return listOf(captionPart) + minus(captionPart).separateForMessage(textLength) +} + +/** + * This method will prepare [TextSource]s list for messages with [textLength] + */ +@Suppress("NOTHING_TO_INLINE") +inline fun List.separateForText(): List> = separateForMessage(textLength) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSourceSerializer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSourceSerializer.kt new file mode 100644 index 0000000000..c451984989 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSourceSerializer.kt @@ -0,0 +1,36 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.micro_utils.serialization.typed_serializer.TypedSerializer +import kotlinx.serialization.KSerializer + +private val baseSerializers: Map> = mapOf( + "regular" to RegularTextSource.serializer(), + "text_link" to TextLinkTextSource.serializer(), + "code" to CodeTextSource.serializer(), + "url" to URLTextSource.serializer(), + "pre" to PreTextSource.serializer(), + "bot_command" to BotCommandTextSource.serializer(), + "strikethrough" to StrikethroughTextSource.serializer(), + "italic" to ItalicTextSource.serializer(), + "bold" to BoldTextSource.serializer(), + "email" to EMailTextSource.serializer(), + "underline" to UnderlineTextSource.serializer(), + "mention" to MentionTextSource.serializer(), + "phone_number" to PhoneNumberTextSource.serializer(), + "text_mention" to TextMentionTextSource.serializer(), + "hashtag" to HashTagTextSource.serializer(), + "cashtag" to CashTagTextSource.serializer(), + "spoiler" to SpoilerTextSource.serializer(), +) + +object TextSourceSerializer : TypedSerializer(TextSource::class, baseSerializers) { + override fun include(type: String, serializer: KSerializer) { + require(type !in baseSerializers.keys) + super.include(type, serializer) + } + + override fun exclude(type: String) { + require(type !in baseSerializers.keys) + super.exclude(type) + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSourcesOrElse.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSourcesOrElse.kt new file mode 100644 index 0000000000..d7134403f2 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/TextSourcesOrElse.kt @@ -0,0 +1,15 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature + +@RiskFeature +inline fun textSourcesOrElse( + textSources: TextSourcesList, + block: () -> TextSourcesList +): TextSourcesList = textSources.takeIf { it.isNotEmpty() } ?: block() + +@RiskFeature +inline fun textSourcesOrElseTextSource( + textSources: TextSourcesList, + block: () -> TextSource +): TextSourcesList = textSources.takeIf { it.isNotEmpty() } ?: listOf(block()) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/URLTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/URLTextSource.kt new file mode 100644 index 0000000000..c1eb901054 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/URLTextSource.kt @@ -0,0 +1,20 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see link + */ +@Serializable +data class URLTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String +) : TextSource { + override val markdown: String by lazy { source.linkMarkdown(source) } + override val markdownV2: String by lazy { source.linkMarkdownV2(source) } + override val html: String by lazy { source.linkHTML(source) } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun link(url: String) = URLTextSource(url) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/UnderlineTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/UnderlineTextSource.kt new file mode 100644 index 0000000000..fafe56a3d0 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/UnderlineTextSource.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.message.textsources + +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.extensions.makeString +import dev.inmo.tgbotapi.utils.internal.* +import kotlinx.serialization.Serializable + +/** + * @see underline + */ +@Serializable +data class UnderlineTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor ( + override val source: String, + override val subsources: TextSourcesList +) : MultilevelTextSource { + override val markdown: String by lazy { source.underlineMarkdown() } + override val markdownV2: String by lazy { underlineMarkdownV2() } + override val html: String by lazy { underlineHTML() } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun underline(parts: TextSourcesList) = UnderlineTextSource(parts.makeString(), parts) +@Suppress("NOTHING_TO_INLINE") +inline fun underline(vararg parts: TextSource) = underline(parts.toList()) +@Suppress("NOTHING_TO_INLINE") +inline fun underline(text: String) = underline(regular(text)) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableFilesCollection.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableFilesCollection.kt index 00ecd47924..689e899964 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableFilesCollection.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableFilesCollection.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.passport.encrypted import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.PassportFile import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableIDDocument.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableIDDocument.kt index 02d587e8bc..54bccbffd5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableIDDocument.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPassportElementWithTranslatableIDDocument.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.passport.encrypted import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.PassportFile import dev.inmo.tgbotapi.types.passport.credentials.EncryptedData import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.* import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Passport.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Passport.kt index e79bcb017c..272677f6fb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Passport.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Passport.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.passport.encrypted import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.files.PassportFile import dev.inmo.tgbotapi.types.passport.credentials.EncryptedData import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.* import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PassportFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PassportFile.kt index 675105120b..c780c64243 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PassportFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PassportFile.kt @@ -1,23 +1,4 @@ package dev.inmo.tgbotapi.types.passport.encrypted -import dev.inmo.tgbotapi.requests.abstracts.FileId -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.files.abstracts.* -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -/** - * This object represents a file uploaded to Telegram Passport. Currently all Telegram Passport files are in JPEG format - * when decrypted and don't exceed 10MB. - */ -@Serializable -data class PassportFile( - @SerialName(fileIdField) - override val fileId: FileId, - @SerialName(fileUniqueIdField) - override val fileUniqueId: FileUniqueId, - @SerialName(fileDateField) - val uploadingDate: TelegramDate, - @SerialName(fileSizeField) - override val fileSize: Long? = null -) : TelegramMediaFile +@Deprecated("Replaced", ReplaceWith("PassportFile", "dev.inmo.tgbotapi.types.files.PassportFile")) +typealias PassportFile = dev.inmo.tgbotapi.types.files.PassportFile diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementTranslatable.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementTranslatable.kt index 32c3a2af89..a23954991d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementTranslatable.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementTranslatable.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.types.passport.encrypted.abstracts import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedElementSerializer -import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile +import dev.inmo.tgbotapi.types.files.PassportFile import kotlinx.serialization.Serializable @Serializable(EncryptedElementSerializer::class) interface EncryptedPassportElementTranslatable : EncryptedPassportElement { val translations: List -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFilesCollection.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFilesCollection.kt index e9edc842e5..feb70221e7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFilesCollection.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFilesCollection.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.types.passport.encrypted.abstracts import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedElementSerializer -import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile +import dev.inmo.tgbotapi.types.files.PassportFile import kotlinx.serialization.Serializable @Serializable(EncryptedElementSerializer::class) interface EncryptedPassportElementWithFilesCollection : EncryptedPassportElement { val files: List -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFrontSide.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFrontSide.kt index dbce257cd9..05df670ad9 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFrontSide.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithFrontSide.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.types.passport.encrypted.abstracts import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedElementSerializer -import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile +import dev.inmo.tgbotapi.types.files.PassportFile import kotlinx.serialization.Serializable @Serializable(EncryptedElementSerializer::class) interface EncryptedPassportElementWithFrontSide : EncryptedPassportElement { val frontSide: PassportFile? -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithReverseSide.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithReverseSide.kt index 24bf4f1874..55095522cd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithReverseSide.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithReverseSide.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.types.passport.encrypted.abstracts import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedElementSerializer -import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile +import dev.inmo.tgbotapi.types.files.PassportFile import kotlinx.serialization.Serializable @Serializable(EncryptedElementSerializer::class) interface EncryptedPassportElementWithReverseSide : EncryptedPassportElement { val reverseSide: PassportFile? -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithSelfie.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithSelfie.kt index d36de7e9cc..6601a01eac 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithSelfie.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElementWithSelfie.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.types.passport.encrypted.abstracts import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedElementSerializer -import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile +import dev.inmo.tgbotapi.types.files.PassportFile import kotlinx.serialization.Serializable @Serializable(EncryptedElementSerializer::class) interface EncryptedPassportElementWithSelfie : EncryptedPassportElement { val selfie: PassportFile? -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/PreCheckoutQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/PreCheckoutQuery.kt index d221e408b2..368afd6d4c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/PreCheckoutQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/PreCheckoutQuery.kt @@ -1,7 +1,8 @@ package dev.inmo.tgbotapi.types.payments -import dev.inmo.tgbotapi.CommonAbstracts.FromUser +import dev.inmo.tgbotapi.abstracts.FromUser import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.payments.abstracts.* import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/ShippingQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/ShippingQuery.kt index d72e2fef65..f6068bd909 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/ShippingQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/payments/ShippingQuery.kt @@ -1,7 +1,8 @@ package dev.inmo.tgbotapi.types.payments -import dev.inmo.tgbotapi.CommonAbstracts.FromUser +import dev.inmo.tgbotapi.abstracts.FromUser import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/Poll.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/Poll.kt index b91d6a98e6..373486a3f5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/Poll.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/Poll.kt @@ -2,10 +2,12 @@ package dev.inmo.tgbotapi.types.polls import com.soywiz.klock.DateTime import com.soywiz.klock.TimeSpan -import dev.inmo.tgbotapi.CommonAbstracts.TextedInput +import dev.inmo.tgbotapi.abstracts.TextedInput import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource +import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.toRawMessageEntities import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.nonstrictJsonFormat import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/PollAnswer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/PollAnswer.kt index 0411d5e8ec..6b46f43124 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/PollAnswer.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/polls/PollAnswer.kt @@ -1,7 +1,8 @@ package dev.inmo.tgbotapi.types.polls -import dev.inmo.tgbotapi.CommonAbstracts.FromUser +import dev.inmo.tgbotapi.abstracts.FromUser import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import kotlinx.serialization.* @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/CallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/CallbackQuery.kt new file mode 100644 index 0000000000..e59944276d --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/CallbackQuery.kt @@ -0,0 +1,17 @@ +package dev.inmo.tgbotapi.types.queries.callback + +import dev.inmo.tgbotapi.abstracts.FromUser +import dev.inmo.tgbotapi.types.CallbackQueryIdentifier +import dev.inmo.tgbotapi.types.chat.User + +sealed interface CallbackQuery : FromUser { + val id: CallbackQueryIdentifier + val chatInstance: String +} + +data class UnknownCallbackQueryType( + override val id: CallbackQueryIdentifier, + override val from: User, + override val chatInstance: String, + val raw: String +) : CallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/DataCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/DataCallbackQuery.kt new file mode 100644 index 0000000000..d40749d007 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/DataCallbackQuery.kt @@ -0,0 +1,10 @@ +package dev.inmo.tgbotapi.types.queries.callback + +/** + * [CallbackQuery] with [data] field + * + * @see dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton + */ +sealed interface DataCallbackQuery : CallbackQuery { + val data: String +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/GameShortNameCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/GameShortNameCallbackQuery.kt new file mode 100644 index 0000000000..8c63f76a43 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/GameShortNameCallbackQuery.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.queries.callback + +sealed interface GameShortNameCallbackQuery : CallbackQuery { + val gameShortName: String +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdCallbackQuery.kt new file mode 100644 index 0000000000..dd468bf0f4 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdCallbackQuery.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.types.queries.callback + +import dev.inmo.tgbotapi.types.InlineMessageIdentifier + +sealed interface InlineMessageIdCallbackQuery : CallbackQuery { + val inlineMessageId: InlineMessageIdentifier +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdDataCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdDataCallbackQuery.kt new file mode 100644 index 0000000000..c448cb36b9 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdDataCallbackQuery.kt @@ -0,0 +1,12 @@ +package dev.inmo.tgbotapi.types.queries.callback + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User + +data class InlineMessageIdDataCallbackQuery( + override val id: CallbackQueryIdentifier, + override val from: User, + override val chatInstance: String, + override val inlineMessageId: InlineMessageIdentifier, + override val data: String +) : DataCallbackQuery, InlineMessageIdCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdGameShortNameCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdGameShortNameCallbackQuery.kt new file mode 100644 index 0000000000..0d54383a16 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/InlineMessageIdGameShortNameCallbackQuery.kt @@ -0,0 +1,12 @@ +package dev.inmo.tgbotapi.types.queries.callback + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User + +data class InlineMessageIdGameShortNameCallbackQuery( + override val id: CallbackQueryIdentifier, + override val from: User, + override val chatInstance: String, + override val inlineMessageId: InlineMessageIdentifier, + override val gameShortName: String +) : GameShortNameCallbackQuery, InlineMessageIdCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageCallbackQuery.kt new file mode 100644 index 0000000000..c1e15e4f28 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageCallbackQuery.kt @@ -0,0 +1,8 @@ +package dev.inmo.tgbotapi.types.queries.callback + +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.MessageContent + +sealed interface MessageCallbackQuery : CallbackQuery { + val message: ContentMessage +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageDataCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageDataCallbackQuery.kt new file mode 100644 index 0000000000..767c02e671 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageDataCallbackQuery.kt @@ -0,0 +1,14 @@ +package dev.inmo.tgbotapi.types.queries.callback + +import dev.inmo.tgbotapi.types.CallbackQueryIdentifier +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.MessageContent + +data class MessageDataCallbackQuery( + override val id: CallbackQueryIdentifier, + override val from: User, + override val chatInstance: String, + override val message: ContentMessage, + override val data: String +) : DataCallbackQuery, MessageCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageGameShortNameCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageGameShortNameCallbackQuery.kt new file mode 100644 index 0000000000..f17b69c416 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/MessageGameShortNameCallbackQuery.kt @@ -0,0 +1,14 @@ +package dev.inmo.tgbotapi.types.queries.callback + +import dev.inmo.tgbotapi.types.CallbackQueryIdentifier +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.MessageContent + +data class MessageGameShortNameCallbackQuery( + override val id: CallbackQueryIdentifier, + override val from: User, + override val chatInstance: String, + override val message: ContentMessage, + override val gameShortName: String +) : GameShortNameCallbackQuery, MessageCallbackQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/RawCallbackQuery.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/RawCallbackQuery.kt similarity index 91% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/RawCallbackQuery.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/RawCallbackQuery.kt index 379095335d..39e77a7340 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/CallbackQuery/RawCallbackQuery.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/queries/callback/RawCallbackQuery.kt @@ -1,9 +1,10 @@ -package dev.inmo.tgbotapi.types.CallbackQuery +package dev.inmo.tgbotapi.types.queries.callback import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stickers/StickerSet.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stickers/StickerSet.kt index 88d3f551d0..84e13732bb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stickers/StickerSet.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/stickers/StickerSet.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.stickers import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.files.PhotoSize -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CallbackQueryUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CallbackQueryUpdate.kt index df96895d3e..aa4a4b2c55 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CallbackQueryUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CallbackQueryUpdate.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.update -import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.update.abstracts.Update diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/ChatJoinRequestUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/ChatJoinRequestUpdate.kt index 2827be9ace..2f8f7f2e78 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/ChatJoinRequestUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/ChatJoinRequestUpdate.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.update -import dev.inmo.tgbotapi.types.ChatJoinRequest +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.update.abstracts.Update diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt index 4811ebaa74..5ac3ec9e03 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.update -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/ChannelPostMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/ChannelPostMediaGroupUpdate.kt index 15a4e4e3d6..8769009f31 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/ChannelPostMediaGroupUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/ChannelPostMediaGroupUpdate.kt @@ -1,13 +1,4 @@ package dev.inmo.tgbotapi.types.update.MediaGroupUpdates -import dev.inmo.tgbotapi.types.UpdateIdentifier -import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate - -data class ChannelPostMediaGroupUpdate( - override val origins: List -) : SentMediaGroupUpdate { - override val updateId: UpdateIdentifier = origins.last().updateId - override val data: List> = origins.mapNotNull { it.data as? MediaGroupMessage } -} +@Deprecated("Replaced", ReplaceWith("ChannelPostMediaGroupUpdate", "dev.inmo.tgbotapi.types.update.media_group.ChannelPostMediaGroupUpdate")) +typealias ChannelPostMediaGroupUpdate = dev.inmo.tgbotapi.types.update.media_group.ChannelPostMediaGroupUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditChannelPostMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditChannelPostMediaGroupUpdate.kt index 6a3efbdf32..d77d8e5ef3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditChannelPostMediaGroupUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditChannelPostMediaGroupUpdate.kt @@ -1,13 +1,4 @@ package dev.inmo.tgbotapi.types.update.MediaGroupUpdates -import dev.inmo.tgbotapi.types.UpdateIdentifier -import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.update.EditChannelPostUpdate - -data class EditChannelPostMediaGroupUpdate( - override val origin: EditChannelPostUpdate -) : EditMediaGroupUpdate { - override val updateId: UpdateIdentifier = origin.updateId - override val data: MediaGroupMessage = origin.data as MediaGroupMessage -} +@Deprecated("Replaced", ReplaceWith("EditChannelPostMediaGroupUpdate", "dev.inmo.tgbotapi.types.update.media_group.EditChannelPostMediaGroupUpdate")) +typealias EditChannelPostMediaGroupUpdate = dev.inmo.tgbotapi.types.update.media_group.EditChannelPostMediaGroupUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditMessageMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditMessageMediaGroupUpdate.kt index e2121c9e40..42cc5d6bb5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditMessageMediaGroupUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/EditMessageMediaGroupUpdate.kt @@ -1,13 +1,4 @@ package dev.inmo.tgbotapi.types.update.MediaGroupUpdates -import dev.inmo.tgbotapi.types.UpdateIdentifier -import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.update.EditMessageUpdate - -data class EditMessageMediaGroupUpdate( - override val origin: EditMessageUpdate -) : EditMediaGroupUpdate { - override val updateId: UpdateIdentifier = origin.updateId - override val data: MediaGroupMessage = origin.data as MediaGroupMessage -} +@Deprecated("Replaced", ReplaceWith("EditMessageMediaGroupUpdate", "dev.inmo.tgbotapi.types.update.media_group.EditMessageMediaGroupUpdate")) +typealias EditMessageMediaGroupUpdate = dev.inmo.tgbotapi.types.update.media_group.EditMessageMediaGroupUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MediaGroupUpdate.kt index 5661d6d0f9..83609e4244 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MediaGroupUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MediaGroupUpdate.kt @@ -1,24 +1,10 @@ package dev.inmo.tgbotapi.types.update.MediaGroupUpdates -import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.update.abstracts.* +@Deprecated("Replaced", ReplaceWith("MediaGroupUpdate", "dev.inmo.tgbotapi.types.update.media_group.MediaGroupUpdate")) +typealias MediaGroupUpdate = dev.inmo.tgbotapi.types.update.media_group.MediaGroupUpdate -/** - * By default there is no instances of objects which could be deserialized from raw updates. If you want to get objects - * with this type, you should use something like [dev.inmo.tgbotapi.extensions.api.SetWebhookKt.includeWebhookInRoute] - * - * @see dev.inmo.tgbotapi.extensions.api.SetWebhookKt.includeWebhookInRoute - * @see dev.inmo.tgbotapi.extensions.api.updates.UpdatesPollingKt.startGettingOfUpdates - */ -sealed interface MediaGroupUpdate : Update +@Deprecated("Replaced", ReplaceWith("SentMediaGroupUpdate", "dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate")) +typealias SentMediaGroupUpdate = dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate -sealed interface SentMediaGroupUpdate: MediaGroupUpdate { - override val data: List> - val origins: List -} - -sealed interface EditMediaGroupUpdate : BaseEditMessageUpdate, MediaGroupUpdate { - override val data: MediaGroupMessage - val origin: BaseMessageUpdate -} +@Deprecated("Replaced", ReplaceWith("EditMediaGroupUpdate", "dev.inmo.tgbotapi.types.update.media_group.EditMediaGroupUpdate")) +typealias EditMediaGroupUpdate = dev.inmo.tgbotapi.types.update.media_group.EditMediaGroupUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MessageMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MessageMediaGroupUpdate.kt index 3d1b34797b..b250aeccd9 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MessageMediaGroupUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MediaGroupUpdates/MessageMediaGroupUpdate.kt @@ -1,13 +1,4 @@ package dev.inmo.tgbotapi.types.update.MediaGroupUpdates -import dev.inmo.tgbotapi.types.UpdateIdentifier -import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate - -data class MessageMediaGroupUpdate( - override val origins: List -) : SentMediaGroupUpdate { - override val updateId: UpdateIdentifier = origins.last().updateId - override val data: List> = origins.mapNotNull { it.data as? MediaGroupMessage } -} +@Deprecated("Replaced", ReplaceWith("MessageMediaGroupUpdate", "dev.inmo.tgbotapi.types.update.media_group.MessageMediaGroupUpdate")) +typealias MessageMediaGroupUpdate = dev.inmo.tgbotapi.types.update.media_group.MessageMediaGroupUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt index 3dabbbb017..6c8779f1b8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.update -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt index bde9d23dd1..5f07aed6d2 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt @@ -1,9 +1,11 @@ package dev.inmo.tgbotapi.types.update import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.CallbackQuery.RawCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.RawCallbackQuery import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.RawChosenInlineResult import dev.inmo.tgbotapi.types.InlineQueries.query.RawInlineQuery +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery import dev.inmo.tgbotapi.types.payments.ShippingQuery diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt index 44c11da4d3..24776c6e85 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types.update.abstracts -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated interface ChatMemberUpdatedUpdate : Update { override val data: ChatMemberUpdated diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/ChannelPostMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/ChannelPostMediaGroupUpdate.kt new file mode 100644 index 0000000000..85414d9489 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/ChannelPostMediaGroupUpdate.kt @@ -0,0 +1,13 @@ +package dev.inmo.tgbotapi.types.update.media_group + +import dev.inmo.tgbotapi.types.UpdateIdentifier +import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate + +data class ChannelPostMediaGroupUpdate( + override val origins: List +) : SentMediaGroupUpdate { + override val updateId: UpdateIdentifier = origins.last().updateId + override val data: List> = origins.mapNotNull { it.data as? MediaGroupMessage } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/EditChannelPostMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/EditChannelPostMediaGroupUpdate.kt new file mode 100644 index 0000000000..eaee526558 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/EditChannelPostMediaGroupUpdate.kt @@ -0,0 +1,13 @@ +package dev.inmo.tgbotapi.types.update.media_group + +import dev.inmo.tgbotapi.types.UpdateIdentifier +import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.update.EditChannelPostUpdate + +data class EditChannelPostMediaGroupUpdate( + override val origin: EditChannelPostUpdate +) : EditMediaGroupUpdate { + override val updateId: UpdateIdentifier = origin.updateId + override val data: MediaGroupMessage = origin.data as MediaGroupMessage +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/EditMessageMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/EditMessageMediaGroupUpdate.kt new file mode 100644 index 0000000000..cf9dddbeb3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/EditMessageMediaGroupUpdate.kt @@ -0,0 +1,13 @@ +package dev.inmo.tgbotapi.types.update.media_group + +import dev.inmo.tgbotapi.types.UpdateIdentifier +import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.update.EditMessageUpdate + +data class EditMessageMediaGroupUpdate( + override val origin: EditMessageUpdate +) : EditMediaGroupUpdate { + override val updateId: UpdateIdentifier = origin.updateId + override val data: MediaGroupMessage = origin.data as MediaGroupMessage +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/MediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/MediaGroupUpdate.kt new file mode 100644 index 0000000000..7f9b13358b --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/MediaGroupUpdate.kt @@ -0,0 +1,24 @@ +package dev.inmo.tgbotapi.types.update.media_group + +import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.update.abstracts.* + +/** + * By default there is no instances of objects which could be deserialized from raw updates. If you want to get objects + * with this type, you should use something like [dev.inmo.tgbotapi.extensions.api.SetWebhookKt.includeWebhookInRoute] + * + * @see dev.inmo.tgbotapi.extensions.api.SetWebhookKt.includeWebhookInRoute + * @see dev.inmo.tgbotapi.extensions.api.updates.UpdatesPollingKt.startGettingOfUpdates + */ +sealed interface MediaGroupUpdate : Update + +sealed interface SentMediaGroupUpdate: MediaGroupUpdate { + override val data: List> + val origins: List +} + +sealed interface EditMediaGroupUpdate : BaseEditMessageUpdate, MediaGroupUpdate { + override val data: MediaGroupMessage + val origin: BaseMessageUpdate +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/MessageMediaGroupUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/MessageMediaGroupUpdate.kt new file mode 100644 index 0000000000..329d75c8d3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/media_group/MessageMediaGroupUpdate.kt @@ -0,0 +1,13 @@ +package dev.inmo.tgbotapi.types.update.media_group + +import dev.inmo.tgbotapi.types.UpdateIdentifier +import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate + +data class MessageMediaGroupUpdate( + override val origins: List +) : SentMediaGroupUpdate { + override val updateId: UpdateIdentifier = origins.last().updateId + override val data: List> = origins.mapNotNull { it.data as? MediaGroupMessage } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/venue/Venue.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/venue/Venue.kt index b27c18e1e7..f96a1f26bf 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/venue/Venue.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/venue/Venue.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types.venue -import dev.inmo.tgbotapi.CommonAbstracts.CommonVenueData -import dev.inmo.tgbotapi.CommonAbstracts.Locationed +import dev.inmo.tgbotapi.abstracts.CommonVenueData +import dev.inmo.tgbotapi.abstracts.Locationed import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.location.StaticLocation import kotlinx.serialization.SerialName diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt index db8de2ec2f..c3265bc419 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt @@ -3,9 +3,9 @@ package dev.inmo.tgbotapi.updateshandlers import dev.inmo.micro_utils.coroutines.plus import dev.inmo.tgbotapi.types.ALL_UPDATES_LIST import dev.inmo.tgbotapi.types.update.* -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.types.update.media_group.* import kotlinx.coroutines.channels.* import kotlinx.coroutines.flow.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/UpdatesFilter.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/UpdatesFilter.kt index 44c2307356..4704a4c9d5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/UpdatesFilter.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/UpdatesFilter.kt @@ -2,9 +2,9 @@ package dev.inmo.tgbotapi.updateshandlers import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.update.* -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.types.update.media_group.* typealias UpdateReceiver = suspend (T) -> Unit @@ -119,4 +119,4 @@ fun createSimpleUpdateFilter( pollUpdateCallback = pollCallback, pollAnswerUpdateCallback = pollAnswerCallback, unknownUpdateTypeCallback = unknownCallback -) \ No newline at end of file +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/Crypto.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/Crypto.kt deleted file mode 100644 index af150b34fa..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/Crypto.kt +++ /dev/null @@ -1,19 +0,0 @@ -package dev.inmo.tgbotapi.utils - -import dev.inmo.micro_utils.crypto.SourceBytes -import dev.inmo.micro_utils.crypto.SourceString - -internal expect fun SourceString.hmacSha256(key: String): String -private val HEX_ARRAY = "0123456789abcdef".toCharArray() - -internal fun SourceBytes.hex(): String { - val hexChars = CharArray(size * 2) - for (j in indices) { - val v: Int = this[j].toInt() and 0xFF - hexChars[j * 2] = HEX_ARRAY[v ushr 4] - hexChars[j * 2 + 1] = HEX_ARRAY[v and 0x0F] - } - return hexChars.concatToString() -} - -internal fun SourceString.hex(): String = encodeToByteArray().hex() diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt index a0dfe6e0ab..69dd7b3d3e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt @@ -8,23 +8,6 @@ import io.ktor.utils.io.core.ByteReadPacket import io.ktor.utils.io.core.Input import kotlinx.serialization.Serializable -/** - * Information about file for [StorageFile] - * - * @param contentType Raw type like "application/json" - * @param fileName This filename will be used in telegram system as name of file - */ -@Serializable -@Deprecated("Will be removed soon") -data class StorageFileInfo( - val fileName: String -) { - /** - * This methods is required for random generation of name for keeping warranties about unique file name - */ - fun generateCustomName() = "${uuid4()}.${fileName.fileExtension}" -} - /** * Contains info about file, which potentially can be sent to telegram system. * @@ -34,31 +17,22 @@ data class StorageFileInfo( * @see StorageFileInfo * @see asStorageFile */ +@Deprecated("Storage file now is not necessary") data class StorageFile( val fileName: String, private val inputSource: () -> Input ) { val input: Input get() = inputSource() - @Deprecated("This field will be removed soon. Use fileName instead of StorageFileInfo") - val storageFileInfo: StorageFileInfo - get() = StorageFileInfo(fileName) /** * This methods is required for random generation of name for keeping warranties about unique file name */ fun generateCustomName() = "${uuid4()}.${fileName.fileExtension}" - @Deprecated("This constructor will be removed soon. Use constructor with fileName instead of StorageFileInfo") - constructor( - storageFileInfo: StorageFileInfo, - inputSource: () -> Input - ) : this( - storageFileInfo.fileName, - inputSource - ) } +@Deprecated("Storage file now is not necessary") @Suppress("NOTHING_TO_INLINE") inline fun StorageFile( fileName: String, @@ -69,6 +43,7 @@ inline fun StorageFile( ByteReadPacket(bytes) } +@Deprecated("StorageFile now is not necessary") @Suppress("NOTHING_TO_INLINE") suspend inline fun StorageFile( fileName: String, @@ -78,16 +53,19 @@ suspend inline fun StorageFile( inputSource = byteReadChannel.asInput().let { { it } } ) +@Deprecated("StorageFile now is not necessary") @Suppress("NOTHING_TO_INLINE", "unused") inline fun ByteArray.asStorageFile( fileName: String ) = StorageFile(fileName, this) +@Deprecated("StorageFile now is not necessary") @Suppress("NOTHING_TO_INLINE", "unused") suspend inline fun ByteReadChannel.asStorageFile( fileName: String ) = StorageFile(fileName, this) +@Deprecated("StorageFile now is not necessary") @Suppress("NOTHING_TO_INLINE", "unused") suspend inline fun ByteReadChannelAllocator.asStorageFile( fileName: String diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/TelegramAPIUrlsKeeper.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/TelegramAPIUrlsKeeper.kt index 9960a89f02..1dfe697c08 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/TelegramAPIUrlsKeeper.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/TelegramAPIUrlsKeeper.kt @@ -1,5 +1,8 @@ package dev.inmo.tgbotapi.utils +import dev.inmo.micro_utils.crypto.hex +import dev.inmo.micro_utils.crypto.hmacSha256 + const val telegramBotAPIDefaultUrl = "https://api.telegram.org" private inline val String.withoutLastSlash: String diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/TextSourcesList.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/TextSourcesList.kt index d74f224c9a..1480054c1a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/TextSourcesList.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/TextSourcesList.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.utils.extensions -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.* inline fun TextSourcesList.makeString( parseMode: ParseMode? = null diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/MultilevelTextSourceFormatting.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/MultilevelTextSourceFormatting.kt index 01b7d8744b..56ffef940a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/MultilevelTextSourceFormatting.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/MultilevelTextSourceFormatting.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.utils.internal -import dev.inmo.tgbotapi.types.MessageEntity.textsources.MultilevelTextSource +import dev.inmo.tgbotapi.types.message.textsources.MultilevelTextSource import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.link import dev.inmo.tgbotapi.utils.extensions.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/StringFormatting.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/StringFormatting.kt index 13289fe1df..a43471b317 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/StringFormatting.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/internal/StringFormatting.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.utils.internal -import dev.inmo.tgbotapi.types.ParseMode.* import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.link +import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.utils.extensions.* const val markdownBoldControl = "*" diff --git a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/SimpleInputFilesTest.kt b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/SimpleInputFilesTest.kt index e86186f9e4..a0facdfb88 100644 --- a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/SimpleInputFilesTest.kt +++ b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/SimpleInputFilesTest.kt @@ -1,9 +1,9 @@ package dev.inmo.tgbotapi import dev.inmo.tgbotapi.requests.abstracts.toInputFile -import dev.inmo.tgbotapi.types.InputMedia.MediaGroupMemberInputMediaSerializer +import dev.inmo.tgbotapi.types.media.MediaGroupMemberTelegramMediaSerializer import dev.inmo.tgbotapi.types.files.PhotoSize -import dev.inmo.tgbotapi.types.message.content.media.PhotoContent +import dev.inmo.tgbotapi.types.message.content.PhotoContent import kotlinx.serialization.json.Json import kotlin.test.Test import kotlin.test.assertEquals @@ -24,16 +24,16 @@ class SimpleInputFilesTest { PhotoSize("example_file_id".toInputFile(), "example_unique_file_id", 100, 100, 100) ) ) - val inputMedia = photoContent.toMediaGroupMemberInputMedia() + val inputMedia = photoContent.toMediaGroupMemberTelegramMedia() assertEquals(photoContent.media.fileId, inputMedia.file) val encoded = nonstrictJsonFormat.encodeToString( - MediaGroupMemberInputMediaSerializer, + MediaGroupMemberTelegramMediaSerializer, inputMedia ) assertEquals( inputMedia, nonstrictJsonFormat.decodeFromString( - MediaGroupMemberInputMediaSerializer, + MediaGroupMemberTelegramMediaSerializer, encoded ) ) diff --git a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/EntitiesTestText.kt b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/EntitiesTestText.kt index 9b6a1d31f0..6621ed1137 100644 --- a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/EntitiesTestText.kt +++ b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/EntitiesTestText.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.MessageEntity -import dev.inmo.tgbotapi.types.MessageEntity.textsources.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.textsources.* import kotlin.test.assertTrue const val testText = "It (is?) is simple hello world with #tag and @mention" diff --git a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/StringFormattingTests.kt b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/StringFormattingTests.kt index 6929bf6135..db723156cd 100644 --- a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/StringFormattingTests.kt +++ b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/StringFormattingTests.kt @@ -1,7 +1,9 @@ package dev.inmo.tgbotapi.types.MessageEntity import dev.inmo.tgbotapi.extensions.utils.formatting.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.* +import dev.inmo.tgbotapi.types.message.RawMessageEntity +import dev.inmo.tgbotapi.types.message.asTextSources +import dev.inmo.tgbotapi.types.message.textsources.* import kotlin.test.* class StringFormattingTests { diff --git a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/TextPartsCreatingTests.kt b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/TextPartsCreatingTests.kt index a4e3900028..f4af5d48da 100644 --- a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/TextPartsCreatingTests.kt +++ b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/MessageEntity/TextPartsCreatingTests.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.MessageEntity import dev.inmo.tgbotapi.extensions.utils.formatting.toHtmlTexts import dev.inmo.tgbotapi.extensions.utils.formatting.toMarkdownV2Texts +import dev.inmo.tgbotapi.types.message.asTextSources import kotlin.test.Test import kotlin.test.assertEquals diff --git a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/ParseModeTests.kt b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/ParseModeTests.kt index ffe13a75ae..22af760b21 100644 --- a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/ParseModeTests.kt +++ b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/ParseModeTests.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.types import dev.inmo.tgbotapi.TestsJsonFormat -import dev.inmo.tgbotapi.types.ParseMode.* +import dev.inmo.tgbotapi.types.message.* import kotlinx.serialization.Serializable import kotlin.test.Test import kotlin.test.assertEquals diff --git a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/TextSourcesTests.kt b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/TextSourcesTests.kt index b3336962ee..ab4cba5547 100644 --- a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/TextSourcesTests.kt +++ b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/TextSourcesTests.kt @@ -2,8 +2,7 @@ package dev.inmo.tgbotapi.types import dev.inmo.tgbotapi.TestsJsonFormat import dev.inmo.tgbotapi.extensions.utils.formatting.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourceSerializer -import dev.inmo.tgbotapi.types.MessageEntity.textsources.spoiler +import dev.inmo.tgbotapi.types.message.textsources.TextSourceSerializer import dev.inmo.tgbotapi.utils.extensions.makeString import kotlinx.serialization.builtins.ListSerializer import kotlin.test.Test diff --git a/tgbotapi.core/src/jsMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt b/tgbotapi.core/src/jsMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt index b3cd16f998..89b42348b4 100644 --- a/tgbotapi.core/src/jsMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt +++ b/tgbotapi.core/src/jsMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt @@ -3,6 +3,6 @@ package dev.inmo.tgbotapi.requests.abstracts import dev.inmo.micro_utils.common.* import io.ktor.utils.io.ByteReadChannel -actual suspend fun MPPFile.asMultipartFile(): MultipartFile = ByteReadChannel(bytes()).asMultipartFile( +actual fun MPPFile.asMultipartFile(): MultipartFile = bytesSync().asMultipartFile( filename.name ) diff --git a/tgbotapi.core/src/jsMain/kotlin/dev/inmo/tgbotapi/utils/CryptoActual.kt b/tgbotapi.core/src/jsMain/kotlin/dev/inmo/tgbotapi/utils/CryptoActual.kt deleted file mode 100644 index a8b23eae8a..0000000000 --- a/tgbotapi.core/src/jsMain/kotlin/dev/inmo/tgbotapi/utils/CryptoActual.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.inmo.tgbotapi.utils - -import dev.inmo.micro_utils.crypto.CryptoJS -import dev.inmo.micro_utils.crypto.SourceString - -actual fun SourceString.hmacSha256(key: String) = CryptoJS.asDynamic().HmacSHA256(this, key).toString().unsafeCast() diff --git a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFileFromJavaFile.kt b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFileFromJavaFile.kt index 34350831f3..c4f2a3ac47 100644 --- a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFileFromJavaFile.kt +++ b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFileFromJavaFile.kt @@ -1,12 +1,6 @@ package dev.inmo.tgbotapi.requests.abstracts -import dev.inmo.tgbotapi.utils.StorageFile import java.io.File -fun File.toInputFile() = if (exists()) { - MultipartFile( - StorageFile(this) - ) -} else { - error("Specified file $absolutePath does not exists") -} +@Deprecated("Duplacation of asMultipartFile", ReplaceWith("asMultipartFile", "dev.inmo.tgbotapi.requests.abstracts.asMultipartFile")) +fun File.toInputFile() = asMultipartFile() diff --git a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt index bc2ab9874e..dd0fffa590 100644 --- a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt +++ b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/MPPFileMultipartFileActual.kt @@ -1,5 +1,14 @@ package dev.inmo.tgbotapi.requests.abstracts import dev.inmo.micro_utils.common.MPPFile +import dev.inmo.micro_utils.common.filename +import dev.inmo.micro_utils.ktor.common.input -actual suspend fun MPPFile.asMultipartFile(): MultipartFile = toInputFile() +actual fun MPPFile.asMultipartFile(): MultipartFile = if (exists()) { + MultipartFile( + filename.string, + ::input + ) +} else { + error("Specified file $absolutePath does not exists") +} diff --git a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/CryptoActual.kt b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/CryptoActual.kt deleted file mode 100644 index 65075f0119..0000000000 --- a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/CryptoActual.kt +++ /dev/null @@ -1,14 +0,0 @@ -package dev.inmo.tgbotapi.utils - -import dev.inmo.micro_utils.crypto.SourceString -import javax.crypto.Mac -import javax.crypto.spec.SecretKeySpec - -actual fun SourceString.hmacSha256(key: String): String { - val mac = Mac.getInstance("HmacSHA256") - - val secretKey = SecretKeySpec(key.toByteArray(), "HmacSHA256") - mac.init(secretKey) - - return mac.doFinal(toByteArray()).hex() -} diff --git a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/StorageFileFactory.kt b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/StorageFileFactory.kt index 2ceb51562f..be39de9c66 100644 --- a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/StorageFileFactory.kt +++ b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/StorageFileFactory.kt @@ -4,6 +4,7 @@ import io.ktor.utils.io.streams.asInput import java.io.File import java.nio.file.Files +@Deprecated("StorageFile now is not necessary") fun StorageFile( file: File ) = StorageFile( diff --git a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/ElementDecryptingWithSecureData.kt b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/ElementDecryptingWithSecureData.kt index e184139b0d..e10dd18ab8 100644 --- a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/ElementDecryptingWithSecureData.kt +++ b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/ElementDecryptingWithSecureData.kt @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.DownloadFile import dev.inmo.tgbotapi.requests.get.GetFile import dev.inmo.tgbotapi.types.passport.credentials.* -import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile +import dev.inmo.tgbotapi.types.files.PassportFile fun EndDataCredentials.decryptData( bytes: EncryptedData diff --git a/tgbotapi.extensions.api/build.gradle b/tgbotapi.extensions.api/build.gradle deleted file mode 100644 index 19f9b94bce..0000000000 --- a/tgbotapi.extensions.api/build.gradle +++ /dev/null @@ -1,56 +0,0 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - } -} - -plugins { - id "org.jetbrains.kotlin.multiplatform" - id "org.jetbrains.kotlin.plugin.serialization" -} - -project.version = "$library_version" -project.group = "$library_group" -project.description = "DEPRECATED, use tgbotapi.api" - -apply from: "../publish.gradle" - -repositories { - mavenLocal() - mavenCentral() -} - -kotlin { - jvm { - compilations.main { - kotlinOptions { - jvmTarget = "1.8" - } - } - } - js(IR) { - browser() - nodejs() - } - - sourceSets { - commonMain { - dependencies { - implementation kotlin('stdlib') - api project(":tgbotapi.api") - } - } - } -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - diff --git a/tgbotapi.extensions.behaviour_builder.fsm/build.gradle b/tgbotapi.extensions.behaviour_builder.fsm/build.gradle deleted file mode 100644 index d65af85ca1..0000000000 --- a/tgbotapi.extensions.behaviour_builder.fsm/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - } -} - -plugins { - id "org.jetbrains.kotlin.multiplatform" - id "org.jetbrains.kotlin.plugin.serialization" -} - -project.version = "$library_version" -project.group = "$library_group" -project.description = "DEPRECATED, use tgbotapi.behaviour_builder.fsm" - -apply from: "../publish.gradle" - -repositories { - mavenLocal() - mavenCentral() -} - -kotlin { - jvm() - js(IR) { - browser() - nodejs() - } - - sourceSets { - commonMain { - dependencies { - implementation kotlin('stdlib') - api project(":tgbotapi.behaviour_builder.fsm") - } - } - } -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - diff --git a/tgbotapi.extensions.behaviour_builder/build.gradle b/tgbotapi.extensions.behaviour_builder/build.gradle deleted file mode 100644 index 74e5743851..0000000000 --- a/tgbotapi.extensions.behaviour_builder/build.gradle +++ /dev/null @@ -1,56 +0,0 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - } -} - -plugins { - id "org.jetbrains.kotlin.multiplatform" - id "org.jetbrains.kotlin.plugin.serialization" -} - -project.version = "$library_version" -project.group = "$library_group" -project.description = "DEPRECATED, use tgbotapi.behaviour_builder" - -apply from: "../publish.gradle" - -repositories { - mavenLocal() - mavenCentral() -} - -kotlin { - jvm { - compilations.main { - kotlinOptions { - jvmTarget = "1.8" - } - } - } - js(IR) { - browser() - nodejs() - } - - sourceSets { - commonMain { - dependencies { - implementation kotlin('stdlib') - api project(":tgbotapi.behaviour_builder") - } - } - } -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - diff --git a/tgbotapi.extensions.utils/build.gradle b/tgbotapi.extensions.utils/build.gradle deleted file mode 100644 index f34195fe8d..0000000000 --- a/tgbotapi.extensions.utils/build.gradle +++ /dev/null @@ -1,56 +0,0 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - } -} - -plugins { - id "org.jetbrains.kotlin.multiplatform" - id "org.jetbrains.kotlin.plugin.serialization" -} - -project.version = "$library_version" -project.group = "$library_group" -project.description = "DEPRECATED, use tgbotapi.utils" - -apply from: "../publish.gradle" - -repositories { - mavenLocal() - mavenCentral() -} - -kotlin { - jvm { - compilations.main { - kotlinOptions { - jvmTarget = "1.8" - } - } - } - js(IR) { - browser() - nodejs() - } - - sourceSets { - commonMain { - dependencies { - implementation kotlin('stdlib') - api project(":tgbotapi.utils") - } - } - } -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CallbackQueryConversations.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CallbackQueryConversations.kt index 159a22a762..2d38fc0150 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CallbackQueryConversations.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CallbackQueryConversations.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.extensions.utils -import dev.inmo.tgbotapi.types.CallbackQuery.* +import dev.inmo.tgbotapi.types.queries.callback.* import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt index 05fe5aaa98..8bb132515a 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt @@ -2,12 +2,11 @@ package dev.inmo.tgbotapi.extensions.utils -import dev.inmo.tgbotapi.CommonAbstracts.* +import dev.inmo.tgbotapi.abstracts.* import dev.inmo.tgbotapi.requests.send.payments.SendInvoice import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.CallbackQuery.* -import dev.inmo.tgbotapi.types.ChatMember.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.* +import dev.inmo.tgbotapi.types.queries.callback.* +import dev.inmo.tgbotapi.types.chat.member.* import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* @@ -20,19 +19,25 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.* import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.* import dev.inmo.tgbotapi.types.InlineQueries.query.* -import dev.inmo.tgbotapi.types.InputMedia.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.* +import dev.inmo.tgbotapi.types.media.* import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode import dev.inmo.tgbotapi.types.actions.* import dev.inmo.tgbotapi.types.buttons.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.* -import dev.inmo.tgbotapi.types.chat.abstracts.* -import dev.inmo.tgbotapi.types.chat.abstracts.extended.* +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.Bot +import dev.inmo.tgbotapi.types.chat.CommonBot +import dev.inmo.tgbotapi.types.chat.CommonUser +import dev.inmo.tgbotapi.types.chat.ExtendedBot +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember +import dev.inmo.tgbotapi.types.chat.member.BannedChatMember +import dev.inmo.tgbotapi.types.chat.member.ChatMember +import dev.inmo.tgbotapi.types.chat.member.MemberChatMember +import dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember import dev.inmo.tgbotapi.types.dice.* import dev.inmo.tgbotapi.types.files.* -import dev.inmo.tgbotapi.types.files.abstracts.* -import dev.inmo.tgbotapi.types.files.sticker.* -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker import dev.inmo.tgbotapi.types.location.* import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.types.message.ChatEvents.* @@ -41,14 +46,13 @@ import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.content.media.AudioMediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.DocumentMediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent import dev.inmo.tgbotapi.types.message.payments.SuccessfulPaymentEvent +import dev.inmo.tgbotapi.types.message.textsources.* import dev.inmo.tgbotapi.types.passport.* import dev.inmo.tgbotapi.types.passport.decrypted.* import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.* @@ -56,8 +60,8 @@ import dev.inmo.tgbotapi.types.passport.encrypted.* import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.* import dev.inmo.tgbotapi.types.polls.* import dev.inmo.tgbotapi.types.update.* -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.* +import dev.inmo.tgbotapi.types.update.media_group.* import dev.inmo.tgbotapi.utils.PreviewFeature @PreviewFeature @@ -1889,128 +1893,284 @@ inline fun ChatMember.asSpecialRightsChatMember(): SpecialRightsChatMember? = th inline fun ChatMember.requireSpecialRightsChatMember(): SpecialRightsChatMember = this as SpecialRightsChatMember @PreviewFeature -inline fun InputMedia.whenAudioMediaGroupMemberInputMedia(block: (AudioMediaGroupMemberInputMedia) -> T) = asAudioMediaGroupMemberInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenAudioMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenAudioMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.whenAudioMediaGroupMemberInputMedia(block: (AudioMediaGroupMemberTelegramMedia) -> T) = whenAudioMediaGroupMemberTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asAudioMediaGroupMemberInputMedia(): AudioMediaGroupMemberInputMedia? = - this as? AudioMediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("asAudioMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asAudioMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.asAudioMediaGroupMemberInputMedia(): AudioMediaGroupMemberTelegramMedia? = asAudioMediaGroupMemberTelegramMedia() @PreviewFeature -inline fun InputMedia.requireAudioMediaGroupMemberInputMedia(): AudioMediaGroupMemberInputMedia = - this as AudioMediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("requireAudioMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireAudioMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.requireAudioMediaGroupMemberInputMedia(): AudioMediaGroupMemberTelegramMedia = requireAudioMediaGroupMemberTelegramMedia() @PreviewFeature -inline fun InputMedia.whenDocumentMediaGroupMemberInputMedia(block: (DocumentMediaGroupMemberInputMedia) -> T) = asDocumentMediaGroupMemberInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenDocumentMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenDocumentMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.whenDocumentMediaGroupMemberInputMedia(block: (DocumentMediaGroupMemberTelegramMedia) -> T) = whenDocumentMediaGroupMemberTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asDocumentMediaGroupMemberInputMedia(): DocumentMediaGroupMemberInputMedia? = - this as? DocumentMediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("asDocumentMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asDocumentMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.asDocumentMediaGroupMemberInputMedia(): DocumentMediaGroupMemberTelegramMedia? = asDocumentMediaGroupMemberTelegramMedia() @PreviewFeature -inline fun InputMedia.requireDocumentMediaGroupMemberInputMedia(): DocumentMediaGroupMemberInputMedia = - this as DocumentMediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("requireDocumentMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireDocumentMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.requireDocumentMediaGroupMemberInputMedia(): DocumentMediaGroupMemberTelegramMedia = requireDocumentMediaGroupMemberTelegramMedia() @PreviewFeature -inline fun InputMedia.whenDuratedInputMedia(block: (DuratedInputMedia) -> T) = asDuratedInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenDuratedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenDuratedTelegramMedia")) +inline fun TelegramMedia.whenDuratedInputMedia(block: (DuratedTelegramMedia) -> T) = whenDuratedTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asDuratedInputMedia(): DuratedInputMedia? = this as? DuratedInputMedia +@Deprecated("Renamed", ReplaceWith("asDuratedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asDuratedTelegramMedia")) +inline fun TelegramMedia.asDuratedInputMedia(): DuratedTelegramMedia? = asDuratedTelegramMedia() @PreviewFeature -inline fun InputMedia.requireDuratedInputMedia(): DuratedInputMedia = this as DuratedInputMedia +@Deprecated("Renamed", ReplaceWith("requireDuratedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireDuratedTelegramMedia")) +inline fun TelegramMedia.requireDuratedInputMedia(): DuratedTelegramMedia = requireDuratedTelegramMedia() @PreviewFeature -inline fun InputMedia.whenInputMediaAnimation(block: (InputMediaAnimation) -> T) = asInputMediaAnimation() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenTelegramMediaAnimation", "dev.inmo.tgbotapi.extensions.utils.whenTelegramMediaAnimation")) +inline fun TelegramMedia.whenInputMediaAnimation(block: (TelegramMediaAnimation) -> T) = whenTelegramMediaAnimation(block) @PreviewFeature -inline fun InputMedia.asInputMediaAnimation(): InputMediaAnimation? = this as? InputMediaAnimation +@Deprecated("Renamed", ReplaceWith("asTelegramMediaAnimation", "dev.inmo.tgbotapi.extensions.utils.asTelegramMediaAnimation")) +inline fun TelegramMedia.asInputMediaAnimation(): TelegramMediaAnimation? = asTelegramMediaAnimation() @PreviewFeature -inline fun InputMedia.requireInputMediaAnimation(): InputMediaAnimation = this as InputMediaAnimation +@Deprecated("Renamed", ReplaceWith("requireTelegramMediaAnimation", "dev.inmo.tgbotapi.extensions.utils.requireTelegramMediaAnimation")) +inline fun TelegramMedia.requireInputMediaAnimation(): TelegramMediaAnimation = requireTelegramMediaAnimation() @PreviewFeature -inline fun InputMedia.whenInputMediaAudio(block: (InputMediaAudio) -> T) = asInputMediaAudio() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenTelegramMediaAudio", "dev.inmo.tgbotapi.extensions.utils.whenTelegramMediaAudio")) +inline fun TelegramMedia.whenInputMediaAudio(block: (TelegramMediaAudio) -> T) = whenTelegramMediaAudio(block) @PreviewFeature -inline fun InputMedia.asInputMediaAudio(): InputMediaAudio? = this as? InputMediaAudio +@Deprecated("Renamed", ReplaceWith("asTelegramMediaAudio", "dev.inmo.tgbotapi.extensions.utils.asTelegramMediaAudio")) +inline fun TelegramMedia.asInputMediaAudio(): TelegramMediaAudio? = asTelegramMediaAudio() @PreviewFeature -inline fun InputMedia.requireInputMediaAudio(): InputMediaAudio = this as InputMediaAudio +@Deprecated("Renamed", ReplaceWith("requireTelegramMediaAudio", "dev.inmo.tgbotapi.extensions.utils.requireTelegramMediaAudio")) +inline fun TelegramMedia.requireInputMediaAudio(): TelegramMediaAudio = requireTelegramMediaAudio() @PreviewFeature -inline fun InputMedia.whenInputMediaDocument(block: (InputMediaDocument) -> T) = asInputMediaDocument() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenTelegramMediaDocument", "dev.inmo.tgbotapi.extensions.utils.whenTelegramMediaDocument")) +inline fun TelegramMedia.whenInputMediaDocument(block: (TelegramMediaDocument) -> T) = whenTelegramMediaDocument(block) @PreviewFeature -inline fun InputMedia.asInputMediaDocument(): InputMediaDocument? = this as? InputMediaDocument +@Deprecated("Renamed", ReplaceWith("asTelegramMediaDocument", "dev.inmo.tgbotapi.extensions.utils.asTelegramMediaDocument")) +inline fun TelegramMedia.asInputMediaDocument(): TelegramMediaDocument? = asTelegramMediaDocument() @PreviewFeature -inline fun InputMedia.requireInputMediaDocument(): InputMediaDocument = this as InputMediaDocument +@Deprecated("Renamed", ReplaceWith("requireTelegramMediaDocument", "dev.inmo.tgbotapi.extensions.utils.requireTelegramMediaDocument")) +inline fun TelegramMedia.requireInputMediaDocument(): TelegramMediaDocument = requireTelegramMediaDocument() @PreviewFeature -inline fun InputMedia.whenInputMediaPhoto(block: (InputMediaPhoto) -> T) = asInputMediaPhoto() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenTelegramMediaPhoto", "dev.inmo.tgbotapi.extensions.utils.whenTelegramMediaPhoto")) +inline fun TelegramMedia.whenInputMediaPhoto(block: (TelegramMediaPhoto) -> T) = whenTelegramMediaPhoto(block) @PreviewFeature -inline fun InputMedia.asInputMediaPhoto(): InputMediaPhoto? = this as? InputMediaPhoto +@Deprecated("Renamed", ReplaceWith("asTelegramMediaPhoto", "dev.inmo.tgbotapi.extensions.utils.asTelegramMediaPhoto")) +inline fun TelegramMedia.asInputMediaPhoto(): TelegramMediaPhoto? = asTelegramMediaPhoto() @PreviewFeature -inline fun InputMedia.requireInputMediaPhoto(): InputMediaPhoto = this as InputMediaPhoto +@Deprecated("Renamed", ReplaceWith("requireTelegramMediaPhoto", "dev.inmo.tgbotapi.extensions.utils.requireTelegramMediaPhoto")) +inline fun TelegramMedia.requireInputMediaPhoto(): TelegramMediaPhoto = requireTelegramMediaPhoto() @PreviewFeature -inline fun InputMedia.whenInputMediaVideo(block: (InputMediaVideo) -> T) = asInputMediaVideo() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenTelegramMediaVideo", "dev.inmo.tgbotapi.extensions.utils.whenTelegramMediaVideo")) +inline fun TelegramMedia.whenInputMediaVideo(block: (TelegramMediaVideo) -> T) = whenTelegramMediaVideo(block) @PreviewFeature -inline fun InputMedia.asInputMediaVideo(): InputMediaVideo? = this as? InputMediaVideo +@Deprecated("Renamed", ReplaceWith("asTelegramMediaVideo", "dev.inmo.tgbotapi.extensions.utils.asTelegramMediaVideo")) +inline fun TelegramMedia.asInputMediaVideo(): TelegramMediaVideo? = asTelegramMediaVideo() @PreviewFeature -inline fun InputMedia.requireInputMediaVideo(): InputMediaVideo = this as InputMediaVideo +@Deprecated("Renamed", ReplaceWith("requireTelegramMediaVideo", "dev.inmo.tgbotapi.extensions.utils.requireTelegramMediaVideo")) +inline fun TelegramMedia.requireInputMediaVideo(): TelegramMediaVideo = requireTelegramMediaVideo() @PreviewFeature -inline fun InputMedia.whenMediaGroupMemberInputMedia(block: (MediaGroupMemberInputMedia) -> T) = asMediaGroupMemberInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.whenMediaGroupMemberInputMedia(block: (MediaGroupMemberTelegramMedia) -> T) = whenMediaGroupMemberTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asMediaGroupMemberInputMedia(): MediaGroupMemberInputMedia? = this as? MediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("asMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.asMediaGroupMemberInputMedia(): MediaGroupMemberTelegramMedia? = asMediaGroupMemberTelegramMedia() @PreviewFeature -inline fun InputMedia.requireMediaGroupMemberInputMedia(): MediaGroupMemberInputMedia = - this as MediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("requireMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.requireMediaGroupMemberInputMedia(): MediaGroupMemberTelegramMedia = requireMediaGroupMemberTelegramMedia() @PreviewFeature -inline fun InputMedia.whenSizedInputMedia(block: (SizedInputMedia) -> T) = asSizedInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenSizedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenSizedTelegramMedia")) +inline fun TelegramMedia.whenSizedInputMedia(block: (SizedTelegramMedia) -> T) = whenSizedTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asSizedInputMedia(): SizedInputMedia? = this as? SizedInputMedia +@Deprecated("Renamed", ReplaceWith("asSizedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asSizedTelegramMedia")) +inline fun TelegramMedia.asSizedInputMedia(): SizedTelegramMedia? = asSizedTelegramMedia() @PreviewFeature -inline fun InputMedia.requireSizedInputMedia(): SizedInputMedia = this as SizedInputMedia +@Deprecated("Renamed", ReplaceWith("requireSizedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireSizedTelegramMedia")) +inline fun TelegramMedia.requireSizedInputMedia(): SizedTelegramMedia = requireSizedTelegramMedia() @PreviewFeature -inline fun InputMedia.whenThumbedInputMedia(block: (ThumbedInputMedia) -> T) = asThumbedInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenThumbedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenThumbedTelegramMedia")) +inline fun TelegramMedia.whenThumbedInputMedia(block: (ThumbedTelegramMedia) -> T) = whenThumbedTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asThumbedInputMedia(): ThumbedInputMedia? = this as? ThumbedInputMedia +@Deprecated("Renamed", ReplaceWith("asThumbedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asThumbedTelegramMedia")) +inline fun TelegramMedia.asThumbedInputMedia(): ThumbedTelegramMedia? = asThumbedTelegramMedia() @PreviewFeature -inline fun InputMedia.requireThumbedInputMedia(): ThumbedInputMedia = this as ThumbedInputMedia +@Deprecated("Renamed", ReplaceWith("requireThumbedTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireThumbedTelegramMedia")) +inline fun TelegramMedia.requireThumbedInputMedia(): ThumbedTelegramMedia = requireThumbedTelegramMedia() @PreviewFeature -inline fun InputMedia.whenTitledInputMedia(block: (TitledInputMedia) -> T) = asTitledInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenTitledTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenTitledTelegramMedia")) +inline fun TelegramMedia.whenTitledInputMedia(block: (TitledTelegramMedia) -> T) = whenTitledTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asTitledInputMedia(): TitledInputMedia? = this as? TitledInputMedia +@Deprecated("Renamed", ReplaceWith("asTitledTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asTitledTelegramMedia")) +inline fun TelegramMedia.asTitledInputMedia(): TitledTelegramMedia? = asTitledTelegramMedia() @PreviewFeature -inline fun InputMedia.requireTitledInputMedia(): TitledInputMedia = this as TitledInputMedia +@Deprecated("Renamed", ReplaceWith("requireTitledTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireTitledTelegramMedia")) +inline fun TelegramMedia.requireTitledInputMedia(): TitledTelegramMedia = requireTitledTelegramMedia() @PreviewFeature -inline fun InputMedia.whenVisualMediaGroupMemberInputMedia(block: (VisualMediaGroupMemberInputMedia) -> T) = asVisualMediaGroupMemberInputMedia() ?.let(block) +@Deprecated("Renamed", ReplaceWith("whenVisualMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.whenVisualMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.whenVisualMediaGroupMemberInputMedia(block: (VisualMediaGroupMemberTelegramMedia) -> T) = whenVisualMediaGroupMemberTelegramMedia(block) @PreviewFeature -inline fun InputMedia.asVisualMediaGroupMemberInputMedia(): VisualMediaGroupMemberInputMedia? = - this as? VisualMediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("asVisualMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.asVisualMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.asVisualMediaGroupMemberInputMedia(): VisualMediaGroupMemberTelegramMedia? = asVisualMediaGroupMemberTelegramMedia() @PreviewFeature -inline fun InputMedia.requireVisualMediaGroupMemberInputMedia(): VisualMediaGroupMemberInputMedia = - this as VisualMediaGroupMemberInputMedia +@Deprecated("Renamed", ReplaceWith("requireVisualMediaGroupMemberTelegramMedia", "dev.inmo.tgbotapi.extensions.utils.requireVisualMediaGroupMemberTelegramMedia")) +inline fun TelegramMedia.requireVisualMediaGroupMemberInputMedia(): VisualMediaGroupMemberTelegramMedia = requireVisualMediaGroupMemberTelegramMedia() + +@PreviewFeature +inline fun TelegramMedia.whenAudioMediaGroupMemberTelegramMedia(block: (AudioMediaGroupMemberTelegramMedia) -> T) = asAudioMediaGroupMemberTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asAudioMediaGroupMemberTelegramMedia(): AudioMediaGroupMemberTelegramMedia? = + this as? AudioMediaGroupMemberTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireAudioMediaGroupMemberTelegramMedia(): AudioMediaGroupMemberTelegramMedia = + this as AudioMediaGroupMemberTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.whenDocumentMediaGroupMemberTelegramMedia(block: (DocumentMediaGroupMemberTelegramMedia) -> T) = asDocumentMediaGroupMemberTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asDocumentMediaGroupMemberTelegramMedia(): DocumentMediaGroupMemberTelegramMedia? = + this as? DocumentMediaGroupMemberTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireDocumentMediaGroupMemberTelegramMedia(): DocumentMediaGroupMemberTelegramMedia = + this as DocumentMediaGroupMemberTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.whenDuratedTelegramMedia(block: (DuratedTelegramMedia) -> T) = asDuratedTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asDuratedTelegramMedia(): DuratedTelegramMedia? = this as? DuratedTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireDuratedTelegramMedia(): DuratedTelegramMedia = this as DuratedTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.whenTelegramMediaAnimation(block: (TelegramMediaAnimation) -> T) = asTelegramMediaAnimation() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asTelegramMediaAnimation(): TelegramMediaAnimation? = this as? TelegramMediaAnimation + +@PreviewFeature +inline fun TelegramMedia.requireTelegramMediaAnimation(): TelegramMediaAnimation = this as TelegramMediaAnimation + +@PreviewFeature +inline fun TelegramMedia.whenTelegramMediaAudio(block: (TelegramMediaAudio) -> T) = asTelegramMediaAudio() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asTelegramMediaAudio(): TelegramMediaAudio? = this as? TelegramMediaAudio + +@PreviewFeature +inline fun TelegramMedia.requireTelegramMediaAudio(): TelegramMediaAudio = this as TelegramMediaAudio + +@PreviewFeature +inline fun TelegramMedia.whenTelegramMediaDocument(block: (TelegramMediaDocument) -> T) = asTelegramMediaDocument() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asTelegramMediaDocument(): TelegramMediaDocument? = this as? TelegramMediaDocument + +@PreviewFeature +inline fun TelegramMedia.requireTelegramMediaDocument(): TelegramMediaDocument = this as TelegramMediaDocument + +@PreviewFeature +inline fun TelegramMedia.whenTelegramMediaPhoto(block: (TelegramMediaPhoto) -> T) = asTelegramMediaPhoto() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asTelegramMediaPhoto(): TelegramMediaPhoto? = this as? TelegramMediaPhoto + +@PreviewFeature +inline fun TelegramMedia.requireTelegramMediaPhoto(): TelegramMediaPhoto = this as TelegramMediaPhoto + +@PreviewFeature +inline fun TelegramMedia.whenTelegramMediaVideo(block: (TelegramMediaVideo) -> T) = asTelegramMediaVideo() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asTelegramMediaVideo(): TelegramMediaVideo? = this as? TelegramMediaVideo + +@PreviewFeature +inline fun TelegramMedia.requireTelegramMediaVideo(): TelegramMediaVideo = this as TelegramMediaVideo + +@PreviewFeature +inline fun TelegramMedia.whenMediaGroupMemberTelegramMedia(block: (MediaGroupMemberTelegramMedia) -> T) = asMediaGroupMemberTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asMediaGroupMemberTelegramMedia(): MediaGroupMemberTelegramMedia? = this as? MediaGroupMemberTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireMediaGroupMemberTelegramMedia(): MediaGroupMemberTelegramMedia = + this as MediaGroupMemberTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.whenSizedTelegramMedia(block: (SizedTelegramMedia) -> T) = asSizedTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asSizedTelegramMedia(): SizedTelegramMedia? = this as? SizedTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireSizedTelegramMedia(): SizedTelegramMedia = this as SizedTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.whenThumbedTelegramMedia(block: (ThumbedTelegramMedia) -> T) = asThumbedTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asThumbedTelegramMedia(): ThumbedTelegramMedia? = this as? ThumbedTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireThumbedTelegramMedia(): ThumbedTelegramMedia = this as ThumbedTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.whenTitledTelegramMedia(block: (TitledTelegramMedia) -> T) = asTitledTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asTitledTelegramMedia(): TitledTelegramMedia? = this as? TitledTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireTitledTelegramMedia(): TitledTelegramMedia = this as TitledTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.whenVisualMediaGroupMemberTelegramMedia(block: (VisualMediaGroupMemberTelegramMedia) -> T) = asVisualMediaGroupMemberTelegramMedia() ?.let(block) + +@PreviewFeature +inline fun TelegramMedia.asVisualMediaGroupMemberTelegramMedia(): VisualMediaGroupMemberTelegramMedia? = + this as? VisualMediaGroupMemberTelegramMedia + +@PreviewFeature +inline fun TelegramMedia.requireVisualMediaGroupMemberTelegramMedia(): VisualMediaGroupMemberTelegramMedia = + this as VisualMediaGroupMemberTelegramMedia @PreviewFeature inline fun Update.whenCallbackQueryUpdate(block: (CallbackQueryUpdate) -> T) = asCallbackQueryUpdate() ?.let(block) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CommonMessageConversations.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CommonMessageConversations.kt index 2909aa9637..5da1e67ef5 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CommonMessageConversations.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/CommonMessageConversations.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommonMessage +import dev.inmo.tgbotapi.types.message.content.MessageContent +import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage import kotlinx.coroutines.flow.* /** diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt index 1866a5137e..d36c67f3d4 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt @@ -2,9 +2,8 @@ package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.MessageContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithContent.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithContent.kt index 4e2b2f18ba..c396516719 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithContent.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithContent.kt @@ -3,8 +3,9 @@ package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MessageContent +import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent inline fun ContentMessage<*>.withContent() = if (content is T) { this as ContentMessage } else { null } inline fun ContentMessage<*>.requireWithContent() = withContent()!! @@ -12,7 +13,8 @@ inline fun ContentMessage<*>.requireWithContent() = inline fun CommonMessage<*>.withContent() = if (content is T) { this as CommonMessage } else { null } inline fun CommonMessage<*>.requireWithContent() = withContent()!! -inline fun PossiblySentViaBotCommonMessage<*>.withContent() = if (content is T) { this as PossiblySentViaBotCommonMessage } else { null } +inline fun PossiblySentViaBotCommonMessage<*>.withContent() = if (content is T) { this as PossiblySentViaBotCommonMessage +} else { null } inline fun PossiblySentViaBotCommonMessage<*>.requireWithContent() = withContent()!! inline fun ChannelContentMessage<*>.withContent() = if (content is T) { this as ChannelContentMessage } else { null } diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/FilesDownloading.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/FilesDownloading.kt index 5713ae8109..34cee8856c 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/FilesDownloading.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/FilesDownloading.kt @@ -4,11 +4,12 @@ import dev.inmo.tgbotapi.types.files.PathedFile import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper import io.ktor.client.HttpClient import io.ktor.client.request.get +import io.ktor.client.statement.readBytes suspend fun HttpClient.loadFile( telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, filePath: String -) = get("${telegramAPIUrlsKeeper.fileBaseUrl}/$filePath") +) = get("${telegramAPIUrlsKeeper.fileBaseUrl}/$filePath").readBytes() suspend fun HttpClient.loadFile( telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/TextCaptionBotCommandsParser.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/TextCaptionBotCommandsParser.kt index ddcbd77ebd..09bd5a19fe 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/TextCaptionBotCommandsParser.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/TextCaptionBotCommandsParser.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.extensions.utils.extensions -import dev.inmo.tgbotapi.CommonAbstracts.TextedWithTextSources -import dev.inmo.tgbotapi.types.MessageEntity.textsources.BotCommandTextSource -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource +import dev.inmo.tgbotapi.abstracts.TextedWithTextSources +import dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource +import dev.inmo.tgbotapi.types.message.textsources.TextSource import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.TextContent diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/UpdateChatRetriever.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/UpdateChatRetriever.kt index 1baf85da06..426b6c8990 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/UpdateChatRetriever.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/UpdateChatRetriever.kt @@ -1,15 +1,15 @@ package dev.inmo.tgbotapi.extensions.utils.extensions -import dev.inmo.tgbotapi.CommonAbstracts.FromUser -import dev.inmo.tgbotapi.CommonAbstracts.WithUser +import dev.inmo.tgbotapi.abstracts.FromUser +import dev.inmo.tgbotapi.abstracts.WithUser import dev.inmo.tgbotapi.extensions.utils.asUser import dev.inmo.tgbotapi.extensions.utils.shortcuts.chat -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.types.update.media_group.* import dev.inmo.tgbotapi.utils.PreviewFeature @PreviewFeature diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/CallbackQuery.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/CallbackQuery.kt index ea1f5161ca..3b2376dd68 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/CallbackQuery.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/CallbackQuery.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.extensions.utils.* -import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery import dev.inmo.tgbotapi.types.InlineMessageIdentifier import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent +import dev.inmo.tgbotapi.types.message.content.MessageContent import dev.inmo.tgbotapi.utils.RiskFeature @RiskFeature(RawFieldsUsageWarning) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatJoinRequest.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatJoinRequest.kt index badefba058..0a30d062d3 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatJoinRequest.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatJoinRequest.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.types.ChatInviteLink -import dev.inmo.tgbotapi.types.ChatJoinRequest +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest import dev.inmo.tgbotapi.utils.RiskFeature @RiskFeature(RawFieldsUsageWarning) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt index f4346c3efd..7eee85518d 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.types.ChatInviteLink -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember -import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.chat.member.ChatMember +import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.utils.RiskFeature @RiskFeature(RawFieldsUsageWarning) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt index e264605390..1bb5856bfc 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt @@ -2,13 +2,14 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.extensions.utils.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.Chat -import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.chat.* +import dev.inmo.tgbotapi.types.chat.CommonBot +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.dice.Dice import dev.inmo.tgbotapi.types.files.* -import dev.inmo.tgbotapi.types.files.sticker.Sticker +import dev.inmo.tgbotapi.types.files.Sticker import dev.inmo.tgbotapi.types.games.Game import dev.inmo.tgbotapi.types.location.Location import dev.inmo.tgbotapi.types.message.ChatEvents.* diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Poll.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Poll.kt index 00f20a33b8..c4ede211b5 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Poll.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Poll.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.extensions.utils.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.polls.* import dev.inmo.tgbotapi.utils.RiskFeature import kotlinx.serialization.json.jsonPrimitive diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Sticker.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Sticker.kt index 9de78af393..4a399695be 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Sticker.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Sticker.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.files.sticker.* +import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.types.stickers.MaskPosition inline val Sticker.file_id: FileId diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/EntitiesBuilder.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/EntitiesBuilder.kt index eda972aaeb..a60e862b2d 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/EntitiesBuilder.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/EntitiesBuilder.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.extensions.utils.formatting import dev.inmo.micro_utils.common.joinTo -import dev.inmo.tgbotapi.types.MessageEntity.textsources.* -import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.message.textsources.* +import dev.inmo.tgbotapi.types.chat.User typealias EntitiesBuilderBody = EntitiesBuilder.() -> Unit val newLine = regular("\n") diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt index cffa0cd74f..289d5cafe8 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting.kt @@ -1,9 +1,8 @@ package dev.inmo.tgbotapi.extensions.utils.formatting import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.link -import dev.inmo.tgbotapi.types.chat.abstracts.* -import dev.inmo.tgbotapi.types.chat.abstracts.extended.ExtendedPublicChat +import dev.inmo.tgbotapi.types.message.textsources.link +import dev.inmo.tgbotapi.types.chat.* import dev.inmo.tgbotapi.types.message.abstracts.Message private const val internalLinkBeginning = "https://t.me" diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/ResendingTextFormatting.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/ResendingTextFormatting.kt index ef809d74b3..e7632a8c62 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/ResendingTextFormatting.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/ResendingTextFormatting.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.extensions.utils.formatting import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.ParseMode.* +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList +import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.types.message.content.TextContent fun createFormattedText( diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt index 3368bb37dc..75b491260b 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.extensions.utils.formatting import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ParseMode.* +import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.utils.extensions.* const val markdownBoldControl = "*" diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/CommandsShortcuts.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/CommandsShortcuts.kt index 2380f9071a..74cdd015e2 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/CommandsShortcuts.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/CommandsShortcuts.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.extensions.utils.shortcuts import dev.inmo.tgbotapi.extensions.utils.onlyTextContentMessages import dev.inmo.tgbotapi.extensions.utils.updates.asContentMessagesFlow -import dev.inmo.tgbotapi.types.MessageEntity.textsources.BotCommandTextSource -import dev.inmo.tgbotapi.types.MessageEntity.textsources.RegularTextSource +import dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource +import dev.inmo.tgbotapi.types.message.textsources.RegularTextSource import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.TextContent import kotlinx.coroutines.flow.* diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt index 9669f9ffa0..a2b75c0b95 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt @@ -6,12 +6,10 @@ import dev.inmo.tgbotapi.extensions.utils.updates.asContentMessagesFlow import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.* -import dev.inmo.tgbotapi.types.message.content.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.* -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent -import dev.inmo.tgbotapi.types.message.payments.InvoiceContent -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.InvoiceContent +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter import dev.inmo.tgbotapi.utils.RiskFeature diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/MediaGroupsShortcuts.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/MediaGroupsShortcuts.kt index 8e25886336..301d38e3e1 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/MediaGroupsShortcuts.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/MediaGroupsShortcuts.kt @@ -2,11 +2,11 @@ package dev.inmo.tgbotapi.extensions.utils.shortcuts import dev.inmo.tgbotapi.requests.send.media.SendMediaGroup import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.ForwardInfo import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate val List>.forwardInfo: ForwardInfo? get() = firstOrNull() ?.forwardInfo @@ -33,7 +33,7 @@ fun List>.createResend( replyTo: MessageIdentifier? = null ) = SendMediaGroup( chatId, - map { it.content.toMediaGroupMemberInputMedia() }, + map { it.content.toMediaGroupMemberTelegramMedia() }, disableNotification, protectContent, replyTo diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsMultipartFile.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsMultipartFile.kt new file mode 100644 index 0000000000..d52d2a9c90 --- /dev/null +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsMultipartFile.kt @@ -0,0 +1,36 @@ +package dev.inmo.tgbotapi.extensions.utils.types.files + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.DownloadFileStream +import dev.inmo.tgbotapi.requests.abstracts.* +import dev.inmo.tgbotapi.requests.get.GetFile +import dev.inmo.tgbotapi.types.files.PathedFile +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent +import dev.inmo.tgbotapi.utils.* + +suspend fun multipartFile( + downloadStreamAllocator: ByteReadChannelAllocator, + pathedFile: PathedFile +): MultipartFile { + return downloadStreamAllocator.asMultipartFile(pathedFile.fileName) +} + +suspend fun TelegramBot.multipartFile( + pathedFile: PathedFile +): MultipartFile = multipartFile( + execute(DownloadFileStream(pathedFile.filePath)), + pathedFile +) + +suspend fun TelegramBot.multipartFile( + fileId: FileId +): MultipartFile = multipartFile(execute(GetFile(fileId))) + +suspend fun TelegramBot.multipartFile( + file: TelegramMediaFile +): MultipartFile = multipartFile(file.fileId) + +suspend fun TelegramBot.multipartFile( + content: MediaContent +): MultipartFile = multipartFile(content.media) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsStorageFile.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsStorageFile.kt index 53b192e74e..323617f3c4 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsStorageFile.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsStorageFile.kt @@ -5,10 +5,11 @@ import dev.inmo.tgbotapi.requests.DownloadFileStream import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.requests.get.GetFile import dev.inmo.tgbotapi.types.files.PathedFile -import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent import dev.inmo.tgbotapi.utils.* +@Deprecated("StorageFile now is not necessary") suspend fun convertToStorageFile( downloadStreamAllocator: ByteReadChannelAllocator, pathedFile: PathedFile @@ -18,6 +19,7 @@ suspend fun convertToStorageFile( ) } +@Deprecated("StorageFile now is not necessary") suspend fun TelegramBot.convertToStorageFile( pathedFile: PathedFile ): StorageFile = convertToStorageFile( @@ -25,14 +27,17 @@ suspend fun TelegramBot.convertToStorageFile( pathedFile ) +@Deprecated("StorageFile now is not necessary") suspend fun TelegramBot.convertToStorageFile( fileId: FileId ): StorageFile = convertToStorageFile(execute(GetFile(fileId))) +@Deprecated("StorageFile now is not necessary") suspend fun TelegramBot.convertToStorageFile( file: TelegramMediaFile ): StorageFile = convertToStorageFile(file.fileId) +@Deprecated("StorageFile now is not necessary") suspend fun TelegramBot.convertToStorageFile( content: MediaContent ): StorageFile = convertToStorageFile(content.media) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/BaseMessagesUpdatesConversations.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/BaseMessagesUpdatesConversations.kt index 395f00cbf8..0caa1805cc 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/BaseMessagesUpdatesConversations.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/BaseMessagesUpdatesConversations.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.extensions.utils.updates -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.* +import dev.inmo.tgbotapi.types.update.media_group.* import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.filterIsInstance diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CallbackQueryUpdatesConversations.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CallbackQueryUpdatesConversations.kt index aaf1f49a13..809da4c258 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CallbackQueryUpdatesConversations.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CallbackQueryUpdatesConversations.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.extensions.utils.updates -import dev.inmo.tgbotapi.types.CallbackQuery.* +import dev.inmo.tgbotapi.types.queries.callback.* import dev.inmo.tgbotapi.types.update.CallbackQueryUpdate import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CommandsFilters.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CommandsFilters.kt index 864d0c77ef..a20594e329 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CommandsFilters.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/CommandsFilters.kt @@ -5,6 +5,7 @@ import dev.inmo.tgbotapi.extensions.utils.shortcuts.* import dev.inmo.tgbotapi.types.MessageEntity.textsources.* import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.TextContent +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate import kotlinx.coroutines.flow.Flow diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt index 870031df7e..8cd45e968e 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.extensions.utils.updates import dev.inmo.tgbotapi.types.ChatId -import dev.inmo.tgbotapi.types.chat.abstracts.Chat -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.filter diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesUtils.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesUtils.kt index 63a3983c87..27439971cf 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesUtils.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesUtils.kt @@ -4,8 +4,8 @@ import dev.inmo.tgbotapi.types.MediaGroupIdentifier import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage import dev.inmo.tgbotapi.types.update.* -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.* +import dev.inmo.tgbotapi.types.update.media_group.* /** * @return If [this] is [SentMediaGroupUpdate] - [Update.updateId] of [last] element, or its own [Update.updateId] diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt index b58806440a..b0c8550231 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt @@ -10,11 +10,10 @@ import dev.inmo.tgbotapi.extensions.utils.updates.lastUpdateIdentifier import dev.inmo.tgbotapi.requests.GetUpdates import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.update.* -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.updateshandlers.* -import dev.inmo.tgbotapi.utils.* -import io.ktor.client.features.HttpRequestTimeoutException +import io.ktor.client.plugins.HttpRequestTimeoutException import io.ktor.utils.io.CancellationException import kotlinx.coroutines.* import kotlinx.coroutines.flow.* diff --git a/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt b/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt index 5111c46980..04d39ed179 100644 --- a/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt +++ b/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt @@ -10,11 +10,11 @@ import dev.inmo.tgbotapi.types.update.abstracts.Update import dev.inmo.tgbotapi.types.update.abstracts.UpdateDeserializationStrategy import dev.inmo.tgbotapi.updateshandlers.* import dev.inmo.tgbotapi.updateshandlers.webhook.WebhookPrivateKeyConfig -import io.ktor.application.call -import io.ktor.request.receiveText -import io.ktor.response.respond -import io.ktor.routing.* +import io.ktor.server.application.call import io.ktor.server.engine.* +import io.ktor.server.request.receiveText +import io.ktor.server.response.respond +import io.ktor.server.routing.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.asCoroutineDispatcher import java.util.concurrent.Executors diff --git a/tgbotapi.webapps/src/jsMain/kotlin/dev/inmo/tgbotapi/webapps/WebAppUser.kt b/tgbotapi.webapps/src/jsMain/kotlin/dev/inmo/tgbotapi/webapps/WebAppUser.kt index a192b422ff..92f7b87fd2 100644 --- a/tgbotapi.webapps/src/jsMain/kotlin/dev/inmo/tgbotapi/webapps/WebAppUser.kt +++ b/tgbotapi.webapps/src/jsMain/kotlin/dev/inmo/tgbotapi/webapps/WebAppUser.kt @@ -2,6 +2,8 @@ package dev.inmo.tgbotapi.webapps import dev.inmo.micro_utils.language_codes.IetfLanguageCode import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.CommonBot +import dev.inmo.tgbotapi.types.chat.CommonUser external interface WebAppUser { val id: Identifier