diff --git a/CHANGELOG.md b/CHANGELOG.md index 59783cda06..08eae08ea7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,33 @@ # TelegramBotAPI changelog +## 3.0.0 + +**ALL OLD DEPRECATIONS HAVE BEEN REMOVED** + +**`copyMessage` HAVE CHANGED THEIR SIGNATURE BY SWAPPING FROM AND TO CHAT IDS** + +* `Versions`: + * `Kotlin`: `1.6.21` -> `1.7.10` + * `Serialization`: `1.3.3` -> `1.4.0-RC` + * `Korlibs`: `2.7.0` -> `3.0.0` + * `UUID`: `0.4.1` -> `0.5.0` + * `MicroUtils`: `0.11.13` -> `0.12.0` +* `Core`: + * Interface `ReplyMakrup` has been renamed to `WithReplyMarkup` to correspond its purpose + * Data class `LeftChatMember` has been renamed to `LeftChatMemberEvent` to avoid type ambiguite with the other `LeftChatMember` + * `ForwardInfo` hierarchy has been fully reworked: + * `AnonymousForwardInfo` -> `ForwardInfo.ByAnonymous` + * `UserForwardInfo` -> `ForwardInfo.ByUser` + * `ForwardFromPublicChatInfo` -> `ForwardInfo.PublicChat` + * `ForwardFromChannelInfo` -> `ForwardInfo.PublicChat.FromChannel` + * `ForwardFromSupergroupInfo` -> `ForwardInfo.PublicChat.FromSupergroup` + * `ForwardInfo.PublicChat.SentByChannel` ___has been created___ +* `API`: + * Add new `Flow`-based live locations API + * Add `sendLocation` for sending live locations +* `Utils`: + * **BREAKING CHANGES** Now all new classcasts (like `Chat.ifPrivateChat` etc.) have been rewritten to be generated with `ksp` and `kotlin poet` + ## 2.2.2 * `Utils`: diff --git a/README.md b/README.md index cdc25d9127..57749cc97f 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,17 @@ # TelegramBotAPI [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi) [![Supported version](https://img.shields.io/badge/Telegram%20Bot%20API-6.1-blue)](https://core.telegram.org/bots/api-changelog#june-20-2022) -| [![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin) [![Build Status](https://github.com/InsanusMokrassar/TelegramBotAPI/workflows/Build/badge.svg)](https://github.com/InsanusMokrassar/TelegramBotAPI/actions) [![Small survey](https://img.shields.io/static/v1?label=Google&message=Survey&color=blue&logo=google-sheets)](https://docs.google.com/forms/d/e/1FAIpQLSctdJHT_aEniyYT0-IUAEfo1hsIlezX2owlkEAYX4KPl2V2_A/viewform?usp=sf_link) [![Chat in Telegram](https://img.shields.io/static/v1?label=Telegram&message=Chat&color=blue&logo=telegram)](https://t.me/InMoTelegramBotAPI) | -|:---:| -| [![Create bot](https://img.shields.io/static/v1?label=Github&message=Template&color=blue&logo=github)](https://github.com/InsanusMokrassar/TelegramBotAPI-bot_template/generate) [![Examples](https://img.shields.io/static/v1?label=Github&message=Examples&color=blue&logo=github)](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/) [![KDocs](https://img.shields.io/static/v1?label=Dokka&message=KDocs&color=blue&logo=kotlin)](https://tgbotapi.inmo.dev/index.html) [![Mini tutorial](https://img.shields.io/static/v1?label=Bookstack&message=Tutorial&color=blue&logo=bookstack)](https://bookstack.inmo.dev/books/telegrambotapi/chapter/introduction-tutorial) | -| [![Telegram Channel](./resources/tg_channel_qr.jpg)](https://t.me/InMoTelegramBotAPI) | +| Docs | [![KDocs](https://img.shields.io/static/v1?label=Dokka&message=KDocs&color=blue&logo=kotlin)](https://tgbotapi.inmo.dev/index.html) [![Mini tutorial](https://img.shields.io/static/v1?label=Bookstack&message=Tutorial&color=blue&logo=bookstack)](https://bookstack.inmo.dev/books/telegrambotapi/chapter/introduction-tutorial) | +|:---:|:---:| +| Useful repos | [![Create bot](https://img.shields.io/static/v1?label=Github&message=Template&color=blue&logo=github)](https://github.com/InsanusMokrassar/TelegramBotAPI-bot_template/generate) [![Examples](https://img.shields.io/static/v1?label=Github&message=Examples&color=blue&logo=github)](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/) | +| Misc | [![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin) [![Small survey](https://img.shields.io/static/v1?label=Google&message=Survey&color=blue&logo=google-sheets)](https://docs.google.com/forms/d/e/1FAIpQLSctdJHT_aEniyYT0-IUAEfo1hsIlezX2owlkEAYX4KPl2V2_A/viewform?usp=sf_link) | + + + +

+ + + +

Hello! This is a set of libraries for working with Telegram Bot API. diff --git a/build.gradle b/build.gradle index 6b49962838..8be94d48a0 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,7 @@ buildscript { dependencies { classpath libs.kotlin.gradle.plugin + classpath libs.kotlin.ksp.plugin classpath libs.kotlin.serialization.plugin classpath libs.kotlin.dokka.plugin classpath libs.github.release.plugin diff --git a/gradle.properties b/gradle.properties index 6271ea497e..f56050c6a2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,4 +6,4 @@ kotlin.incremental=true kotlin.incremental.js=true library_group=dev.inmo -library_version=2.2.2 +library_version=3.0.0 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b2776fb4d2..3674f3a5cc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,17 +1,19 @@ [versions] -kotlin = "1.6.21" -kotlin-serialization = "1.3.3" +kotlin = "1.7.10" +kotlin-serialization = "1.4.0-RC" kotlin-coroutines = "1.6.4" -kotlin-gradle-plugin = "7.0.4" javax-activation = "1.1.1" -korlibs = "2.7.0" -uuid = "0.4.1" +korlibs = "3.0.0" +uuid = "0.5.0" ktor = "2.0.3" -microutils = "0.11.13" +ksp = "1.7.10-1.0.6" +kotlin-poet = "1.12.0" + +microutils = "0.12.0" github-release-plugin = "2.4.1" @@ -46,14 +48,21 @@ microutils-languageCodes = { module = "dev.inmo:micro_utils.language_codes", ver microutils-ktor-common = { module = "dev.inmo:micro_utils.ktor.common", version.ref = "microutils" } microutils-fsm-common = { module = "dev.inmo:micro_utils.fsm.common", version.ref = "microutils" } +# ksp dependencies + +kotlin-poet = { module = "com.squareup:kotlinpoet-ksp", version.ref = "kotlin-poet" } +ksp = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" } + # buildscript classpaths kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +kotlin-ksp-plugin = { module = "com.google.devtools.ksp:symbol-processing-gradle-plugin", version.ref = "ksp" } kotlin-serialization-plugin = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } kotlin-dokka-plugin = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "kotlin" } github-release-plugin = { module = "com.github.breadmoirai:github-release", version.ref = "github-release-plugin" } [plugins] +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } diff --git a/settings.gradle b/settings.gradle index 6cf2139f0b..d8603ea158 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,6 +12,8 @@ pluginManagement { } include ":tgbotapi.core" +include ":tgbotapi.ksp:processor" +include ":tgbotapi.ksp:lib" include ":tgbotapi.api" include ":tgbotapi.utils" include ":tgbotapi.behaviour_builder" diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveFlowLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveFlowLocation.kt new file mode 100644 index 0000000000..6caa782d64 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveFlowLocation.kt @@ -0,0 +1,151 @@ +package dev.inmo.tgbotapi.extensions.api + +import dev.inmo.micro_utils.coroutines.LinkedSupervisorJob +import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions +import dev.inmo.tgbotapi.abstracts.* +import dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.extensions.api.edit.location.live.editLiveLocation +import dev.inmo.tgbotapi.extensions.api.send.sendLiveLocation +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.location.LiveLocation +import dev.inmo.tgbotapi.types.location.Location +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.LocationContent +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlinx.serialization.Serializable +import kotlin.js.JsName +import kotlin.jvm.JvmName +import kotlin.math.ceil + +@Serializable +data class EditLiveLocationInfo( + override val latitude: Double, + override val longitude: Double, + override val horizontalAccuracy: Meters? = null, + override val heading: Degrees? = null, + override val proximityAlertRadius: Meters? = null, + override val replyMarkup: InlineKeyboardMarkup? = null +) : Locationed, HorizontallyAccured, ProximityAlertable, Headed, WithReplyMarkup + +/** + * Will [sendLiveLocation] with the first [EditLiveLocationInfo] data and update than. Each [liveTimeMillis] passing, + * the message will be sent again and new edits will be applied to the new message + */ +suspend fun TelegramBot.handleLiveLocation( + chatId: ChatIdentifier, + locationsFlow: Flow, + liveTimeMillis: Long = defaultLivePeriodDelayMillis, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null +) { + var currentLiveLocationMessage: ContentMessage? = null + val updateMessageJob = CoroutineScope(currentCoroutineContext().LinkedSupervisorJob()).launchSafelyWithoutExceptions(start = CoroutineStart.LAZY) { + while (isActive) { + delay(liveTimeMillis) + // Remove previous location message info to resend live location message + currentLiveLocationMessage = null + } + } + locationsFlow.collect { + val capturedLiveLocationMessage = currentLiveLocationMessage + if (capturedLiveLocationMessage == null) { + updateMessageJob.start() + currentLiveLocationMessage = sendLiveLocation( + chatId, + it.latitude, + it.longitude, + ceil(liveTimeMillis.toDouble() / 1000).toInt(), + it.horizontalAccuracy, + it.heading, + it.proximityAlertRadius, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + it.replyMarkup + ) + } else { + editLiveLocation( + capturedLiveLocationMessage, + it.latitude, + it.longitude, + it.horizontalAccuracy, + it.heading, + it.proximityAlertRadius, + it.replyMarkup + ) + } + } +} + +/** + * Will apply [Flow.map] to the [locationsFlow] to create [EditLiveLocationInfo] and pass the result flow to the + * [handleLiveLocation] with [Flow] typed by [EditLiveLocationInfo] + */ +@JvmName("handleLiveLocationWithLocation") +@JsName("handleLiveLocationWithLocation") +suspend fun TelegramBot.handleLiveLocation( + chatId: ChatIdentifier, + locationsFlow: Flow, + liveTimeMillis: Long = defaultLivePeriodDelayMillis, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null +) { + handleLiveLocation( + chatId, + locationsFlow.map { + EditLiveLocationInfo( + it.latitude, + it.longitude, + it.horizontalAccuracy, + (it as? LiveLocation) ?.heading, + (it as? LiveLocation) ?.proximityAlertRadius, + (it as? WithReplyMarkup) ?.replyMarkup as? InlineKeyboardMarkup + ) + }, + liveTimeMillis, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply + ) +} + +/** + * Will apply [Flow.map] to the [locationsFlow] to create [EditLiveLocationInfo] and pass the result flow to the + * [handleLiveLocation] with [Flow] typed by [EditLiveLocationInfo] + */ +@JvmName("handleLiveLocationWithLatLong") +@JsName("handleLiveLocationWithLatLong") +suspend fun TelegramBot.handleLiveLocation( + chatId: ChatIdentifier, + locationsFlow: Flow>, + liveTimeMillis: Long = defaultLivePeriodDelayMillis, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null +) { + handleLiveLocation( + chatId, + locationsFlow.map { (lat, long) -> + EditLiveLocationInfo( + lat, + long + ) + }, + liveTimeMillis, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply + ) +} 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 3ddc68161e..5cb4239dd1 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 @@ -229,3 +229,224 @@ suspend inline fun TelegramBot.copyMessage( allowSendingWithoutReply: Boolean? = null, replyMarkup: KeyboardMarkup? = null ) = copyMessage(message.chat, message.messageId, toChat, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChatId: ChatIdentifier, + fromChatId: ChatIdentifier, + messageId: MessageIdentifier, + text: String? = null, + parseMode: ParseMode? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = execute( + CopyMessage( + fromChatId, + messageId, + toChatId, + text, + parseMode, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup + ) +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChatId: ChatIdentifier, + fromChat: Chat, + messageId: MessageIdentifier, + text: String? = null, + parseMode: ParseMode? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = copyMessage( + toChatId, + fromChat.id, + messageId, + text, + parseMode, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChat: Chat, + fromChatId: ChatIdentifier, + messageId: MessageIdentifier, + text: String? = null, + parseMode: ParseMode? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = copyMessage( + toChat.id, + fromChatId, + messageId, + text, + parseMode, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChat: Chat, + fromChat: Chat, + messageId: MessageIdentifier, + text: String? = null, + parseMode: ParseMode? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = copyMessage( + toChat.id, + fromChat.id, + messageId, + text, + parseMode, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChatId: ChatIdentifier, + fromChatId: ChatIdentifier, + messageId: MessageIdentifier, + entities: TextSourcesList, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = execute( + CopyMessage( + fromChatId, + messageId, + toChatId, + entities, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup + ) +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChatId: ChatIdentifier, + fromChat: Chat, + messageId: MessageIdentifier, + entities: TextSourcesList, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = copyMessage( + toChatId, + fromChat.id, + messageId, + entities, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChat: Chat, + fromChatId: ChatIdentifier, + messageId: MessageIdentifier, + entities: TextSourcesList, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = copyMessage( + toChat.id, + fromChatId, + messageId, + entities, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend inline fun TelegramBot.copyMessage( + toChat: Chat, + fromChat: Chat, + messageId: MessageIdentifier, + entities: TextSourcesList, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = copyMessage( + toChat.id, + fromChat.id, + messageId, + entities, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/OldCopyMessage.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/OldCopyMessage.kt deleted file mode 100644 index f546a93451..0000000000 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/OldCopyMessage.kt +++ /dev/null @@ -1,180 +0,0 @@ -package dev.inmo.tgbotapi.extensions.api.send - -import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.send.CopyMessage -import dev.inmo.tgbotapi.requests.send.OrderChangingDeprecationWarn -import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList -import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.message.ParseMode -import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup -import dev.inmo.tgbotapi.types.chat.Chat -import dev.inmo.tgbotapi.types.message.abstracts.Message - -// TODO:: Swap fromChatId and toChatId for more correct order of parameters - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChatId: ChatIdentifier, - toChatId: ChatIdentifier, - messageId: MessageIdentifier, - text: String? = null, - parseMode: ParseMode? = null, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = execute( - CopyMessage( - fromChatId, - messageId, - toChatId, - text, - parseMode, - disableNotification, - protectContent, - replyToMessageId, - allowSendingWithoutReply, - replyMarkup - ) -) - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChat: Chat, - toChatId: ChatIdentifier, - messageId: MessageIdentifier, - text: String? = null, - parseMode: ParseMode? = null, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = copyMessage(fromChat.id, toChatId, messageId, text, parseMode, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChatId: ChatIdentifier, - toChat: Chat, - messageId: MessageIdentifier, - text: String? = null, - parseMode: ParseMode? = null, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = copyMessage(fromChatId, toChat.id, messageId, text, parseMode, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChat: Chat, - toChat: Chat, - messageId: MessageIdentifier, - text: String? = null, - parseMode: ParseMode? = null, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = copyMessage(fromChat.id, toChat.id, messageId, text, parseMode, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) - - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChatId: ChatIdentifier, - toChatId: ChatIdentifier, - messageId: MessageIdentifier, - entities: TextSourcesList, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = execute( - CopyMessage( - fromChatId, - messageId, - toChatId, - entities, - disableNotification, - protectContent, - replyToMessageId, - allowSendingWithoutReply, - replyMarkup - ) -) - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChat: Chat, - toChatId: ChatIdentifier, - messageId: MessageIdentifier, - entities: TextSourcesList, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = copyMessage(fromChat.id, toChatId, messageId, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChatId: ChatIdentifier, - toChat: Chat, - messageId: MessageIdentifier, - entities: TextSourcesList, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = copyMessage(fromChatId, toChat.id, messageId, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) - -/** - * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or - * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param - */ -@Deprecated(OrderChangingDeprecationWarn) -suspend inline fun TelegramBot.copyMessage( - fromChat: Chat, - toChat: Chat, - messageId: MessageIdentifier, - entities: TextSourcesList, - disableNotification: Boolean = false, - protectContent: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null -) = copyMessage(fromChat.id, toChat.id, messageId, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) 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 a857405cf6..116c1e5387 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 @@ -1,6 +1,8 @@ package dev.inmo.tgbotapi.extensions.api.send +import dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.extensions.api.* import dev.inmo.tgbotapi.extensions.api.send.games.sendGame import dev.inmo.tgbotapi.extensions.api.send.media.* import dev.inmo.tgbotapi.extensions.api.send.payments.sendInvoice @@ -29,6 +31,10 @@ import dev.inmo.tgbotapi.types.payments.abstracts.Currency import dev.inmo.tgbotapi.types.polls.* import dev.inmo.tgbotapi.types.venue.Venue import dev.inmo.tgbotapi.utils.RiskFeature +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlin.js.JsName +import kotlin.jvm.JvmName // Contact @@ -950,7 +956,18 @@ suspend inline fun TelegramBot.reply( protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null, replyMarkup: KeyboardMarkup? = null -) = copyMessage(fromChatId, to.chat.id, messageId, text, parseMode, disableNotification, protectContent, to.messageId, allowSendingWithoutReply, replyMarkup) +) = copyMessage( + to.chat.id, + fromChatId, + messageId, + text, + parseMode, + disableNotification, + protectContent, + to.messageId, + allowSendingWithoutReply, + replyMarkup +) suspend inline fun TelegramBot.reply( to: Message, @@ -995,6 +1012,80 @@ suspend fun TelegramBot.reply( ) } +/** + * Will use [handleLiveLocation] with replying to [message] each time new message will be sent by live location update + * + * @see handleLiveLocation + */ +suspend fun TelegramBot.reply( + message: Message, + locationsFlow: Flow, + liveTimeMillis: Long = defaultLivePeriodDelayMillis, + disableNotification: Boolean = false, + protectContent: Boolean = false, + allowSendingWithoutReply: Boolean? = null +) = handleLiveLocation( + message.chat.id, + locationsFlow, + liveTimeMillis, + disableNotification, + protectContent, + message.messageId, + allowSendingWithoutReply +) + +/** + * Will use [handleLiveLocation] with replying to [message] each time new message will be sent by live location update + * + * @see handleLiveLocation + */ +@JvmName("replyLiveLocationWithLocation") +@JsName("replyLiveLocationWithLocation") +suspend fun TelegramBot.reply( + message: Message, + locationsFlow: Flow, + liveTimeMillis: Long = defaultLivePeriodDelayMillis, + disableNotification: Boolean = false, + protectContent: Boolean = false, + allowSendingWithoutReply: Boolean? = null +) { + handleLiveLocation( + message.chat.id, + locationsFlow, + liveTimeMillis, + disableNotification, + protectContent, + message.messageId, + allowSendingWithoutReply + ) +} + +/** + * Will use [handleLiveLocation] with replying to [message] each time new message will be sent by live location update + * + * @see handleLiveLocation + */ +@JvmName("replyLiveLocationWithLatLong") +@JsName("replyLiveLocationWithLatLong") +suspend fun TelegramBot.reply( + message: Message, + locationsFlow: Flow>, + liveTimeMillis: Long = defaultLivePeriodDelayMillis, + disableNotification: Boolean = false, + protectContent: Boolean = false, + allowSendingWithoutReply: Boolean? = null +) { + handleLiveLocation( + message.chat.id, + locationsFlow, + liveTimeMillis, + disableNotification, + protectContent, + message.messageId, + allowSendingWithoutReply + ) +} + suspend fun TelegramBot.reply( to: Message, mediaFile: TelegramMediaFile, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLiveLocation.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLiveLocation.kt new file mode 100644 index 0000000000..c96e676325 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLiveLocation.kt @@ -0,0 +1,212 @@ +package dev.inmo.tgbotapi.extensions.api.send + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.send.SendLiveLocation +import dev.inmo.tgbotapi.requests.send.SendStaticLocation +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.location.Location +import dev.inmo.tgbotapi.types.location.StaticLocation + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLocation( + chatId: ChatIdentifier, + latitude: Double, + longitude: Double, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = execute( + SendLiveLocation( + chatId, + latitude, + longitude, + livePeriod, + horizontalAccuracy, + heading, + proximityAlertRadius, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup + ) +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLocation( + chatId: ChatIdentifier, + location: Location, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = sendLocation( + chatId, + location.latitude, + location.longitude, + livePeriod, + horizontalAccuracy, + heading, + proximityAlertRadius, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLocation( + chat: Chat, + latitude: Double, + longitude: Double, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = sendLocation( + chat.id, + latitude, + longitude, + livePeriod, + horizontalAccuracy, + heading, + proximityAlertRadius, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLocation( + chat: Chat, + location: Location, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = sendLocation( + chat.id, + location.latitude, + location.longitude, + livePeriod, + horizontalAccuracy, + heading, + proximityAlertRadius, + disableNotification, + protectContent, + replyToMessageId, + allowSendingWithoutReply, + replyMarkup +) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLiveLocation( + chatId: ChatIdentifier, + latitude: Double, + longitude: Double, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = sendLocation(chatId, latitude, longitude, livePeriod, horizontalAccuracy, heading, proximityAlertRadius, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLiveLocation( + chatId: ChatIdentifier, + location: Location, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = sendLocation(chatId, location.latitude, location.longitude, livePeriod, horizontalAccuracy, heading, proximityAlertRadius, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLiveLocation( + chat: Chat, + latitude: Double, + longitude: Double, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = sendLocation(chat.id, latitude, longitude, livePeriod, horizontalAccuracy, heading, proximityAlertRadius, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) + +/** + * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or + * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param + */ +suspend fun TelegramBot.sendLiveLocation( + chat: Chat, + location: Location, + livePeriod: Seconds, + horizontalAccuracy: Meters? = null, + heading: Degrees? = null, + proximityAlertRadius: Meters? = null, + disableNotification: Boolean = false, + protectContent: Boolean = false, + replyToMessageId: MessageIdentifier? = null, + allowSendingWithoutReply: Boolean? = null, + replyMarkup: KeyboardMarkup? = null +) = sendLocation(chat.id, location.latitude, location.longitude, livePeriod, horizontalAccuracy, heading, proximityAlertRadius, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) 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/SendStaticLocation.kt similarity index 97% rename from tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendLocation.kt rename to tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendStaticLocation.kt index d571377951..af941fbb0a 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/SendStaticLocation.kt @@ -6,6 +6,7 @@ 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.Chat +import dev.inmo.tgbotapi.types.location.Location import dev.inmo.tgbotapi.types.location.StaticLocation /** @@ -40,7 +41,7 @@ suspend fun TelegramBot.sendLocation( */ suspend fun TelegramBot.sendLocation( chatId: ChatIdentifier, - location: StaticLocation, + location: Location, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null, @@ -87,7 +88,7 @@ suspend fun TelegramBot.sendLocation( */ suspend fun TelegramBot.sendLocation( chat: Chat, - location: StaticLocation, + location: Location, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null, @@ -125,7 +126,7 @@ suspend fun TelegramBot.sendStaticLocation( */ suspend fun TelegramBot.sendStaticLocation( chatId: ChatIdentifier, - location: StaticLocation, + location: Location, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null, @@ -154,7 +155,7 @@ suspend fun TelegramBot.sendStaticLocation( */ suspend fun TelegramBot.sendStaticLocation( chat: Chat, - location: StaticLocation, + location: Location, disableNotification: Boolean = false, protectContent: Boolean = false, allowSendingWithoutReply: Boolean? = null, 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 0210ab3de7..8a8e0f91e6 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 @@ -6,7 +6,6 @@ import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.longPolling import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.startGettingOfUpdatesByLongPolling import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter -import dev.inmo.tgbotapi.utils.PreviewFeature import kotlinx.coroutines.* /** 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 9885da3d5a..fbbd954d1b 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 @@ -57,20 +57,6 @@ interface BehaviourContext : FlowsUpdatesFilter, TelegramBot, CoroutineScope { upstreamUpdatesFlow: Flow? = null, triggersHolder: TriggersHolder = TriggersHolder() ): BehaviourContext - - /** - * @param updatesFilter unused - */ - @Deprecated("Do not use this method") - fun copy( - bot: TelegramBot = this.bot, - scope: CoroutineScope = this.scope, - broadcastChannelsSize: Int = 100, - onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND, - upstreamUpdatesFlow: Flow? = null, - triggersHolder: TriggersHolder = TriggersHolder(), - updatesFilter: BehaviourContextAndTypeReceiver? = null - ): BehaviourContext = copy(bot, scope, broadcastChannelsSize, onBufferOverflow, upstreamUpdatesFlow, triggersHolder) } class DefaultBehaviourContext( @@ -79,9 +65,7 @@ class DefaultBehaviourContext( broadcastChannelsSize: Int = 100, onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND, private val upstreamUpdatesFlow: Flow? = null, - override val triggersHolder: TriggersHolder = TriggersHolder(), - @Deprecated("This parameter is not used anymore") - private val updatesFilter: BehaviourContextAndTypeReceiver? = null + override val triggersHolder: TriggersHolder = TriggersHolder() ) : AbstractFlowsUpdatesFilter(), TelegramBot by bot, CoroutineScope by scope, BehaviourContext { private val additionalUpdatesSharedFlow = MutableSharedFlow(0, broadcastChannelsSize, onBufferOverflow) @@ -137,19 +121,6 @@ fun BC.createSubContext( triggersHolder = triggersHolder ) as BC -/** - * Creates new [BehaviourContext] using its [BehaviourContext.copy] method - * - * @param updatesFilter This param will not be used anymore - */ -@Deprecated("It is not recommended to use updates filter anymore") -fun BC.createSubContext( - scope: CoroutineScope = LinkedSupervisorScope(), - triggersHolder: TriggersHolder = this.triggersHolder, - updatesUpstreamFlow: Flow = allUpdatesFlow, - updatesFilter: CustomBehaviourContextAndTypeReceiver?, -) = createSubContext(scope, triggersHolder, updatesUpstreamFlow) - /** * Launch [behaviourContextReceiver] in context of [this] as [BehaviourContext] and as [kotlin.coroutines.CoroutineContext] * @@ -187,27 +158,6 @@ suspend fun BC.createSubContextAndDoWithUpdatesFilter ) } -/** - * Creates new one [BehaviourContext] using [createSubContext] and launches [behaviourContextReceiver] in a new context - * using [doInContext] - * - * @param stopOnCompletion ___TRUE BY DEFAULT___ - * @param updatesFilter Is not used anymore - */ -@Deprecated("It is not recommended to use updates filter anymore") -suspend fun BC.createSubContextAndDoWithUpdatesFilter( - scope: CoroutineScope = LinkedSupervisorScope(), - triggersHolder: TriggersHolder = this.triggersHolder, - updatesUpstreamFlow: Flow = allUpdatesFlow, - updatesFilter: CustomBehaviourContextAndTypeReceiver?, - stopOnCompletion: Boolean = true, - behaviourContextReceiver: CustomBehaviourContextReceiver -): T { - return createSubContextAndDoWithUpdatesFilter( - scope, triggersHolder, updatesUpstreamFlow, 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 b49e812220..19b06325c4 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,9 +1,9 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder import dev.inmo.micro_utils.coroutines.ExceptionHandler +import dev.inmo.tgbotapi.bot.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 import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl 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 9266cab99a..7be3ea5ee1 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 @@ -3,14 +3,12 @@ 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.extensions.utils.asCallbackQueryUpdate +import dev.inmo.tgbotapi.extensions.utils.callbackQueryUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.queries.callback.* import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias CallbackQueryMapper = suspend T.() -> T? @@ -22,7 +20,7 @@ suspend inline fun BehaviourContext.waitCallbackQueries( initRequest, errorFactory ) { - (it.asCallbackQueryUpdate() ?.data as O).let(::listOfNotNull) + (it.callbackQueryUpdateOrNull() ?.data as O).let(::listOfNotNull) } 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 ef253dd339..9f1dd58b85 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 @@ -1,14 +1,12 @@ 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.extensions.utils.asChatJoinRequestUpdate +import dev.inmo.tgbotapi.extensions.utils.chatJoinRequestUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.chat.ChatJoinRequest import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias ChatJoinRequestsMapper = suspend ChatJoinRequest.() -> ChatJoinRequest? @@ -20,7 +18,7 @@ suspend inline fun BehaviourContext.internalWaitChatJoinRequests( initRequest, errorFactory ) { - (it.asChatJoinRequestUpdate() ?.data as? O).let(::listOfNotNull) + (it.chatJoinRequestUpdateOrNull() ?.data as? O).let(::listOfNotNull) } 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 4f75e36f59..e7b205e56d 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 @@ -1,7 +1,6 @@ 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.chat.member.ChatMemberUpdated import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate @@ -10,7 +9,6 @@ import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias ChatMemberUpdatedMapper = suspend T.() -> T? 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 2b5744c174..2c8c812acb 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 @@ -1,14 +1,12 @@ 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.extensions.utils.asChosenInlineResultUpdate +import dev.inmo.tgbotapi.extensions.utils.chosenInlineResultUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.* import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias ChosenInlineResultMapper = suspend T.() -> T? @@ -20,7 +18,7 @@ suspend inline fun BehaviourContext.waitChosenInlineResults( initRequest, errorFactory ) { - (it.asChosenInlineResultUpdate() ?.data as? O).let(::listOfNotNull) + (it.chosenInlineResultUpdateOrNull() ?.data as? O).let(::listOfNotNull) } suspend fun BehaviourContext.waitChosenInlineResult( 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 01f9ce1acd..91bce4c17e 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 @@ -3,18 +3,9 @@ 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.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.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 dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow 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 2f67610c3f..9620795bf2 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 @@ -4,18 +4,12 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext -import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter 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.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 dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow 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 2ca4af7fbb..a552348dd8 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 @@ -3,22 +3,12 @@ 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.extensions.utils.asCommonMessage -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.abstracts.MediaGroupMessage 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.types.message.content.InvoiceContent -import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage -import kotlinx.coroutines.flow.* +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map @RiskFeature(lowLevelRiskFeatureMessage) suspend inline fun BehaviourContext.waitEditedContent( diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContentMessage.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContentMessage.kt index 69d9b1b16f..c5204f68ec 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContentMessage.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEditedContentMessage.kt @@ -3,23 +3,16 @@ 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.extensions.utils.asCommonMessage +import dev.inmo.tgbotapi.extensions.utils.commonMessageOrNull 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.abstracts.MediaGroupMessage 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.types.message.content.InvoiceContent import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList @RiskFeature(lowLevelRiskFeatureMessage) suspend inline fun BehaviourContext.waitEditedContentMessage( @@ -32,7 +25,7 @@ suspend inline fun BehaviourContext.waitEditedConte ) { val messages = when (it) { is BaseEditMessageUpdate -> { - val commonMessage = it.data.asCommonMessage() ?: return@expectFlow emptyList() + val commonMessage = it.data.commonMessageOrNull() ?: return@expectFlow emptyList() if (commonMessage !is MediaGroupMessage<*> || includeMediaGroups) { listOf(commonMessage) } else { 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 414fd7b4a1..4b7fc377dc 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 @@ -3,19 +3,16 @@ 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.extensions.utils.* import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* -import dev.inmo.tgbotapi.types.message.PrivateEventMessage import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage import dev.inmo.tgbotapi.types.message.payments.SuccessfulPaymentEvent import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias EventMessageToEventMapper = suspend ChatEventMessage.() -> T? @@ -27,7 +24,7 @@ suspend inline fun BehaviourContext.waitEvents( initRequest, errorFactory ) { - it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage() ?.withEvent() ?.chatEvent.let(::listOfNotNull) + it.baseSentMessageUpdateOrNull() ?.data ?.chatEventMessageOrNull() ?.withEvent() ?.chatEvent.let(::listOfNotNull) } suspend fun BehaviourContext.waitChannelEvents( diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventActionMessages.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventActionMessages.kt index f01530cf21..f5db11ad3b 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventActionMessages.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventActionMessages.kt @@ -3,19 +3,16 @@ 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.extensions.utils.* import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.message.ChannelEventMessage import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* -import dev.inmo.tgbotapi.types.message.PrivateEventMessage import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage import dev.inmo.tgbotapi.types.message.payments.SuccessfulPaymentEvent import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage -import kotlinx.coroutines.flow.* +import kotlinx.coroutines.flow.Flow @RiskFeature(lowLevelRiskFeatureMessage) suspend inline fun BehaviourContext.waitEventsMessages( @@ -25,7 +22,7 @@ suspend inline fun BehaviourContext.waitEventsMessages( initRequest, errorFactory ) { - it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage() ?.withEvent().let(::listOfNotNull) + it.baseSentMessageUpdateOrNull() ?.data ?.chatEventMessageOrNull() ?.withEvent().let(::listOfNotNull) } suspend fun BehaviourContext.waitChannelEventsMessages( 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 8c6c5bc393..59bb45108c 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 @@ -1,14 +1,12 @@ 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.extensions.utils.asInlineQueryUpdate +import dev.inmo.tgbotapi.extensions.utils.inlineQueryUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.InlineQueries.query.* import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias InlineQueryMapper = suspend T.() -> T? @@ -20,7 +18,7 @@ suspend inline fun BehaviourContext.waitInlineQueries( initRequest, errorFactory ) { - (it.asInlineQueryUpdate() ?.data as? O).let(::listOfNotNull) + (it.inlineQueryUpdateOrNull() ?.data as? O).let(::listOfNotNull) } suspend fun BehaviourContext.waitAnyInlineQuery( 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 542f7a7d46..37260e9340 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 @@ -2,15 +2,9 @@ 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.extensions.utils.asSentMediaGroupUpdate -import dev.inmo.tgbotapi.extensions.utils.withContent import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage 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.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroupMessages.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroupMessages.kt index 29f03d276e..f75f8767b7 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroupMessages.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitMediaGroupMessages.kt @@ -1,16 +1,11 @@ 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.extensions.utils.asSentMediaGroupUpdate +import dev.inmo.tgbotapi.extensions.utils.sentMediaGroupUpdateOrNull import dev.inmo.tgbotapi.extensions.utils.withContent import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage 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.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow @@ -20,7 +15,7 @@ suspend inline fun BehaviourContext.buildMediaGr initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null } ): Flow>> = flowsUpdatesFilter.expectFlow(bot, initRequest, errorFactory) { update -> - update.asSentMediaGroupUpdate() ?.data ?.let { mediaGroup -> + update.sentMediaGroupUpdateOrNull() ?.data ?.let { mediaGroup -> val mapped = mediaGroup.mapNotNull { it.withContent() } listOf( mapped 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 2d1c16c90f..e428bbee5d 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 @@ -1,9 +1,8 @@ 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.extensions.utils.asMessageUpdate -import dev.inmo.tgbotapi.extensions.utils.asPassportMessage +import dev.inmo.tgbotapi.extensions.utils.messageUpdateOrNull +import dev.inmo.tgbotapi.extensions.utils.passportMessageOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.PassportMessage import dev.inmo.tgbotapi.types.passport.PassportData @@ -11,7 +10,6 @@ import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportEle import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias PassportMessageMapper = suspend PassportMessage.() -> PassportData @@ -23,7 +21,7 @@ suspend inline fun BehaviourContext.waitP initRequest, errorFactory ) { - it.asMessageUpdate() ?.data ?.asPassportMessage() ?.passportData ?.data ?.filterIsInstance() ?: emptyList() + it.messageUpdateOrNull() ?.data ?.passportMessageOrNull() ?.passportData ?.data ?.filterIsInstance() ?: emptyList() } suspend fun BehaviourContext.waitAnyPassportMessages( 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 a59fcccc4b..a04232acfe 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 @@ -1,14 +1,10 @@ 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.extensions.utils.asPollAnswerUpdate +import dev.inmo.tgbotapi.extensions.utils.pollAnswerUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.polls.PollAnswer -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias PollAnswerMapper = suspend PollAnswer.() -> PollAnswer? @@ -19,5 +15,5 @@ suspend fun BehaviourContext.waitPollAnswers( initRequest, errorFactory ) { - it.asPollAnswerUpdate() ?.data.let(::listOfNotNull) + it.pollAnswerUpdateOrNull() ?.data.let(::listOfNotNull) } 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 1dd9ad044c..23ef770caa 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 @@ -1,14 +1,12 @@ 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.extensions.utils.asPollUpdate +import dev.inmo.tgbotapi.extensions.utils.pollUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.polls.* import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias PollMapper = suspend T.() -> T? @@ -20,7 +18,7 @@ suspend inline fun BehaviourContext.waitPolls( initRequest, errorFactory ) { - (it.asPollUpdate() ?.data as? O).let(::listOfNotNull) + (it.pollUpdateOrNull() ?.data as? O).let(::listOfNotNull) } /** diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPreCheckoutQuery.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPreCheckoutQuery.kt index 0c2fcb5cf3..c3a12896c0 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPreCheckoutQuery.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPreCheckoutQuery.kt @@ -1,14 +1,10 @@ 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.extensions.utils.asPreCheckoutQueryUpdate +import dev.inmo.tgbotapi.extensions.utils.preCheckoutQueryUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias PreCheckoutQueryMapper = suspend PreCheckoutQuery.() -> PreCheckoutQuery? @@ -19,5 +15,5 @@ suspend fun BehaviourContext.waitPreCheckoutQueries( initRequest, errorFactory ) { - it.asPreCheckoutQueryUpdate() ?.data.let(::listOfNotNull) + it.preCheckoutQueryUpdateOrNull() ?.data.let(::listOfNotNull) } diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitShippingQuery.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitShippingQuery.kt index a35a7b9a66..493c6d7beb 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitShippingQuery.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitShippingQuery.kt @@ -1,12 +1,10 @@ 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.extensions.utils.asShippingQueryUpdate +import dev.inmo.tgbotapi.extensions.utils.shippingQueryUpdateOrNull import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.payments.ShippingQuery import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList typealias ShippingQueryMapper = suspend ShippingQuery.() -> ShippingQuery? @@ -17,5 +15,5 @@ suspend fun BehaviourContext.waitShippingQueries( initRequest, errorFactory ) { - (it.asShippingQueryUpdate() ?.data).let(::listOfNotNull) + (it.shippingQueryUpdateOrNull() ?.data).let(::listOfNotNull) } 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 90574ebd5e..79f983b9f8 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,13 +2,13 @@ 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.queries.callback.CallbackQuery +import dev.inmo.tgbotapi.types.InlineQueries.query.InlineQuery 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 import dev.inmo.tgbotapi.types.payments.ShippingQuery +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery 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/CallbackQueryTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt index 49326ae88f..c2ca912858 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 @@ -6,10 +6,11 @@ import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import dev.inmo.micro_utils.coroutines.runCatchingSafely import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.CallbackQueryFilterByUser -import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.* +import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter 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.extensions.utils.asCallbackQueryUpdate +import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.times +import dev.inmo.tgbotapi.extensions.utils.callbackQueryUpdateOrNull import dev.inmo.tgbotapi.types.queries.callback.* import dev.inmo.tgbotapi.types.update.abstracts.Update import kotlinx.coroutines.Job @@ -20,7 +21,7 @@ internal suspend inline fun B markerFactory: MarkerFactory = ByUserCallbackQueryMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asCallbackQueryUpdate() ?.data as? T) ?.let(::listOfNotNull) + (it.callbackQueryUpdateOrNull() ?.data as? T) ?.let(::listOfNotNull) } /** 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 90e5f5cbae..71d244e100 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 @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.ChatJoinRequestFil 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.extensions.utils.chatJoinRequestUpdateOrNull import dev.inmo.tgbotapi.types.chat.ChatJoinRequest import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -29,5 +29,5 @@ suspend fun BC.onChatJoinRequest( markerFactory: MarkerFactory = ByChatChatJoinRequestMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asChatJoinRequestUpdate() ?.data) ?.let(::listOfNotNull) + (it.chatJoinRequestUpdateOrNull() ?.data) ?.let(::listOfNotNull) } 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 f87eacd415..b4f7a00dfa 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 @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByUserIdChosenInlineResultMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.extensions.utils.asChosenInlineResultUpdate +import dev.inmo.tgbotapi.extensions.utils.chosenInlineResultUpdateOrNull import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.* import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -16,7 +16,7 @@ internal suspend inline fun = ByUserIdChosenInlineResultMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asChosenInlineResultUpdate() ?.data as? T) ?.let(::listOfNotNull) + (it.chosenInlineResultUpdateOrNull() ?.data as? T) ?.let(::listOfNotNull) } /** diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandling.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandling.kt index 151d70b47d..f59aa80629 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandling.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CommandHandling.kt @@ -10,9 +10,8 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.MessageFilterByCha 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.behaviour_builder.utils.times -import dev.inmo.tgbotapi.extensions.utils.asBotCommandTextSource +import dev.inmo.tgbotapi.extensions.utils.botCommandTextSourceOrNull 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.message.content.TextMessage import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -35,7 +34,7 @@ internal suspend fun BC.commandUncounted( true } sizeRequirement && textSources.any { - commandRegex.matches(it.asBotCommandTextSource() ?.command ?: return@any false) + commandRegex.matches(it.botCommandTextSourceOrNull() ?.command ?: return@any false) } }.let { initialFilter ?.times(it) ?: it 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 9f68928500..0219490400 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 @@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.MessageFilterByCha 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.behaviour_builder.utils.times -import dev.inmo.tgbotapi.extensions.utils.asBotCommandTextSource +import dev.inmo.tgbotapi.extensions.utils.botCommandTextSourceOrNull import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithParams import dev.inmo.tgbotapi.types.message.content.TextContent import dev.inmo.tgbotapi.types.message.content.TextMessage @@ -33,7 +33,7 @@ suspend fun BC.unhandledCommand( true } sizeRequirement && textSources.any { - val command = it.asBotCommandTextSource() ?.command ?: return@any false + val command = it.botCommandTextSourceOrNull() ?.command ?: return@any false !triggersHolder.handleableCommandsHolder.isHandled(command) } }.let { 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 1b004b05a0..e9a19d4d7d 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 @@ -12,12 +12,9 @@ import dev.inmo.tgbotapi.extensions.utils.whenCommonMessage 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.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 +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate typealias CommonMessageFilter = SimpleFilter> 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 30aaf7cac5..e339c6f66f 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 @@ -20,17 +20,11 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.CommonMessageFilte import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.MessageFilterByChat 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.asEditMessageUpdate +import dev.inmo.tgbotapi.extensions.utils.editMessageUpdateOrNull import dev.inmo.tgbotapi.extensions.utils.withContent 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.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 @@ -41,7 +35,7 @@ internal suspend inline fun noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver> ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { when (it) { - is BaseEditMessageUpdate -> (it.asEditMessageUpdate() ?.data ?.withContent()) + is BaseEditMessageUpdate -> (it.editMessageUpdateOrNull() ?.data ?.withContent()) else -> null } ?.let(::listOfNotNull) } 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 cde6ed010e..db41229f8b 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 @@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.MessageFilterByCha 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.asBaseSentMessageUpdate -import dev.inmo.tgbotapi.extensions.utils.asChatEventMessage +import dev.inmo.tgbotapi.extensions.utils.baseSentMessageUpdateOrNull +import dev.inmo.tgbotapi.extensions.utils.chatEventMessageOrNull import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* @@ -24,7 +24,7 @@ internal suspend inline fun BC.on noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver> ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { @Suppress("UNCHECKED_CAST") - (it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage() ?.takeIf { it.chatEvent is T } as? ChatEventMessage) ?.let(::listOfNotNull) + (it.baseSentMessageUpdateOrNull() ?.data ?.chatEventMessageOrNull() ?.takeIf { it.chatEvent is T } as? ChatEventMessage) ?.let(::listOfNotNull) } /** 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 e850638058..52bc9e271a 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 @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.InlineQueryFilterB import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByUserInlineQueryMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.extensions.utils.asInlineQueryUpdate +import dev.inmo.tgbotapi.extensions.utils.inlineQueryUpdateOrNull import dev.inmo.tgbotapi.types.InlineQueries.query.* import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -15,7 +15,7 @@ internal suspend inline fun BC. markerFactory: MarkerFactory = ByUserInlineQueryMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asInlineQueryUpdate() ?.data as? T) ?.let(::listOfNotNull) + (it.inlineQueryUpdateOrNull() ?.data as? T) ?.let(::listOfNotNull) } /** 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 108465b116..31f52a2e73 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 @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling -import dev.inmo.micro_utils.coroutines.* +import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptionsAsync import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.expectFlow import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter 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 8e868791df..58efa0cee3 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 @@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.MessagesFilterByCh import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByChatMediaGroupMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.extensions.utils.asSentMediaGroupUpdate +import dev.inmo.tgbotapi.extensions.utils.sentMediaGroupUpdateOrNull import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage import dev.inmo.tgbotapi.types.message.content.* import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -20,7 +20,7 @@ internal suspend inline fun >, Any> = ByChatMediaGroupMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver>> ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asSentMediaGroupUpdate() ?.data ?.takeIf { messages -> + (it.sentMediaGroupUpdateOrNull() ?.data ?.takeIf { messages -> messages.all { message -> message.content is T } 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 e1705cbf34..b4cd034da8 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 @@ -5,8 +5,8 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.MessageFilterByCha 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.asMessageUpdate -import dev.inmo.tgbotapi.extensions.utils.asPassportMessage +import dev.inmo.tgbotapi.extensions.utils.messageUpdateOrNull +import dev.inmo.tgbotapi.extensions.utils.passportMessageOrNull import dev.inmo.tgbotapi.types.message.PassportMessage import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElement import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -17,7 +17,7 @@ internal suspend inline fun = ByChatMessageMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asMessageUpdate() ?.data ?.asPassportMessage() ?.takeIf { it.passportData.data.any { it is T } }) ?.let(::listOfNotNull) + (it.messageUpdateOrNull() ?.data ?.passportMessageOrNull() ?.takeIf { it.passportData.data.any { it is T } }) ?.let(::listOfNotNull) } 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 549e052426..a09639754b 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 @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByIdPollAnswerMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.extensions.utils.asPollAnswerUpdate +import dev.inmo.tgbotapi.extensions.utils.pollAnswerUpdateOrNull import dev.inmo.tgbotapi.types.polls.PollAnswer import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -16,7 +16,7 @@ internal suspend inline fun BC.onPollAnswered( markerFactory: MarkerFactory = ByIdPollAnswerMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asPollAnswerUpdate() ?.data) ?.let(::listOfNotNull) + (it.pollAnswerUpdateOrNull() ?.data) ?.let(::listOfNotNull) } /** 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 f9575de5e7..c9098d600d 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 @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByIdPollMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.extensions.utils.asPollUpdate +import dev.inmo.tgbotapi.extensions.utils.pollUpdateOrNull import dev.inmo.tgbotapi.types.polls.* import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -16,7 +16,7 @@ internal suspend inline fun BC.onPollU markerFactory: MarkerFactory = ByIdPollMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asPollUpdate() ?.data as? T) ?.let(::listOfNotNull) + (it.pollUpdateOrNull() ?.data as? T) ?.let(::listOfNotNull) } /** diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PreCheckoutQueryTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PreCheckoutQueryTriggers.kt index 3df37d6f8f..c53f1ecda0 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PreCheckoutQueryTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PreCheckoutQueryTriggers.kt @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.PreCheckoutQueryFi import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByUserPreCheckoutQueryMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.extensions.utils.asPreCheckoutQueryUpdate +import dev.inmo.tgbotapi.extensions.utils.preCheckoutQueryUpdateOrNull import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -31,5 +31,5 @@ suspend fun BC.onPreCheckoutQuery( markerFactory: MarkerFactory = ByUserPreCheckoutQueryMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asPreCheckoutQueryUpdate() ?.data) ?.let(::listOfNotNull) + (it.preCheckoutQueryUpdateOrNull() ?.data) ?.let(::listOfNotNull) } diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ShippingQueryTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ShippingQueryTriggers.kt index 37cb05be12..1f82cf12cb 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ShippingQueryTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ShippingQueryTriggers.kt @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.ShippingQueryFilte import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByUserShippingQueryMarkerFactory import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory -import dev.inmo.tgbotapi.extensions.utils.asShippingQueryUpdate +import dev.inmo.tgbotapi.extensions.utils.shippingQueryUpdateOrNull import dev.inmo.tgbotapi.types.payments.ShippingQuery import dev.inmo.tgbotapi.types.update.abstracts.Update @@ -31,5 +31,5 @@ suspend fun BC.onShippingQuery( markerFactory: MarkerFactory = ByUserShippingQueryMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asShippingQueryUpdate() ?.data) ?.let(::listOfNotNull) + (it.shippingQueryUpdateOrNull() ?.data) ?.let(::listOfNotNull) } diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/LiveLocation.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/LiveLocation.kt index 5d7cfcc624..45a626be00 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/LiveLocation.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/LiveLocation.kt @@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.utils import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextAndTypeReceiver -import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitEditedLocation import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitEditedLocationMessage import dev.inmo.tgbotapi.types.location.* import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage 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 a5d25816cd..f22d54379f 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,9 +1,9 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories -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 +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery object ByUserCallbackQueryMarkerFactory : MarkerFactory { override suspend fun invoke(data: CallbackQuery) = data.user diff --git a/tgbotapi.core/build.gradle b/tgbotapi.core/build.gradle index 00c88b6d62..41b0bd2c47 100644 --- a/tgbotapi.core/build.gradle +++ b/tgbotapi.core/build.gradle @@ -1,6 +1,7 @@ plugins { id "org.jetbrains.kotlin.multiplatform" id "org.jetbrains.kotlin.plugin.serialization" + id "com.google.devtools.ksp" } project.description = "Core part of tgbotapi with all (and only) required functionality for working with Telegram Bot API" @@ -28,6 +29,8 @@ kotlin { api libs.microutils.languageCodes api libs.ktor.client.core + + api project(":tgbotapi.ksp:lib") } } commonTest { @@ -46,12 +49,15 @@ kotlin { } } } - -// targets.all { -// compilations.all { -// kotlinOptions { -// freeCompilerArgs += ["-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi", "-Xopt-in=kotlin.RequiresOptIn"] -// } -// } -// } +} + +dependencies { + add("kspCommonMainMetadata", project(":tgbotapi.ksp:processor")) + add("kspJvm", project(":tgbotapi.ksp:processor")) +} + +ksp { + arg("cctargetPackage", "dev.inmo.tgbotapi.extensions.utils") + arg("ccoutputFileName", "ClassCastsNew") + arg("ccoutputFolder", project(":tgbotapi.utils").file("src/commonMain/kotlin").absolutePath) } 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 index 14c1f8ea76..cd31df05fb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonSendInvoiceData.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/CommonSendInvoiceData.kt @@ -1,8 +1,10 @@ package dev.inmo.tgbotapi.abstracts +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.payments.abstracts.Currencied import dev.inmo.tgbotapi.types.payments.abstracts.Priced +@ClassCastsIncluded interface CommonSendInvoiceData : Titled, Currencied, Priced { val description: String val payload: 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 index 6aeb8100b7..a9e76b96db 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/WithUser.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/WithUser.kt @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.abstracts +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.chat.User /** @@ -7,6 +8,7 @@ import dev.inmo.tgbotapi.types.chat.User * * @see FromUser */ +@ClassCastsIncluded interface WithUser { val user: User } 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 deleted file mode 100644 index dce59184d8..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/ReplyMarkup.kt +++ /dev/null @@ -1,7 +0,0 @@ -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/WithReplyMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/WithReplyMarkup.kt new file mode 100644 index 0000000000..3429d822c8 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/types/WithReplyMarkup.kt @@ -0,0 +1,9 @@ +package dev.inmo.tgbotapi.abstracts.types + +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup + +interface WithReplyMarkup { + val replyMarkup: KeyboardMarkup? +} +@Deprecated("Renamed", ReplaceWith("WithReplyMarkup", "dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup")) +typealias ReplyMarkup = WithReplyMarkup 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 1078ecf512..5705ec13e9 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.abstracts.types.MessageAction -import dev.inmo.tgbotapi.abstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup @@ -17,7 +17,7 @@ data class StopPoll( override val messageId: MessageIdentifier, @SerialName(replyMarkupField) override val replyMarkup: InlineKeyboardMarkup? = null -) : MessageAction, SimpleRequest, ReplyMarkup { +) : MessageAction, SimpleRequest, WithReplyMarkup { override fun method(): String = "stopPoll" override val resultDeserializer: DeserializationStrategy get() = PollSerializer 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 94bc78a3ce..45090bc8b7 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.abstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -interface EditReplyMessage : ReplyMarkup { +interface EditReplyMessage : WithReplyMarkup { override val replyMarkup: InlineKeyboardMarkup? } 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 c079f297a7..a2bb4ad842 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 @@ -20,10 +20,9 @@ import kotlinx.serialization.* const val OrderChangingDeprecationWarn = "The order of parameters in this factory will be changed soon. To avoid unexpected behaviour, swap message id and target chat id parameters" -@Deprecated(OrderChangingDeprecationWarn) fun CopyMessage( - fromChatId: ChatIdentifier, toChatId: ChatIdentifier, + fromChatId: ChatIdentifier, messageId: MessageIdentifier, text: String? = null, parseMode: ParseMode? = null, @@ -46,10 +45,9 @@ fun CopyMessage( replyMarkup ) -@Deprecated(OrderChangingDeprecationWarn) fun CopyMessage( - fromChatId: ChatIdentifier, toChatId: ChatIdentifier, + fromChatId: ChatIdentifier, messageId: MessageIdentifier, entities: List, disableNotification: Boolean = false, 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 f152390db7..0627d8d8d3 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.abstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup -interface ReplyingMarkupSendMessageRequest: SendMessageRequest, ReplyMarkup +interface ReplyingMarkupSendMessageRequest: SendMessageRequest, WithReplyMarkup 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 93c75b0338..086b69edbf 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.abstracts.types.ReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup @@ -29,7 +29,7 @@ data class SendGame ( @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null ) : SendMessageRequest>, - ReplyMarkup { + WithReplyMarkup { override fun method(): String = "sendGame" override val resultDeserializer: DeserializationStrategy> get() = commonResultDeserializer 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 a482268ade..0a51fafe4c 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 @@ -72,7 +72,7 @@ data class SendInvoice( ChatRequest, DisableNotification, ReplyMessageId, - ReplyMarkup, + WithReplyMarkup, SendMessageRequest> { override fun method(): String = "sendInvoice" override val resultDeserializer: DeserializationStrategy> 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 69044c875b..fd748e46e8 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 @@ -39,19 +39,6 @@ val UserId.userLink: String val User.link: String get() = id.userLink -/** - * https://core.telegram.org/bots/api#formatting-options - */ -@Deprecated("Renamed", ReplaceWith("userLink", "dev.inmo.tgbotapi.types.userLink")) -val Identifier.link: String - get() = "tg://user?id=$this" -/** - * https://core.telegram.org/bots/api#formatting-options - */ -@Deprecated("Renamed", ReplaceWith("userLink", "dev.inmo.tgbotapi.types.userLink")) -val ChatId.link: String - get() = chatId.link - typealias UserId = ChatId fun Identifier.toChatId(): ChatId = ChatId(this) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult.kt index 9443c09391..3b5ac00da7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult.kt @@ -1,13 +1,15 @@ package dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.serializers.InlineQueryResultSerializer import dev.inmo.tgbotapi.types.InlineQueryIdentifier import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import kotlinx.serialization.Serializable @Serializable(InlineQueryResultSerializer::class) +@ClassCastsIncluded interface InlineQueryResult { val type: String val id: InlineQueryIdentifier val replyMarkup: InlineKeyboardMarkup? -} \ No newline at end of file +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputMessageContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputMessageContent.kt index e440506ec2..232580cae2 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputMessageContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/InlineQueries/InputMessageContent/InputMessageContent.kt @@ -1,7 +1,9 @@ package dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContentSerializer import kotlinx.serialization.Serializable @Serializable(InputMessageContentSerializer::class) +@ClassCastsIncluded sealed interface InputMessageContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/actions/BotAction.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/actions/BotAction.kt index 856f3d8899..2ea92aaa72 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/actions/BotAction.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/actions/BotAction.kt @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.actions import dev.inmo.micro_utils.common.Warning +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.utils.RiskFeature import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable @@ -13,6 +14,7 @@ import kotlinx.serialization.encoding.Encoder * Use BotAction objects realisations to notify user about bot actions */ @Serializable(BotActionSerializer::class) +@ClassCastsIncluded sealed interface BotAction { val actionName: String } 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 5117b6dfde..cf8ad42c5e 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 @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.games.CallbackGame import dev.inmo.tgbotapi.types.webapps.WebAppInfo @@ -11,6 +12,7 @@ import kotlinx.serialization.json.* * https://core.telegram.org/bots/api#inlinekeyboardbutton for more info */ @Serializable(InlineKeyboardButtonSerializer::class) +@ClassCastsIncluded sealed interface InlineKeyboardButton { val text: String } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardMarkup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardMarkup.kt index 4e008eb84b..afd46e4cff 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardMarkup.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardMarkup.kt @@ -1,6 +1,8 @@ package dev.inmo.tgbotapi.types.buttons +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import kotlinx.serialization.Serializable @Serializable(KeyboardMarkupSerializer::class) +@ClassCastsIncluded sealed interface KeyboardMarkup diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyForce.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyForce.kt index 24a2ee2443..51368f2594 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyForce.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/ReplyForce.kt @@ -19,15 +19,6 @@ data class ReplyForce( val Selective = Selective() val NonSelective = NonSelective() val Default = ReplyForce() - - @Deprecated("Renamed", ReplaceWith("ReplyForce.Selective")) - inline val ReplyForceSelective - get() = Selective - @Deprecated("Renamed", ReplaceWith("ReplyForce.NonSelective")) - inline val ReplyForceNonSelective - get() = NonSelective - @Deprecated("Renamed", ReplaceWith("ReplyForce.Default")) - val ReplyForceDefault = ReplyForce() } init { 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 index 0d6bf752e1..04c0b7da44 100644 --- 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 @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.chat +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.* import kotlinx.serialization.Serializable @@ -43,6 +44,7 @@ sealed interface AbleToAddInAttachmentMenuChat : Chat { } @Serializable(PreviewChatSerializer::class) +@ClassCastsIncluded sealed interface Chat { val id: ChatId } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt index 9f58ee3ef2..ef730c86ec 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt @@ -38,6 +38,3 @@ data class OwnerChatMember( @Required private val type: String = "creator" } - -@Deprecated("Renamed", ReplaceWith("OwnerChatMember", "dev.inmo.tgbotapi.types.chat.member.OwnerChatMember")) -typealias CreatorChatMember = OwnerChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/dice/DiceAnimationType.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/dice/DiceAnimationType.kt index 7e34caf55f..1c194eb490 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/dice/DiceAnimationType.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/dice/DiceAnimationType.kt @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.dice +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.utils.RiskFeature import kotlinx.serialization.KSerializer @@ -9,6 +10,7 @@ import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder @Serializable(DiceAnimationTypeSerializer::class) +@ClassCastsIncluded sealed interface DiceAnimationType { val emoji: String val valueLimits: IntRange diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TelegramMediaFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TelegramMediaFile.kt index b6e04f7e06..1d1e977d76 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TelegramMediaFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/TelegramMediaFile.kt @@ -1,11 +1,13 @@ package dev.inmo.tgbotapi.types.files +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.requests.abstracts.FileId import dev.inmo.tgbotapi.types.FileUniqueId /** * Declare common part of media files in Telegram. Note: it is not representation of JVM `File` type */ +@ClassCastsIncluded sealed interface TelegramMediaFile { val fileId: FileId val fileUniqueId: FileUniqueId 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 28f09c744b..21724697c6 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,7 @@ package dev.inmo.tgbotapi.types.location import dev.inmo.tgbotapi.abstracts.* +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.utils.nonstrictJsonFormat import kotlinx.serialization.* @@ -18,6 +19,7 @@ import kotlinx.serialization.json.JsonObject * @see dev.inmo.tgbotapi.extensions.utils.asLiveLocation */ @Serializable(LocationSerializer::class) +@ClassCastsIncluded sealed interface Location : Locationed, HorizontallyAccured @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMedia.kt index 2ae7932ede..f8dbf682a4 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMedia.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMedia.kt @@ -1,9 +1,11 @@ package dev.inmo.tgbotapi.types.media +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.requests.abstracts.InputFile import kotlinx.serialization.Serializable @Serializable(TelegramMediaSerializer::class) +@ClassCastsIncluded sealed interface TelegramMedia { val type: String val file: InputFile 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 ba73e100ae..4d664fcbd0 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 @@ -4,6 +4,9 @@ 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( +data class LeftChatMemberEvent( override val user: User ) : PublicChatEvent, WithUser + +@Deprecated("Renamed", ReplaceWith("dev.inmo.tgbotapi.types.message.ChatEvents", "LeftChatMemberEvent")) +typealias LeftChatMember = LeftChatMemberEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent.kt index a3873a9305..cb5523bb17 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent.kt @@ -1,3 +1,6 @@ package dev.inmo.tgbotapi.types.message.ChatEvents.abstracts +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded + +@ClassCastsIncluded interface ChatEvent 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 225bd1e3c1..3bdde5c8d5 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,42 +1,74 @@ package dev.inmo.tgbotapi.types.message import dev.inmo.tgbotapi.abstracts.FromUser +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.chat.* import dev.inmo.tgbotapi.types.chat.User -sealed class ForwardInfo { +@ClassCastsIncluded +sealed interface ForwardInfo { abstract val dateOfOriginal: TelegramDate + + data class ByAnonymous( + override val dateOfOriginal: TelegramDate, + val senderName: String + ) : ForwardInfo + + data class ByUser( + override val dateOfOriginal: TelegramDate, + override val from: User + ) : ForwardInfo, FromUser + + sealed interface PublicChat : ForwardInfo { + val chat: dev.inmo.tgbotapi.types.chat.PublicChat + + /** + * Represent forward info for the message sent by [channelChat] into some group + */ + data class SentByChannel( + override val dateOfOriginal: TelegramDate, + val channelChat: ChannelChat, + val signature: String? = null + ) : PublicChat { + override val chat: dev.inmo.tgbotapi.types.chat.PublicChat + get() = channelChat + } + + /** + * Represent forward info for the message sent by [channelChat] into that channel + */ + data class FromChannel( + override val dateOfOriginal: TelegramDate, + val messageId: MessageIdentifier, + val channelChat: ChannelChat, + val signature: String? = null + ) : PublicChat { + override val chat: dev.inmo.tgbotapi.types.chat.PublicChat + get() = channelChat + } + + data class FromSupergroup( + override val dateOfOriginal: TelegramDate, + val group: SupergroupChat + ) : PublicChat { + override val chat: dev.inmo.tgbotapi.types.chat.PublicChat + get() = group + } + } } -data class AnonymousForwardInfo( - override val dateOfOriginal: TelegramDate, - val senderName: String -) : ForwardInfo() +@Deprecated("Replaced", ReplaceWith("ForwardInfo.ByAnonymous", "dev.inmo.tgbotapi.types.message.ForwardInfo")) +typealias AnonymousForwardInfo = ForwardInfo.ByAnonymous -data class UserForwardInfo( - override val dateOfOriginal: TelegramDate, - override val from: User -) : ForwardInfo(), FromUser +@Deprecated("Replaced", ReplaceWith("ForwardInfo.ByUser", "dev.inmo.tgbotapi.types.message.ForwardInfo")) +typealias UserForwardInfo = ForwardInfo.ByUser -sealed class ForwardFromPublicChatInfo : ForwardInfo() { - abstract val chat: PublicChat -} +@Deprecated("Replaced", ReplaceWith("ForwardInfo.PublicChat", "dev.inmo.tgbotapi.types.message.ForwardInfo")) +typealias ForwardFromPublicChatInfo = ForwardInfo.PublicChat -data class ForwardFromChannelInfo( - override val dateOfOriginal: TelegramDate, - val messageId: MessageIdentifier, - val channelChat: ChannelChat, - val signature: String? = null -) : ForwardFromPublicChatInfo() { - override val chat: PublicChat - get() = channelChat -} +@Deprecated("Replaced", ReplaceWith("ForwardInfo.PublicChat.FromChannel", "dev.inmo.tgbotapi.types.message.ForwardInfo")) +typealias ForwardFromChannelInfo = ForwardInfo.PublicChat.FromChannel -data class ForwardFromSupergroupInfo( - override val dateOfOriginal: TelegramDate, - val group: SupergroupChat -) : ForwardFromPublicChatInfo() { - override val chat: PublicChat - get() = group -} +@Deprecated("Replaced", ReplaceWith("ForwardInfo.PublicChat.FromSupergroup", "dev.inmo.tgbotapi.types.message.ForwardInfo")) +typealias ForwardFromSupergroupInfo = ForwardInfo.PublicChat.FromSupergroup 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 1262958af1..2af80360d3 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 @@ -156,26 +156,39 @@ internal data class RawMessage( } private val forwarded: ForwardInfo? by lazy { - forward_date ?: return@lazy null // According to the documentation, now any forwarded message contains this field + forward_date + ?: return@lazy null // According to the documentation, now any forwarded message contains this field when { - forward_sender_name != null -> AnonymousForwardInfo( + forward_sender_name != null -> ForwardInfo.ByAnonymous( forward_date, forward_sender_name ) - forward_from_chat is ChannelChat -> ForwardFromChannelInfo( - forward_date, - forward_from_message_id ?: error("Channel forwarded message must contain message id, but was not"), - forward_from_chat, - forward_signature - ) - forward_from_chat is SupergroupChat -> ForwardFromSupergroupInfo( + + forward_from_chat is ChannelChat -> if (forward_from_message_id == null) { + ForwardInfo.PublicChat.SentByChannel( + forward_date, + forward_from_chat, + forward_signature + ) + } else { + ForwardInfo.PublicChat.FromChannel( + forward_date, + forward_from_message_id, + forward_from_chat, + forward_signature + ) + } + + forward_from_chat is SupergroupChat -> ForwardInfo.PublicChat.FromSupergroup( forward_date, forward_from_chat ) - forward_from != null -> UserForwardInfo( + + forward_from != null -> ForwardInfo.ByUser( forward_date, forward_from ) + else -> null } } 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 012164c153..39859a9289 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 @@ -1,6 +1,7 @@ package dev.inmo.tgbotapi.types.message.abstracts import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.message.RawMessage @@ -9,6 +10,7 @@ import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder +@ClassCastsIncluded interface Message { val messageId: MessageIdentifier val chat: Chat 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 index 857ff558d8..453bef4726 100644 --- 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 @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.message.content +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier @@ -108,6 +109,7 @@ sealed interface MediaContent: MessageContent { fun asTelegramMedia(): TelegramMedia } +@ClassCastsIncluded sealed interface ResendableContent { fun createResend( chatId: ChatIdentifier, 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 index 092833fa6c..2ae9efcde4 100644 --- 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 @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.message.textsources +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.captionLength import dev.inmo.tgbotapi.types.textLength import kotlinx.serialization.Serializable @@ -10,6 +11,7 @@ typealias TextSourcesList = List typealias MutableTextSourcesList = MutableList @Serializable(TextSourceSerializer::class) +@ClassCastsIncluded sealed interface TextSource { val markdown: String val markdownV2: String diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/PassportElementError.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/PassportElementError.kt index 74dfc64364..adfcd9d2f3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/PassportElementError.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/PassportElementError.kt @@ -5,6 +5,7 @@ package dev.inmo.tgbotapi.types.passport import dev.inmo.micro_utils.crypto.MD5 import dev.inmo.micro_utils.crypto.md5 import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.* import dev.inmo.tgbotapi.types.passport.encrypted.type @@ -18,6 +19,7 @@ import kotlinx.serialization.json.* val ByteArray.passportFileHash: MD5 get() = md5() +@ClassCastsIncluded @Serializable(PassportElementErrorSerializer::class) sealed class PassportElementError { abstract val source: String diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/decrypted/abstracts/SecureValue.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/decrypted/abstracts/SecureValue.kt index b9bb54371c..8eaec8b628 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/decrypted/abstracts/SecureValue.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/decrypted/abstracts/SecureValue.kt @@ -1,7 +1,9 @@ package dev.inmo.tgbotapi.types.passport.decrypted.abstracts +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.passport.credentials.EndDataCredentials +@ClassCastsIncluded interface SecureValue { val credentials: List } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElement.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElement.kt index 6bf1d843df..8ae7705fa2 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElement.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/abstracts/EncryptedPassportElement.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.passport.encrypted.abstracts import dev.inmo.micro_utils.crypto.SourceBytes import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedElementSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonObject @@ -9,6 +10,7 @@ import kotlinx.serialization.json.JsonObject typealias PassportElementHash = SourceBytes @Serializable(EncryptedElementSerializer::class) +@ClassCastsIncluded interface EncryptedPassportElement { val hash: PassportElementHash } 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 373486a3f5..03a54de345 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 @@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.types.polls import com.soywiz.klock.DateTime import com.soywiz.klock.TimeSpan import dev.inmo.tgbotapi.abstracts.TextedInput +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.types.message.RawMessageEntity @@ -16,6 +17,7 @@ import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import kotlinx.serialization.json.* +@ClassCastsIncluded sealed interface ScheduledCloseInfo { val closeDateTime: DateTime } @@ -45,6 +47,7 @@ val LongSeconds.asExactScheduledCloseInfo ) @Serializable(PollSerializer::class) +@ClassCastsIncluded sealed interface Poll { val id: PollIdentifier val question: String diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/Update.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/Update.kt index a06e2be315..55c3f42fb3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/Update.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/Update.kt @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.update.abstracts +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.update.RawUpdate import dev.inmo.tgbotapi.utils.RiskFeature @@ -10,6 +11,7 @@ import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import kotlinx.serialization.json.JsonElement +@ClassCastsIncluded interface Update { val updateId: UpdateIdentifier val data: Any 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 56ffef940a..54338b3a7a 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,8 +1,7 @@ package dev.inmo.tgbotapi.utils.internal +import dev.inmo.tgbotapi.types.* 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.* internal fun MultilevelTextSource.markdownV2Default( @@ -61,8 +60,8 @@ internal fun MultilevelTextSource.underlineMarkdownV2(): String = markdownV2Defa internal fun MultilevelTextSource.underlineHTML(): String = htmlDefault(htmlUnderlineControl) -internal fun MultilevelTextSource.textMentionMarkdownV2(userId: UserId): String = linkMarkdownV2(userId.link) -internal fun MultilevelTextSource.textMentionHTML(userId: UserId): String = linkHTML(userId.link) +internal fun MultilevelTextSource.textMentionMarkdownV2(userId: UserId): String = linkMarkdownV2(userId.userLink) +internal fun MultilevelTextSource.textMentionHTML(userId: UserId): String = linkHTML(userId.userLink) internal fun MultilevelTextSource.mentionMarkdownV2(): String = optionalPrefix("@") + subsources.makeMarkdownV2String() internal fun MultilevelTextSource.mentionHTML(): String = optionalPrefix("@") + subsources.makeHtmlString() 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 a43471b317..b7640743e0 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,7 +1,6 @@ package dev.inmo.tgbotapi.utils.internal -import dev.inmo.tgbotapi.types.UserId -import dev.inmo.tgbotapi.types.link +import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.utils.extensions.* @@ -102,7 +101,7 @@ private inline fun String.hashTag(adapt: String.() -> String): String = if (star "#${adapt()}" } -internal fun String.textMentionMarkdown(userId: UserId): String = linkMarkdown(userId.link) +internal fun String.textMentionMarkdown(userId: UserId): String = linkMarkdown(userId.userLink) internal fun String.mentionMarkdown(): String = mention(String::toMarkdown) 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 deleted file mode 100644 index c4f2a3ac47..0000000000 --- a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/requests/abstracts/InputFileFromJavaFile.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.inmo.tgbotapi.requests.abstracts - -import java.io.File - -@Deprecated("Duplacation of asMultipartFile", ReplaceWith("asMultipartFile", "dev.inmo.tgbotapi.requests.abstracts.asMultipartFile")) -fun File.toInputFile() = asMultipartFile() diff --git a/tgbotapi.ksp/lib/build.gradle b/tgbotapi.ksp/lib/build.gradle new file mode 100644 index 0000000000..3048b631e0 --- /dev/null +++ b/tgbotapi.ksp/lib/build.gradle @@ -0,0 +1,7 @@ +plugins { + id "org.jetbrains.kotlin.multiplatform" +} + +project.description = "Class Casts generator KSP library to include into your library" + +apply from: "$mppProjectWithSerializationPresetPath" diff --git a/tgbotapi.ksp/lib/src/commonMain/kotlin/ClassCastsIncluded.kt b/tgbotapi.ksp/lib/src/commonMain/kotlin/ClassCastsIncluded.kt new file mode 100644 index 0000000000..c0c3a45730 --- /dev/null +++ b/tgbotapi.ksp/lib/src/commonMain/kotlin/ClassCastsIncluded.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.ksp.lib + +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.SOURCE) +annotation class ClassCastsIncluded diff --git a/tgbotapi.ksp/processor/build.gradle b/tgbotapi.ksp/processor/build.gradle new file mode 100644 index 0000000000..985f68a50d --- /dev/null +++ b/tgbotapi.ksp/processor/build.gradle @@ -0,0 +1,13 @@ +plugins { + id "org.jetbrains.kotlin.jvm" +} + +repositories { + mavenCentral() +} + +dependencies { + implementation libs.kotlin.poet + implementation libs.ksp + implementation project(":tgbotapi.ksp:lib") +} diff --git a/tgbotapi.ksp/processor/src/main/kotlin/ClassCastsFiller.kt b/tgbotapi.ksp/processor/src/main/kotlin/ClassCastsFiller.kt new file mode 100644 index 0000000000..6ff48ffec5 --- /dev/null +++ b/tgbotapi.ksp/processor/src/main/kotlin/ClassCastsFiller.kt @@ -0,0 +1,103 @@ +package dev.inmo.tgbotapi.ksp.processor + +import com.google.devtools.ksp.symbol.* +import com.squareup.kotlinpoet.* +import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy +import com.squareup.kotlinpoet.ksp.* + +private fun FileSpec.Builder.addTopLevelImport(className: ClassName) { + className.topLevelClassName().let { + addImport(it.packageName, it.simpleNames) + } +} + +private fun FileSpec.Builder.createTypeDefinition(ksClassDeclaration: KSClassDeclaration): TypeName { + val className = ksClassDeclaration.toClassName() + return if (ksClassDeclaration.typeParameters.isNotEmpty()) { + className.parameterizedBy( + ksClassDeclaration.typeParameters.map { + it.bounds.first().resolve().also { + val typeClassName = it.toClassName() + addTopLevelImport(typeClassName) + }.toTypeName() + } + ) + } else { + className + } +} + +fun FileSpec.Builder.fill( + sourceKSClassDeclaration: KSClassDeclaration, + subtypesMap: Map>, + targetClassDeclaration: KSClassDeclaration = sourceKSClassDeclaration +) { + if (sourceKSClassDeclaration == targetClassDeclaration) { + subtypesMap[sourceKSClassDeclaration] ?.forEach { + fill(sourceKSClassDeclaration, subtypesMap, it) + } + } else { + val sourceClassName = sourceKSClassDeclaration.toClassName() + val targetClassClassName = targetClassDeclaration.toClassName() + val targetClassTypeDefinition = createTypeDefinition(targetClassDeclaration) + val simpleName = targetClassDeclaration.simpleName.asString() + val withFirstLowerCase = simpleName.replaceFirstChar { it.lowercase() } + val castedOrNullName = "${withFirstLowerCase}OrNull" + + addTopLevelImport(targetClassClassName) + addFunction( + FunSpec.builder(castedOrNullName).apply { + receiver(sourceClassName) + addCode( + "return this as? %L", + targetClassTypeDefinition + ) + returns(targetClassTypeDefinition.copy(nullable = true)) + addModifiers(KModifier.INLINE) + }.build() + ) + addFunction( + FunSpec.builder("${withFirstLowerCase}OrThrow").apply { + receiver(sourceClassName) + addCode( + "return this as %L", + targetClassTypeDefinition + ) + returns(targetClassTypeDefinition) + addModifiers(KModifier.INLINE) + }.build() + ) + addFunction( + FunSpec.builder("if$simpleName").apply { + val genericType = TypeVariableName("T", null) + addTypeVariable(genericType) + receiver(sourceClassName) + addParameter( + "block", + LambdaTypeName.get( + null, + targetClassTypeDefinition, + returnType = genericType + ) + ) + addCode( + "return ${castedOrNullName}() ?.let(block)", + targetClassTypeDefinition + ) + returns(genericType.copy(nullable = true)) + addModifiers(KModifier.INLINE) + }.build() + ) + + subtypesMap[targetClassDeclaration] ?.let { + if (it.count { it.classKind == ClassKind.CLASS } > 1) { + it + } else { + it.filter { it.classKind != ClassKind.CLASS } + } + } ?.forEach { + fill(sourceKSClassDeclaration, subtypesMap, it) + fill(targetClassDeclaration, subtypesMap, it) + } + } +} diff --git a/tgbotapi.ksp/processor/src/main/kotlin/TelegramBotAPISymbolProcessor.kt b/tgbotapi.ksp/processor/src/main/kotlin/TelegramBotAPISymbolProcessor.kt new file mode 100644 index 0000000000..7fdf0f635c --- /dev/null +++ b/tgbotapi.ksp/processor/src/main/kotlin/TelegramBotAPISymbolProcessor.kt @@ -0,0 +1,77 @@ +package dev.inmo.tgbotapi.ksp.processor + +import com.google.devtools.ksp.getAllSuperTypes +import com.google.devtools.ksp.processing.* +import com.google.devtools.ksp.symbol.KSAnnotated +import com.google.devtools.ksp.symbol.KSClassDeclaration +import com.squareup.kotlinpoet.AnnotationSpec +import com.squareup.kotlinpoet.FileSpec +import com.squareup.kotlinpoet.ksp.writeTo +import dev.inmo.tgbotapi.ksp.lib.ClassCastsIncluded +import java.io.File + +class TelegramBotAPISymbolProcessor( + private val codeGenerator: CodeGenerator, + private val targetPackage: String = "", + private val outputFile: String = "Output", + private val outputFolder: String? = null +) : SymbolProcessor { + override fun process(resolver: Resolver): List { + val classes = resolver.getSymbolsWithAnnotation(ClassCastsIncluded::class.qualifiedName!!).filterIsInstance() + val classesSubtypes = mutableMapOf>() + + resolver.getAllFiles().forEach { + it.declarations.forEach { potentialSubtype -> + if (potentialSubtype is KSClassDeclaration) { + val allSupertypes = potentialSubtype.getAllSuperTypes().map { it.declaration } + classes.forEach { + if (it in allSupertypes) { + classesSubtypes.getOrPut(it) { mutableSetOf() }.add(potentialSubtype) + } + } + } + } + } + fun fillWithSealeds(source: KSClassDeclaration, current: KSClassDeclaration = source) { + current.getSealedSubclasses().forEach { + classesSubtypes.getOrPut(source) { mutableSetOf() }.add(it) + fillWithSealeds(source, it) + } + } + classes.forEach { fillWithSealeds(it) } + + val fileSpec = FileSpec.builder( + targetPackage, + outputFile + ).apply { + addAnnotation( + AnnotationSpec.builder(Suppress::class).apply { + addMember("\"unused\"") + addMember("\"RemoveRedundantQualifierName\"") + addMember("\"RedundantVisibilityModifier\"") + addMember("\"NOTHING_TO_INLINE\"") + addMember("\"UNCHECKED_CAST\"") + addMember("\"OPT_IN_USAGE\"") + useSiteTarget(AnnotationSpec.UseSiteTarget.FILE) + }.build() + ) + classes.forEach { + fill( + it, + classesSubtypes.toMap() + ) + } + }.build() + runCatching { + outputFolder ?.also { + File(it).apply { + delete() + runCatching { mkdirs() } + fileSpec.writeTo(this) + } + } ?: fileSpec.writeTo(codeGenerator, false) + } + + return emptyList() + } +} diff --git a/tgbotapi.ksp/processor/src/main/kotlin/TelegramBotAPISymbolProcessorProvider.kt b/tgbotapi.ksp/processor/src/main/kotlin/TelegramBotAPISymbolProcessorProvider.kt new file mode 100644 index 0000000000..a6d4c0e7a9 --- /dev/null +++ b/tgbotapi.ksp/processor/src/main/kotlin/TelegramBotAPISymbolProcessorProvider.kt @@ -0,0 +1,14 @@ +package dev.inmo.tgbotapi.ksp.processor + +import com.google.devtools.ksp.processing.* + +class TelegramBotAPISymbolProcessorProvider : SymbolProcessorProvider { + override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { + return TelegramBotAPISymbolProcessor( + environment.codeGenerator, + environment.options["cctargetPackage"] ?: "", + environment.options["ccoutputFileName"] ?: "Output", + environment.options["ccoutputFolder"], + ) + } +} diff --git a/tgbotapi.ksp/processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/tgbotapi.ksp/processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider new file mode 100644 index 0000000000..f0b099fb8c --- /dev/null +++ b/tgbotapi.ksp/processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider @@ -0,0 +1 @@ +dev.inmo.tgbotapi.ksp.processor.TelegramBotAPISymbolProcessorProvider 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 2f3194d072..0a9cfa3e83 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 @@ -6,8 +6,6 @@ import dev.inmo.tgbotapi.abstracts.* import dev.inmo.tgbotapi.requests.send.payments.CreateInvoiceLink import dev.inmo.tgbotapi.requests.send.payments.SendInvoice import dev.inmo.tgbotapi.types.* -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,26 +18,16 @@ 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.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.* -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.chat.member.* import dev.inmo.tgbotapi.types.dice.* import dev.inmo.tgbotapi.types.files.* -import dev.inmo.tgbotapi.types.files.Sticker import dev.inmo.tgbotapi.types.location.* +import dev.inmo.tgbotapi.types.media.* import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMember @@ -48,11 +36,6 @@ import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage 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.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.* @@ -61,13 +44,14 @@ import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.* 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.queries.callback.* import dev.inmo.tgbotapi.types.update.* import dev.inmo.tgbotapi.types.update.abstracts.* import dev.inmo.tgbotapi.types.update.media_group.* import dev.inmo.tgbotapi.utils.PreviewFeature @PreviewFeature -inline fun Chat.whenBot(block: (Bot) -> T) = asBot() ?.let(block) +inline fun Chat.whenBot(block: (Bot) -> T) = asBot()?.let(block) @PreviewFeature inline fun Chat.asBot(): Bot? = this as? Bot @@ -76,7 +60,7 @@ inline fun Chat.asBot(): Bot? = this as? Bot inline fun Chat.requireBot(): Bot = this as Bot @PreviewFeature -inline fun Chat.whenCommonBot(block: (CommonBot) -> T) = asCommonBot() ?.let(block) +inline fun Chat.whenCommonBot(block: (CommonBot) -> T) = asCommonBot()?.let(block) @PreviewFeature inline fun Chat.asCommonBot(): CommonBot? = this as? CommonBot @@ -85,7 +69,7 @@ inline fun Chat.asCommonBot(): CommonBot? = this as? CommonBot inline fun Chat.requireCommonBot(): CommonBot = this as CommonBot @PreviewFeature -inline fun Chat.whenCommonUser(block: (CommonUser) -> T) = asCommonUser() ?.let(block) +inline fun Chat.whenCommonUser(block: (CommonUser) -> T) = asCommonUser()?.let(block) @PreviewFeature inline fun Chat.asCommonUser(): CommonUser? = this as? CommonUser @@ -94,7 +78,7 @@ inline fun Chat.asCommonUser(): CommonUser? = this as? CommonUser inline fun Chat.requireCommonUser(): CommonUser = this as CommonUser @PreviewFeature -inline fun Chat.whenExtendedBot(block: (ExtendedBot) -> T) = asExtendedBot() ?.let(block) +inline fun Chat.whenExtendedBot(block: (ExtendedBot) -> T) = asExtendedBot()?.let(block) @PreviewFeature inline fun Chat.asExtendedBot(): ExtendedBot? = this as? ExtendedBot @@ -103,7 +87,7 @@ inline fun Chat.asExtendedBot(): ExtendedBot? = this as? ExtendedBot inline fun Chat.requireExtendedBot(): ExtendedBot = this as ExtendedBot @PreviewFeature -inline fun Chat.whenUser(block: (User) -> T) = asUser() ?.let(block) +inline fun Chat.whenUser(block: (User) -> T) = asUser()?.let(block) @PreviewFeature inline fun Chat.asUser(): User? = this as? User @@ -112,7 +96,7 @@ inline fun Chat.asUser(): User? = this as? User inline fun Chat.requireUser(): User = this as User @PreviewFeature -inline fun Chat.whenChannelChat(block: (ChannelChat) -> T) = asChannelChat() ?.let(block) +inline fun Chat.whenChannelChat(block: (ChannelChat) -> T) = asChannelChat()?.let(block) @PreviewFeature inline fun Chat.asChannelChat(): ChannelChat? = this as? ChannelChat @@ -121,7 +105,7 @@ inline fun Chat.asChannelChat(): ChannelChat? = this as? ChannelChat inline fun Chat.requireChannelChat(): ChannelChat = this as ChannelChat @PreviewFeature -inline fun Chat.whenGroupChat(block: (GroupChat) -> T) = asGroupChat() ?.let(block) +inline fun Chat.whenGroupChat(block: (GroupChat) -> T) = asGroupChat()?.let(block) @PreviewFeature inline fun Chat.asGroupChat(): GroupChat? = this as? GroupChat @@ -130,7 +114,7 @@ inline fun Chat.asGroupChat(): GroupChat? = this as? GroupChat inline fun Chat.requireGroupChat(): GroupChat = this as GroupChat @PreviewFeature -inline fun Chat.whenPrivateChat(block: (PrivateChat) -> T) = asPrivateChat() ?.let(block) +inline fun Chat.whenPrivateChat(block: (PrivateChat) -> T) = asPrivateChat()?.let(block) @PreviewFeature inline fun Chat.asPrivateChat(): PrivateChat? = this as? PrivateChat @@ -139,7 +123,7 @@ inline fun Chat.asPrivateChat(): PrivateChat? = this as? PrivateChat inline fun Chat.requirePrivateChat(): PrivateChat = this as PrivateChat @PreviewFeature -inline fun Chat.whenPublicChat(block: (PublicChat) -> T) = asPublicChat() ?.let(block) +inline fun Chat.whenPublicChat(block: (PublicChat) -> T) = asPublicChat()?.let(block) @PreviewFeature inline fun Chat.asPublicChat(): PublicChat? = this as? PublicChat @@ -148,7 +132,7 @@ inline fun Chat.asPublicChat(): PublicChat? = this as? PublicChat inline fun Chat.requirePublicChat(): PublicChat = this as PublicChat @PreviewFeature -inline fun Chat.whenSuperPublicChat(block: (SuperPublicChat) -> T) = asSuperPublicChat() ?.let(block) +inline fun Chat.whenSuperPublicChat(block: (SuperPublicChat) -> T) = asSuperPublicChat()?.let(block) @PreviewFeature inline fun Chat.asSuperPublicChat(): SuperPublicChat? = this as? SuperPublicChat @@ -157,7 +141,7 @@ inline fun Chat.asSuperPublicChat(): SuperPublicChat? = this as? SuperPublicChat inline fun Chat.requireSuperPublicChat(): SuperPublicChat = this as SuperPublicChat @PreviewFeature -inline fun Chat.whenSupergroupChat(block: (SupergroupChat) -> T) = asSupergroupChat() ?.let(block) +inline fun Chat.whenSupergroupChat(block: (SupergroupChat) -> T) = asSupergroupChat()?.let(block) @PreviewFeature inline fun Chat.asSupergroupChat(): SupergroupChat? = this as? SupergroupChat @@ -166,7 +150,7 @@ inline fun Chat.asSupergroupChat(): SupergroupChat? = this as? SupergroupChat inline fun Chat.requireSupergroupChat(): SupergroupChat = this as SupergroupChat @PreviewFeature -inline fun Chat.whenUnknownChatType(block: (UnknownChatType) -> T) = asUnknownChatType() ?.let(block) +inline fun Chat.whenUnknownChatType(block: (UnknownChatType) -> T) = asUnknownChatType()?.let(block) @PreviewFeature inline fun Chat.asUnknownChatType(): UnknownChatType? = this as? UnknownChatType @@ -175,7 +159,7 @@ inline fun Chat.asUnknownChatType(): UnknownChatType? = this as? UnknownChatType inline fun Chat.requireUnknownChatType(): UnknownChatType = this as UnknownChatType @PreviewFeature -inline fun Chat.whenUsernameChat(block: (UsernameChat) -> T) = asUsernameChat() ?.let(block) +inline fun Chat.whenUsernameChat(block: (UsernameChat) -> T) = asUsernameChat()?.let(block) @PreviewFeature inline fun Chat.asUsernameChat(): UsernameChat? = this as? UsernameChat @@ -184,7 +168,7 @@ inline fun Chat.asUsernameChat(): UsernameChat? = this as? UsernameChat inline fun Chat.requireUsernameChat(): UsernameChat = this as UsernameChat @PreviewFeature -inline fun Chat.whenExtendedChannelChat(block: (ExtendedChannelChat) -> T) = asExtendedChannelChat() ?.let(block) +inline fun Chat.whenExtendedChannelChat(block: (ExtendedChannelChat) -> T) = asExtendedChannelChat()?.let(block) @PreviewFeature inline fun Chat.asExtendedChannelChat(): ExtendedChannelChat? = this as? ExtendedChannelChat @@ -193,7 +177,7 @@ inline fun Chat.asExtendedChannelChat(): ExtendedChannelChat? = this as? Extende inline fun Chat.requireExtendedChannelChat(): ExtendedChannelChat = this as ExtendedChannelChat @PreviewFeature -inline fun Chat.whenExtendedChat(block: (ExtendedChat) -> T) = asExtendedChat() ?.let(block) +inline fun Chat.whenExtendedChat(block: (ExtendedChat) -> T) = asExtendedChat()?.let(block) @PreviewFeature inline fun Chat.asExtendedChat(): ExtendedChat? = this as? ExtendedChat @@ -202,7 +186,7 @@ inline fun Chat.asExtendedChat(): ExtendedChat? = this as? ExtendedChat inline fun Chat.requireExtendedChat(): ExtendedChat = this as ExtendedChat @PreviewFeature -inline fun Chat.whenExtendedGroupChat(block: (ExtendedGroupChat) -> T) = asExtendedGroupChat() ?.let(block) +inline fun Chat.whenExtendedGroupChat(block: (ExtendedGroupChat) -> T) = asExtendedGroupChat()?.let(block) @PreviewFeature inline fun Chat.asExtendedGroupChat(): ExtendedGroupChat? = this as? ExtendedGroupChat @@ -211,7 +195,7 @@ inline fun Chat.asExtendedGroupChat(): ExtendedGroupChat? = this as? ExtendedGro inline fun Chat.requireExtendedGroupChat(): ExtendedGroupChat = this as ExtendedGroupChat @PreviewFeature -inline fun Chat.whenExtendedPrivateChat(block: (ExtendedPrivateChat) -> T) = asExtendedPrivateChat() ?.let(block) +inline fun Chat.whenExtendedPrivateChat(block: (ExtendedPrivateChat) -> T) = asExtendedPrivateChat()?.let(block) @PreviewFeature inline fun Chat.asExtendedPrivateChat(): ExtendedPrivateChat? = this as? ExtendedPrivateChat @@ -220,7 +204,7 @@ inline fun Chat.asExtendedPrivateChat(): ExtendedPrivateChat? = this as? Extende inline fun Chat.requireExtendedPrivateChat(): ExtendedPrivateChat = this as ExtendedPrivateChat @PreviewFeature -inline fun Chat.whenExtendedPublicChat(block: (ExtendedPublicChat) -> T) = asExtendedPublicChat() ?.let(block) +inline fun Chat.whenExtendedPublicChat(block: (ExtendedPublicChat) -> T) = asExtendedPublicChat()?.let(block) @PreviewFeature inline fun Chat.asExtendedPublicChat(): ExtendedPublicChat? = this as? ExtendedPublicChat @@ -229,7 +213,8 @@ inline fun Chat.asExtendedPublicChat(): ExtendedPublicChat? = this as? ExtendedP inline fun Chat.requireExtendedPublicChat(): ExtendedPublicChat = this as ExtendedPublicChat @PreviewFeature -inline fun Chat.whenExtendedSupergroupChat(block: (ExtendedSupergroupChat) -> T) = asExtendedSupergroupChat() ?.let(block) +inline fun Chat.whenExtendedSupergroupChat(block: (ExtendedSupergroupChat) -> T) = + asExtendedSupergroupChat()?.let(block) @PreviewFeature inline fun Chat.asExtendedSupergroupChat(): ExtendedSupergroupChat? = this as? ExtendedSupergroupChat @@ -238,7 +223,7 @@ inline fun Chat.asExtendedSupergroupChat(): ExtendedSupergroupChat? = this as? E inline fun Chat.requireExtendedSupergroupChat(): ExtendedSupergroupChat = this as ExtendedSupergroupChat @PreviewFeature -inline fun Chat.whenPossiblyPremiumChat(block: (PossiblyPremiumChat) -> T) = asPossiblyPremiumChat() ?.let(block) +inline fun Chat.whenPossiblyPremiumChat(block: (PossiblyPremiumChat) -> T) = asPossiblyPremiumChat()?.let(block) @PreviewFeature inline fun Chat.asPossiblyPremiumChat(): PossiblyPremiumChat? = this as? PossiblyPremiumChat @@ -247,16 +232,19 @@ inline fun Chat.asPossiblyPremiumChat(): PossiblyPremiumChat? = this as? Possibl inline fun Chat.requirePossiblyPremiumChat(): PossiblyPremiumChat = this as PossiblyPremiumChat @PreviewFeature -inline fun Chat.whenAbleToAddInAttachmentMenuChat(block: (AbleToAddInAttachmentMenuChat) -> T) = asAbleToAddInAttachmentMenuChat() ?.let(block) +inline fun Chat.whenAbleToAddInAttachmentMenuChat(block: (AbleToAddInAttachmentMenuChat) -> T) = + asAbleToAddInAttachmentMenuChat()?.let(block) @PreviewFeature -inline fun Chat.asAbleToAddInAttachmentMenuChat(): AbleToAddInAttachmentMenuChat? = this as? AbleToAddInAttachmentMenuChat +inline fun Chat.asAbleToAddInAttachmentMenuChat(): AbleToAddInAttachmentMenuChat? = + this as? AbleToAddInAttachmentMenuChat @PreviewFeature -inline fun Chat.requireAbleToAddInAttachmentMenuChat(): AbleToAddInAttachmentMenuChat = this as AbleToAddInAttachmentMenuChat +inline fun Chat.requireAbleToAddInAttachmentMenuChat(): AbleToAddInAttachmentMenuChat = + this as AbleToAddInAttachmentMenuChat @PreviewFeature -inline fun CallbackQuery.whenDataCallbackQuery(block: (DataCallbackQuery) -> T) = asDataCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenDataCallbackQuery(block: (DataCallbackQuery) -> T) = asDataCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asDataCallbackQuery(): DataCallbackQuery? = this as? DataCallbackQuery @@ -265,7 +253,8 @@ inline fun CallbackQuery.asDataCallbackQuery(): DataCallbackQuery? = this as? Da inline fun CallbackQuery.requireDataCallbackQuery(): DataCallbackQuery = this as DataCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenGameShortNameCallbackQuery(block: (GameShortNameCallbackQuery) -> T) = asGameShortNameCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenGameShortNameCallbackQuery(block: (GameShortNameCallbackQuery) -> T) = + asGameShortNameCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asGameShortNameCallbackQuery(): GameShortNameCallbackQuery? = @@ -276,7 +265,8 @@ inline fun CallbackQuery.requireGameShortNameCallbackQuery(): GameShortNameCallb this as GameShortNameCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenInlineMessageIdCallbackQuery(block: (InlineMessageIdCallbackQuery) -> T) = asInlineMessageIdCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenInlineMessageIdCallbackQuery(block: (InlineMessageIdCallbackQuery) -> T) = + asInlineMessageIdCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asInlineMessageIdCallbackQuery(): InlineMessageIdCallbackQuery? = @@ -287,7 +277,8 @@ inline fun CallbackQuery.requireInlineMessageIdCallbackQuery(): InlineMessageIdC this as InlineMessageIdCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenInlineMessageIdDataCallbackQuery(block: (InlineMessageIdDataCallbackQuery) -> T) = asInlineMessageIdDataCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenInlineMessageIdDataCallbackQuery(block: (InlineMessageIdDataCallbackQuery) -> T) = + asInlineMessageIdDataCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asInlineMessageIdDataCallbackQuery(): InlineMessageIdDataCallbackQuery? = @@ -298,7 +289,8 @@ inline fun CallbackQuery.requireInlineMessageIdDataCallbackQuery(): InlineMessag this as InlineMessageIdDataCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenInlineMessageIdGameShortNameCallbackQuery(block: (InlineMessageIdGameShortNameCallbackQuery) -> T) = asInlineMessageIdGameShortNameCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenInlineMessageIdGameShortNameCallbackQuery(block: (InlineMessageIdGameShortNameCallbackQuery) -> T) = + asInlineMessageIdGameShortNameCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asInlineMessageIdGameShortNameCallbackQuery(): InlineMessageIdGameShortNameCallbackQuery? = @@ -309,7 +301,8 @@ inline fun CallbackQuery.requireInlineMessageIdGameShortNameCallbackQuery(): Inl this as InlineMessageIdGameShortNameCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenMessageCallbackQuery(block: (MessageCallbackQuery) -> T) = asMessageCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenMessageCallbackQuery(block: (MessageCallbackQuery) -> T) = + asMessageCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asMessageCallbackQuery(): MessageCallbackQuery? = this as? MessageCallbackQuery @@ -318,7 +311,8 @@ inline fun CallbackQuery.asMessageCallbackQuery(): MessageCallbackQuery? = this inline fun CallbackQuery.requireMessageCallbackQuery(): MessageCallbackQuery = this as MessageCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenMessageDataCallbackQuery(block: (MessageDataCallbackQuery) -> T) = asMessageDataCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenMessageDataCallbackQuery(block: (MessageDataCallbackQuery) -> T) = + asMessageDataCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asMessageDataCallbackQuery(): MessageDataCallbackQuery? = this as? MessageDataCallbackQuery @@ -327,7 +321,8 @@ inline fun CallbackQuery.asMessageDataCallbackQuery(): MessageDataCallbackQuery? inline fun CallbackQuery.requireMessageDataCallbackQuery(): MessageDataCallbackQuery = this as MessageDataCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenMessageGameShortNameCallbackQuery(block: (MessageGameShortNameCallbackQuery) -> T) = asMessageGameShortNameCallbackQuery() ?.let(block) +inline fun CallbackQuery.whenMessageGameShortNameCallbackQuery(block: (MessageGameShortNameCallbackQuery) -> T) = + asMessageGameShortNameCallbackQuery()?.let(block) @PreviewFeature inline fun CallbackQuery.asMessageGameShortNameCallbackQuery(): MessageGameShortNameCallbackQuery? = @@ -338,7 +333,8 @@ inline fun CallbackQuery.requireMessageGameShortNameCallbackQuery(): MessageGame this as MessageGameShortNameCallbackQuery @PreviewFeature -inline fun CallbackQuery.whenUnknownCallbackQueryType(block: (UnknownCallbackQueryType) -> T) = asUnknownCallbackQueryType() ?.let(block) +inline fun CallbackQuery.whenUnknownCallbackQueryType(block: (UnknownCallbackQueryType) -> T) = + asUnknownCallbackQueryType()?.let(block) @PreviewFeature inline fun CallbackQuery.asUnknownCallbackQueryType(): UnknownCallbackQueryType? = this as? UnknownCallbackQueryType @@ -347,7 +343,8 @@ inline fun CallbackQuery.asUnknownCallbackQueryType(): UnknownCallbackQueryType? inline fun CallbackQuery.requireUnknownCallbackQueryType(): UnknownCallbackQueryType = this as UnknownCallbackQueryType @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorDataField(block: (PassportElementErrorDataField) -> T) = asPassportElementErrorDataField() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorDataField(block: (PassportElementErrorDataField) -> T) = + asPassportElementErrorDataField()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorDataField(): PassportElementErrorDataField? = @@ -358,7 +355,8 @@ inline fun PassportElementError.requirePassportElementErrorDataField(): Passport this as PassportElementErrorDataField @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorFile(block: (PassportElementErrorFile) -> T) = asPassportElementErrorFile() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorFile(block: (PassportElementErrorFile) -> T) = + asPassportElementErrorFile()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorFile(): PassportElementErrorFile? = @@ -369,7 +367,8 @@ inline fun PassportElementError.requirePassportElementErrorFile(): PassportEleme this as PassportElementErrorFile @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorFiles(block: (PassportElementErrorFiles) -> T) = asPassportElementErrorFiles() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorFiles(block: (PassportElementErrorFiles) -> T) = + asPassportElementErrorFiles()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorFiles(): PassportElementErrorFiles? = @@ -380,7 +379,8 @@ inline fun PassportElementError.requirePassportElementErrorFiles(): PassportElem this as PassportElementErrorFiles @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorFrontSide(block: (PassportElementErrorFrontSide) -> T) = asPassportElementErrorFrontSide() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorFrontSide(block: (PassportElementErrorFrontSide) -> T) = + asPassportElementErrorFrontSide()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorFrontSide(): PassportElementErrorFrontSide? = @@ -391,7 +391,8 @@ inline fun PassportElementError.requirePassportElementErrorFrontSide(): Passport this as PassportElementErrorFrontSide @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorReverseSide(block: (PassportElementErrorReverseSide) -> T) = asPassportElementErrorReverseSide() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorReverseSide(block: (PassportElementErrorReverseSide) -> T) = + asPassportElementErrorReverseSide()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorReverseSide(): PassportElementErrorReverseSide? = @@ -402,7 +403,8 @@ inline fun PassportElementError.requirePassportElementErrorReverseSide(): Passpo this as PassportElementErrorReverseSide @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorSelfie(block: (PassportElementErrorSelfie) -> T) = asPassportElementErrorSelfie() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorSelfie(block: (PassportElementErrorSelfie) -> T) = + asPassportElementErrorSelfie()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorSelfie(): PassportElementErrorSelfie? = @@ -413,7 +415,8 @@ inline fun PassportElementError.requirePassportElementErrorSelfie(): PassportEle this as PassportElementErrorSelfie @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorTranslationFile(block: (PassportElementErrorTranslationFile) -> T) = asPassportElementErrorTranslationFile() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorTranslationFile(block: (PassportElementErrorTranslationFile) -> T) = + asPassportElementErrorTranslationFile()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorTranslationFile(): PassportElementErrorTranslationFile? = @@ -424,7 +427,8 @@ inline fun PassportElementError.requirePassportElementErrorTranslationFile(): Pa this as PassportElementErrorTranslationFile @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorTranslationFiles(block: (PassportElementErrorTranslationFiles) -> T) = asPassportElementErrorTranslationFiles() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorTranslationFiles(block: (PassportElementErrorTranslationFiles) -> T) = + asPassportElementErrorTranslationFiles()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorTranslationFiles(): PassportElementErrorTranslationFiles? = @@ -435,7 +439,8 @@ inline fun PassportElementError.requirePassportElementErrorTranslationFiles(): P this as PassportElementErrorTranslationFiles @PreviewFeature -inline fun PassportElementError.whenPassportElementErrorUnspecified(block: (PassportElementErrorUnspecified) -> T) = asPassportElementErrorUnspecified() ?.let(block) +inline fun PassportElementError.whenPassportElementErrorUnspecified(block: (PassportElementErrorUnspecified) -> T) = + asPassportElementErrorUnspecified()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementErrorUnspecified(): PassportElementErrorUnspecified? = @@ -446,7 +451,8 @@ inline fun PassportElementError.requirePassportElementErrorUnspecified(): Passpo this as PassportElementErrorUnspecified @PreviewFeature -inline fun PassportElementError.whenPassportElementFileError(block: (PassportElementFileError) -> T) = asPassportElementFileError() ?.let(block) +inline fun PassportElementError.whenPassportElementFileError(block: (PassportElementFileError) -> T) = + asPassportElementFileError()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementFileError(): PassportElementFileError? = @@ -457,7 +463,8 @@ inline fun PassportElementError.requirePassportElementFileError(): PassportEleme this as PassportElementFileError @PreviewFeature -inline fun PassportElementError.whenPassportElementFilesError(block: (PassportElementFilesError) -> T) = asPassportElementFilesError() ?.let(block) +inline fun PassportElementError.whenPassportElementFilesError(block: (PassportElementFilesError) -> T) = + asPassportElementFilesError()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportElementFilesError(): PassportElementFilesError? = @@ -468,7 +475,8 @@ inline fun PassportElementError.requirePassportElementFilesError(): PassportElem this as PassportElementFilesError @PreviewFeature -inline fun PassportElementError.whenPassportMultipleElementsError(block: (PassportMultipleElementsError) -> T) = asPassportMultipleElementsError() ?.let(block) +inline fun PassportElementError.whenPassportMultipleElementsError(block: (PassportMultipleElementsError) -> T) = + asPassportMultipleElementsError()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportMultipleElementsError(): PassportMultipleElementsError? = @@ -479,7 +487,8 @@ inline fun PassportElementError.requirePassportMultipleElementsError(): Passport this as PassportMultipleElementsError @PreviewFeature -inline fun PassportElementError.whenPassportSingleElementError(block: (PassportSingleElementError) -> T) = asPassportSingleElementError() ?.let(block) +inline fun PassportElementError.whenPassportSingleElementError(block: (PassportSingleElementError) -> T) = + asPassportSingleElementError()?.let(block) @PreviewFeature inline fun PassportElementError.asPassportSingleElementError(): PassportSingleElementError? = @@ -490,7 +499,8 @@ inline fun PassportElementError.requirePassportSingleElementError(): PassportSin this as PassportSingleElementError @PreviewFeature -inline fun PassportElementError.whenUnknownPassportElementError(block: (UnknownPassportElementError) -> T) = asUnknownPassportElementError() ?.let(block) +inline fun PassportElementError.whenUnknownPassportElementError(block: (UnknownPassportElementError) -> T) = + asUnknownPassportElementError()?.let(block) @PreviewFeature inline fun PassportElementError.asUnknownPassportElementError(): UnknownPassportElementError? = @@ -501,7 +511,7 @@ inline fun PassportElementError.requireUnknownPassportElementError(): UnknownPas this as UnknownPassportElementError @PreviewFeature -inline fun EncryptedPassportElement.whenBankStatement(block: (BankStatement) -> T) = asBankStatement() ?.let(block) +inline fun EncryptedPassportElement.whenBankStatement(block: (BankStatement) -> T) = asBankStatement()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asBankStatement(): BankStatement? = this as? BankStatement @@ -510,7 +520,8 @@ inline fun EncryptedPassportElement.asBankStatement(): BankStatement? = this as? inline fun EncryptedPassportElement.requireBankStatement(): BankStatement = this as BankStatement @PreviewFeature -inline fun EncryptedPassportElement.whenCommonPassport(block: (CommonPassport) -> T) = asCommonPassport() ?.let(block) +inline fun EncryptedPassportElement.whenCommonPassport(block: (CommonPassport) -> T) = + asCommonPassport()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asCommonPassport(): CommonPassport? = this as? CommonPassport @@ -519,7 +530,7 @@ inline fun EncryptedPassportElement.asCommonPassport(): CommonPassport? = this a inline fun EncryptedPassportElement.requireCommonPassport(): CommonPassport = this as CommonPassport @PreviewFeature -inline fun EncryptedPassportElement.whenDriverLicense(block: (DriverLicense) -> T) = asDriverLicense() ?.let(block) +inline fun EncryptedPassportElement.whenDriverLicense(block: (DriverLicense) -> T) = asDriverLicense()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asDriverLicense(): DriverLicense? = this as? DriverLicense @@ -528,7 +539,7 @@ inline fun EncryptedPassportElement.asDriverLicense(): DriverLicense? = this as? inline fun EncryptedPassportElement.requireDriverLicense(): DriverLicense = this as DriverLicense @PreviewFeature -inline fun EncryptedPassportElement.whenEmail(block: (Email) -> T) = asEmail() ?.let(block) +inline fun EncryptedPassportElement.whenEmail(block: (Email) -> T) = asEmail()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEmail(): Email? = this as? Email @@ -537,7 +548,8 @@ inline fun EncryptedPassportElement.asEmail(): Email? = this as? Email inline fun EncryptedPassportElement.requireEmail(): Email = this as Email @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedAddress(block: (EncryptedAddress) -> T) = asEncryptedAddress() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedAddress(block: (EncryptedAddress) -> T) = + asEncryptedAddress()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedAddress(): EncryptedAddress? = this as? EncryptedAddress @@ -546,7 +558,8 @@ inline fun EncryptedPassportElement.asEncryptedAddress(): EncryptedAddress? = th inline fun EncryptedPassportElement.requireEncryptedAddress(): EncryptedAddress = this as EncryptedAddress @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPersonalDetails(block: (EncryptedPersonalDetails) -> T) = asEncryptedPersonalDetails() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPersonalDetails(block: (EncryptedPersonalDetails) -> T) = + asEncryptedPersonalDetails()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPersonalDetails(): EncryptedPersonalDetails? = @@ -557,7 +570,7 @@ inline fun EncryptedPassportElement.requireEncryptedPersonalDetails(): Encrypted this as EncryptedPersonalDetails @PreviewFeature -inline fun EncryptedPassportElement.whenIdentityCard(block: (IdentityCard) -> T) = asIdentityCard() ?.let(block) +inline fun EncryptedPassportElement.whenIdentityCard(block: (IdentityCard) -> T) = asIdentityCard()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asIdentityCard(): IdentityCard? = this as? IdentityCard @@ -566,7 +579,8 @@ inline fun EncryptedPassportElement.asIdentityCard(): IdentityCard? = this as? I inline fun EncryptedPassportElement.requireIdentityCard(): IdentityCard = this as IdentityCard @PreviewFeature -inline fun EncryptedPassportElement.whenInternalPassport(block: (InternalPassport) -> T) = asInternalPassport() ?.let(block) +inline fun EncryptedPassportElement.whenInternalPassport(block: (InternalPassport) -> T) = + asInternalPassport()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asInternalPassport(): InternalPassport? = this as? InternalPassport @@ -575,7 +589,7 @@ inline fun EncryptedPassportElement.asInternalPassport(): InternalPassport? = th inline fun EncryptedPassportElement.requireInternalPassport(): InternalPassport = this as InternalPassport @PreviewFeature -inline fun EncryptedPassportElement.whenPassport(block: (Passport) -> T) = asPassport() ?.let(block) +inline fun EncryptedPassportElement.whenPassport(block: (Passport) -> T) = asPassport()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asPassport(): Passport? = this as? Passport @@ -584,7 +598,8 @@ inline fun EncryptedPassportElement.asPassport(): Passport? = this as? Passport inline fun EncryptedPassportElement.requirePassport(): Passport = this as Passport @PreviewFeature -inline fun EncryptedPassportElement.whenPassportRegistration(block: (PassportRegistration) -> T) = asPassportRegistration() ?.let(block) +inline fun EncryptedPassportElement.whenPassportRegistration(block: (PassportRegistration) -> T) = + asPassportRegistration()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asPassportRegistration(): PassportRegistration? = this as? PassportRegistration @@ -593,7 +608,7 @@ inline fun EncryptedPassportElement.asPassportRegistration(): PassportRegistrati inline fun EncryptedPassportElement.requirePassportRegistration(): PassportRegistration = this as PassportRegistration @PreviewFeature -inline fun EncryptedPassportElement.whenPhoneNumber(block: (PhoneNumber) -> T) = asPhoneNumber() ?.let(block) +inline fun EncryptedPassportElement.whenPhoneNumber(block: (PhoneNumber) -> T) = asPhoneNumber()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asPhoneNumber(): PhoneNumber? = this as? PhoneNumber @@ -602,7 +617,8 @@ inline fun EncryptedPassportElement.asPhoneNumber(): PhoneNumber? = this as? Pho inline fun EncryptedPassportElement.requirePhoneNumber(): PhoneNumber = this as PhoneNumber @PreviewFeature -inline fun EncryptedPassportElement.whenRentalAgreement(block: (RentalAgreement) -> T) = asRentalAgreement() ?.let(block) +inline fun EncryptedPassportElement.whenRentalAgreement(block: (RentalAgreement) -> T) = + asRentalAgreement()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asRentalAgreement(): RentalAgreement? = this as? RentalAgreement @@ -611,7 +627,8 @@ inline fun EncryptedPassportElement.asRentalAgreement(): RentalAgreement? = this inline fun EncryptedPassportElement.requireRentalAgreement(): RentalAgreement = this as RentalAgreement @PreviewFeature -inline fun EncryptedPassportElement.whenTemporaryRegistration(block: (TemporaryRegistration) -> T) = asTemporaryRegistration() ?.let(block) +inline fun EncryptedPassportElement.whenTemporaryRegistration(block: (TemporaryRegistration) -> T) = + asTemporaryRegistration()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asTemporaryRegistration(): TemporaryRegistration? = this as? TemporaryRegistration @@ -621,7 +638,8 @@ inline fun EncryptedPassportElement.requireTemporaryRegistration(): TemporaryReg this as TemporaryRegistration @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithTranslatableFilesCollection(block: (EncryptedPassportElementWithTranslatableFilesCollection) -> T) = asEncryptedPassportElementWithTranslatableFilesCollection() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithTranslatableFilesCollection(block: (EncryptedPassportElementWithTranslatableFilesCollection) -> T) = + asEncryptedPassportElementWithTranslatableFilesCollection()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithTranslatableFilesCollection(): EncryptedPassportElementWithTranslatableFilesCollection? = @@ -632,7 +650,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithTranslata this as EncryptedPassportElementWithTranslatableFilesCollection @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithTranslatableIDDocument(block: (EncryptedPassportElementWithTranslatableIDDocument) -> T) = asEncryptedPassportElementWithTranslatableIDDocument() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithTranslatableIDDocument(block: (EncryptedPassportElementWithTranslatableIDDocument) -> T) = + asEncryptedPassportElementWithTranslatableIDDocument()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithTranslatableIDDocument(): EncryptedPassportElementWithTranslatableIDDocument? = @@ -643,7 +662,7 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithTranslata this as EncryptedPassportElementWithTranslatableIDDocument @PreviewFeature -inline fun EncryptedPassportElement.whenUtilityBill(block: (UtilityBill) -> T) = asUtilityBill() ?.let(block) +inline fun EncryptedPassportElement.whenUtilityBill(block: (UtilityBill) -> T) = asUtilityBill()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asUtilityBill(): UtilityBill? = this as? UtilityBill @@ -652,7 +671,8 @@ inline fun EncryptedPassportElement.asUtilityBill(): UtilityBill? = this as? Uti inline fun EncryptedPassportElement.requireUtilityBill(): UtilityBill = this as UtilityBill @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithFilesCollection(block: (EncryptedPassportElementWithFilesCollection) -> T) = asEncryptedPassportElementWithFilesCollection() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithFilesCollection(block: (EncryptedPassportElementWithFilesCollection) -> T) = + asEncryptedPassportElementWithFilesCollection()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithFilesCollection(): EncryptedPassportElementWithFilesCollection? = @@ -663,7 +683,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithFilesColl this as EncryptedPassportElementWithFilesCollection @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementTranslatable(block: (EncryptedPassportElementTranslatable) -> T) = asEncryptedPassportElementTranslatable() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementTranslatable(block: (EncryptedPassportElementTranslatable) -> T) = + asEncryptedPassportElementTranslatable()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementTranslatable(): EncryptedPassportElementTranslatable? = @@ -674,7 +695,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementTranslatable( this as EncryptedPassportElementTranslatable @PreviewFeature -inline fun EncryptedPassportElement.whenUnknownEncryptedPassportElement(block: (UnknownEncryptedPassportElement) -> T) = asUnknownEncryptedPassportElement() ?.let(block) +inline fun EncryptedPassportElement.whenUnknownEncryptedPassportElement(block: (UnknownEncryptedPassportElement) -> T) = + asUnknownEncryptedPassportElement()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asUnknownEncryptedPassportElement(): UnknownEncryptedPassportElement? = @@ -685,7 +707,8 @@ inline fun EncryptedPassportElement.requireUnknownEncryptedPassportElement(): Un this as UnknownEncryptedPassportElement @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithData(block: (EncryptedPassportElementWithData) -> T) = asEncryptedPassportElementWithData() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithData(block: (EncryptedPassportElementWithData) -> T) = + asEncryptedPassportElementWithData()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithData(): EncryptedPassportElementWithData? = @@ -696,7 +719,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithData(): E this as EncryptedPassportElementWithData @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithEmail(block: (EncryptedPassportElementWithEmail) -> T) = asEncryptedPassportElementWithEmail() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithEmail(block: (EncryptedPassportElementWithEmail) -> T) = + asEncryptedPassportElementWithEmail()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithEmail(): EncryptedPassportElementWithEmail? = @@ -707,7 +731,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithEmail(): this as EncryptedPassportElementWithEmail @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithFrontSide(block: (EncryptedPassportElementWithFrontSide) -> T) = asEncryptedPassportElementWithFrontSide() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithFrontSide(block: (EncryptedPassportElementWithFrontSide) -> T) = + asEncryptedPassportElementWithFrontSide()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithFrontSide(): EncryptedPassportElementWithFrontSide? = @@ -718,7 +743,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithFrontSide this as EncryptedPassportElementWithFrontSide @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithPhoneNumber(block: (EncryptedPassportElementWithPhoneNumber) -> T) = asEncryptedPassportElementWithPhoneNumber() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithPhoneNumber(block: (EncryptedPassportElementWithPhoneNumber) -> T) = + asEncryptedPassportElementWithPhoneNumber()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithPhoneNumber(): EncryptedPassportElementWithPhoneNumber? = @@ -729,7 +755,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithPhoneNumb this as EncryptedPassportElementWithPhoneNumber @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithReverseSide(block: (EncryptedPassportElementWithReverseSide) -> T) = asEncryptedPassportElementWithReverseSide() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithReverseSide(block: (EncryptedPassportElementWithReverseSide) -> T) = + asEncryptedPassportElementWithReverseSide()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithReverseSide(): EncryptedPassportElementWithReverseSide? = @@ -740,7 +767,8 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithReverseSi this as EncryptedPassportElementWithReverseSide @PreviewFeature -inline fun EncryptedPassportElement.whenEncryptedPassportElementWithSelfie(block: (EncryptedPassportElementWithSelfie) -> T) = asEncryptedPassportElementWithSelfie() ?.let(block) +inline fun EncryptedPassportElement.whenEncryptedPassportElementWithSelfie(block: (EncryptedPassportElementWithSelfie) -> T) = + asEncryptedPassportElementWithSelfie()?.let(block) @PreviewFeature inline fun EncryptedPassportElement.asEncryptedPassportElementWithSelfie(): EncryptedPassportElementWithSelfie? = @@ -751,7 +779,7 @@ inline fun EncryptedPassportElement.requireEncryptedPassportElementWithSelfie(): this as EncryptedPassportElementWithSelfie @PreviewFeature -inline fun SecureValue.whenAddressSecureValue(block: (AddressSecureValue) -> T) = asAddressSecureValue() ?.let(block) +inline fun SecureValue.whenAddressSecureValue(block: (AddressSecureValue) -> T) = asAddressSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asAddressSecureValue(): AddressSecureValue? = this as? AddressSecureValue @@ -760,7 +788,8 @@ inline fun SecureValue.asAddressSecureValue(): AddressSecureValue? = this as? Ad inline fun SecureValue.requireAddressSecureValue(): AddressSecureValue = this as AddressSecureValue @PreviewFeature -inline fun SecureValue.whenBankStatementSecureValue(block: (BankStatementSecureValue) -> T) = asBankStatementSecureValue() ?.let(block) +inline fun SecureValue.whenBankStatementSecureValue(block: (BankStatementSecureValue) -> T) = + asBankStatementSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asBankStatementSecureValue(): BankStatementSecureValue? = this as? BankStatementSecureValue @@ -769,7 +798,8 @@ inline fun SecureValue.asBankStatementSecureValue(): BankStatementSecureValue? = inline fun SecureValue.requireBankStatementSecureValue(): BankStatementSecureValue = this as BankStatementSecureValue @PreviewFeature -inline fun SecureValue.whenCommonPassportSecureValue(block: (CommonPassportSecureValue) -> T) = asCommonPassportSecureValue() ?.let(block) +inline fun SecureValue.whenCommonPassportSecureValue(block: (CommonPassportSecureValue) -> T) = + asCommonPassportSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asCommonPassportSecureValue(): CommonPassportSecureValue? = this as? CommonPassportSecureValue @@ -778,7 +808,8 @@ inline fun SecureValue.asCommonPassportSecureValue(): CommonPassportSecureValue? inline fun SecureValue.requireCommonPassportSecureValue(): CommonPassportSecureValue = this as CommonPassportSecureValue @PreviewFeature -inline fun SecureValue.whenDriverLicenseSecureValue(block: (DriverLicenseSecureValue) -> T) = asDriverLicenseSecureValue() ?.let(block) +inline fun SecureValue.whenDriverLicenseSecureValue(block: (DriverLicenseSecureValue) -> T) = + asDriverLicenseSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asDriverLicenseSecureValue(): DriverLicenseSecureValue? = this as? DriverLicenseSecureValue @@ -787,7 +818,8 @@ inline fun SecureValue.asDriverLicenseSecureValue(): DriverLicenseSecureValue? = inline fun SecureValue.requireDriverLicenseSecureValue(): DriverLicenseSecureValue = this as DriverLicenseSecureValue @PreviewFeature -inline fun SecureValue.whenIdentityCardSecureValue(block: (IdentityCardSecureValue) -> T) = asIdentityCardSecureValue() ?.let(block) +inline fun SecureValue.whenIdentityCardSecureValue(block: (IdentityCardSecureValue) -> T) = + asIdentityCardSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asIdentityCardSecureValue(): IdentityCardSecureValue? = this as? IdentityCardSecureValue @@ -796,7 +828,8 @@ inline fun SecureValue.asIdentityCardSecureValue(): IdentityCardSecureValue? = t inline fun SecureValue.requireIdentityCardSecureValue(): IdentityCardSecureValue = this as IdentityCardSecureValue @PreviewFeature -inline fun SecureValue.whenIdentityWithReverseSideSecureValue(block: (IdentityWithReverseSideSecureValue) -> T) = asIdentityWithReverseSideSecureValue() ?.let(block) +inline fun SecureValue.whenIdentityWithReverseSideSecureValue(block: (IdentityWithReverseSideSecureValue) -> T) = + asIdentityWithReverseSideSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asIdentityWithReverseSideSecureValue(): IdentityWithReverseSideSecureValue? = @@ -807,7 +840,8 @@ inline fun SecureValue.requireIdentityWithReverseSideSecureValue(): IdentityWith this as IdentityWithReverseSideSecureValue @PreviewFeature -inline fun SecureValue.whenInternalPassportSecureValue(block: (InternalPassportSecureValue) -> T) = asInternalPassportSecureValue() ?.let(block) +inline fun SecureValue.whenInternalPassportSecureValue(block: (InternalPassportSecureValue) -> T) = + asInternalPassportSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asInternalPassportSecureValue(): InternalPassportSecureValue? = @@ -818,7 +852,8 @@ inline fun SecureValue.requireInternalPassportSecureValue(): InternalPassportSec this as InternalPassportSecureValue @PreviewFeature -inline fun SecureValue.whenOtherDocumentsSecureValue(block: (OtherDocumentsSecureValue) -> T) = asOtherDocumentsSecureValue() ?.let(block) +inline fun SecureValue.whenOtherDocumentsSecureValue(block: (OtherDocumentsSecureValue) -> T) = + asOtherDocumentsSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asOtherDocumentsSecureValue(): OtherDocumentsSecureValue? = this as? OtherDocumentsSecureValue @@ -827,7 +862,8 @@ inline fun SecureValue.asOtherDocumentsSecureValue(): OtherDocumentsSecureValue? inline fun SecureValue.requireOtherDocumentsSecureValue(): OtherDocumentsSecureValue = this as OtherDocumentsSecureValue @PreviewFeature -inline fun SecureValue.whenPassportRegistrationSecureValue(block: (PassportRegistrationSecureValue) -> T) = asPassportRegistrationSecureValue() ?.let(block) +inline fun SecureValue.whenPassportRegistrationSecureValue(block: (PassportRegistrationSecureValue) -> T) = + asPassportRegistrationSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asPassportRegistrationSecureValue(): PassportRegistrationSecureValue? = @@ -838,7 +874,8 @@ inline fun SecureValue.requirePassportRegistrationSecureValue(): PassportRegistr this as PassportRegistrationSecureValue @PreviewFeature -inline fun SecureValue.whenPassportSecureValue(block: (PassportSecureValue) -> T) = asPassportSecureValue() ?.let(block) +inline fun SecureValue.whenPassportSecureValue(block: (PassportSecureValue) -> T) = + asPassportSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asPassportSecureValue(): PassportSecureValue? = this as? PassportSecureValue @@ -847,7 +884,8 @@ inline fun SecureValue.asPassportSecureValue(): PassportSecureValue? = this as? inline fun SecureValue.requirePassportSecureValue(): PassportSecureValue = this as PassportSecureValue @PreviewFeature -inline fun SecureValue.whenPersonalDetailsSecureValue(block: (PersonalDetailsSecureValue) -> T) = asPersonalDetailsSecureValue() ?.let(block) +inline fun SecureValue.whenPersonalDetailsSecureValue(block: (PersonalDetailsSecureValue) -> T) = + asPersonalDetailsSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asPersonalDetailsSecureValue(): PersonalDetailsSecureValue? = this as? PersonalDetailsSecureValue @@ -857,7 +895,8 @@ inline fun SecureValue.requirePersonalDetailsSecureValue(): PersonalDetailsSecur this as PersonalDetailsSecureValue @PreviewFeature -inline fun SecureValue.whenRentalAgreementSecureValue(block: (RentalAgreementSecureValue) -> T) = asRentalAgreementSecureValue() ?.let(block) +inline fun SecureValue.whenRentalAgreementSecureValue(block: (RentalAgreementSecureValue) -> T) = + asRentalAgreementSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asRentalAgreementSecureValue(): RentalAgreementSecureValue? = this as? RentalAgreementSecureValue @@ -867,7 +906,8 @@ inline fun SecureValue.requireRentalAgreementSecureValue(): RentalAgreementSecur this as RentalAgreementSecureValue @PreviewFeature -inline fun SecureValue.whenTemporalRegistrationSecureValue(block: (TemporalRegistrationSecureValue) -> T) = asTemporalRegistrationSecureValue() ?.let(block) +inline fun SecureValue.whenTemporalRegistrationSecureValue(block: (TemporalRegistrationSecureValue) -> T) = + asTemporalRegistrationSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asTemporalRegistrationSecureValue(): TemporalRegistrationSecureValue? = @@ -878,7 +918,8 @@ inline fun SecureValue.requireTemporalRegistrationSecureValue(): TemporalRegistr this as TemporalRegistrationSecureValue @PreviewFeature -inline fun SecureValue.whenUtilityBillSecureValue(block: (UtilityBillSecureValue) -> T) = asUtilityBillSecureValue() ?.let(block) +inline fun SecureValue.whenUtilityBillSecureValue(block: (UtilityBillSecureValue) -> T) = + asUtilityBillSecureValue()?.let(block) @PreviewFeature inline fun SecureValue.asUtilityBillSecureValue(): UtilityBillSecureValue? = this as? UtilityBillSecureValue @@ -887,7 +928,8 @@ inline fun SecureValue.asUtilityBillSecureValue(): UtilityBillSecureValue? = thi inline fun SecureValue.requireUtilityBillSecureValue(): UtilityBillSecureValue = this as UtilityBillSecureValue @PreviewFeature -inline fun SecureValue.whenSecureValueIdentity(block: (SecureValueIdentity) -> T) = asSecureValueIdentity() ?.let(block) +inline fun SecureValue.whenSecureValueIdentity(block: (SecureValueIdentity) -> T) = + asSecureValueIdentity()?.let(block) @PreviewFeature inline fun SecureValue.asSecureValueIdentity(): SecureValueIdentity? = this as? SecureValueIdentity @@ -896,7 +938,8 @@ inline fun SecureValue.asSecureValueIdentity(): SecureValueIdentity? = this as? inline fun SecureValue.requireSecureValueIdentity(): SecureValueIdentity = this as SecureValueIdentity @PreviewFeature -inline fun SecureValue.whenSecureValueWithData(block: (SecureValueWithData) -> T) = asSecureValueWithData() ?.let(block) +inline fun SecureValue.whenSecureValueWithData(block: (SecureValueWithData) -> T) = + asSecureValueWithData()?.let(block) @PreviewFeature inline fun SecureValue.asSecureValueWithData(): SecureValueWithData? = this as? SecureValueWithData @@ -905,7 +948,8 @@ inline fun SecureValue.asSecureValueWithData(): SecureValueWithData? = this as? inline fun SecureValue.requireSecureValueWithData(): SecureValueWithData = this as SecureValueWithData @PreviewFeature -inline fun SecureValue.whenSecureValueWithFiles(block: (SecureValueWithFiles) -> T) = asSecureValueWithFiles() ?.let(block) +inline fun SecureValue.whenSecureValueWithFiles(block: (SecureValueWithFiles) -> T) = + asSecureValueWithFiles()?.let(block) @PreviewFeature inline fun SecureValue.asSecureValueWithFiles(): SecureValueWithFiles? = this as? SecureValueWithFiles @@ -914,7 +958,8 @@ inline fun SecureValue.asSecureValueWithFiles(): SecureValueWithFiles? = this as inline fun SecureValue.requireSecureValueWithFiles(): SecureValueWithFiles = this as SecureValueWithFiles @PreviewFeature -inline fun SecureValue.whenSecureValueWithReverseSide(block: (SecureValueWithReverseSide) -> T) = asSecureValueWithReverseSide() ?.let(block) +inline fun SecureValue.whenSecureValueWithReverseSide(block: (SecureValueWithReverseSide) -> T) = + asSecureValueWithReverseSide()?.let(block) @PreviewFeature inline fun SecureValue.asSecureValueWithReverseSide(): SecureValueWithReverseSide? = this as? SecureValueWithReverseSide @@ -924,7 +969,8 @@ inline fun SecureValue.requireSecureValueWithReverseSide(): SecureValueWithRever this as SecureValueWithReverseSide @PreviewFeature -inline fun SecureValue.whenSecureValueWithTranslations(block: (SecureValueWithTranslations) -> T) = asSecureValueWithTranslations() ?.let(block) +inline fun SecureValue.whenSecureValueWithTranslations(block: (SecureValueWithTranslations) -> T) = + asSecureValueWithTranslations()?.let(block) @PreviewFeature inline fun SecureValue.asSecureValueWithTranslations(): SecureValueWithTranslations? = @@ -935,7 +981,8 @@ inline fun SecureValue.requireSecureValueWithTranslations(): SecureValueWithTran this as SecureValueWithTranslations @PreviewFeature -inline fun Message.whenAnonymousGroupContentMessageImpl(block: (AnonymousGroupContentMessageImpl) -> T) = asAnonymousGroupContentMessageImpl() ?.let(block) +inline fun Message.whenAnonymousGroupContentMessageImpl(block: (AnonymousGroupContentMessageImpl) -> T) = + asAnonymousGroupContentMessageImpl()?.let(block) @PreviewFeature inline fun Message.asAnonymousGroupContentMessageImpl(): AnonymousGroupContentMessageImpl? = @@ -946,7 +993,8 @@ inline fun Message.requireAnonymousGroupContentMessageImpl(): AnonymousGroupCont this as AnonymousGroupContentMessageImpl @PreviewFeature -inline fun Message.whenChannelContentMessageImpl(block: (UnconnectedFromChannelGroupContentMessageImpl) -> T) = asChannelContentMessageImpl() ?.let(block) +inline fun Message.whenChannelContentMessageImpl(block: (UnconnectedFromChannelGroupContentMessageImpl) -> T) = + asChannelContentMessageImpl()?.let(block) @PreviewFeature inline fun Message.asChannelContentMessageImpl(): UnconnectedFromChannelGroupContentMessageImpl? = @@ -957,7 +1005,7 @@ inline fun Message.requireChannelContentMessageImpl(): UnconnectedFromChannelGro this as UnconnectedFromChannelGroupContentMessageImpl @PreviewFeature -inline fun Message.whenPassportMessage(block: (PassportMessage) -> T) = asPassportMessage() ?.let(block) +inline fun Message.whenPassportMessage(block: (PassportMessage) -> T) = asPassportMessage()?.let(block) @PreviewFeature inline fun Message.asPassportMessage(): PassportMessage? = this as? PassportMessage @@ -966,7 +1014,8 @@ inline fun Message.asPassportMessage(): PassportMessage? = this as? PassportMess inline fun Message.requirePassportMessage(): PassportMessage = this as PassportMessage @PreviewFeature -inline fun Message.whenPrivateContentMessageImpl(block: (PrivateContentMessageImpl) -> T) = asPrivateContentMessageImpl() ?.let(block) +inline fun Message.whenPrivateContentMessageImpl(block: (PrivateContentMessageImpl) -> T) = + asPrivateContentMessageImpl()?.let(block) @PreviewFeature inline fun Message.asPrivateContentMessageImpl(): PrivateContentMessageImpl? = @@ -977,7 +1026,8 @@ inline fun Message.requirePrivateContentMessageImpl(): PrivateContentMessageImpl this as PrivateContentMessageImpl @PreviewFeature -inline fun Message.whenChannelEventMessage(block: (ChannelEventMessage) -> T) = asChannelEventMessage() ?.let(block) +inline fun Message.whenChannelEventMessage(block: (ChannelEventMessage) -> T) = + asChannelEventMessage()?.let(block) @PreviewFeature inline fun Message.asChannelEventMessage(): ChannelEventMessage? = @@ -988,7 +1038,8 @@ inline fun Message.requireChannelEventMessage(): ChannelEventMessage @PreviewFeature -inline fun Message.whenChannelMediaGroupMessage(block: (ChannelMediaGroupMessage) -> T) = asChannelMediaGroupMessage() ?.let(block) +inline fun Message.whenChannelMediaGroupMessage(block: (ChannelMediaGroupMessage) -> T) = + asChannelMediaGroupMessage()?.let(block) @PreviewFeature inline fun Message.asChannelMediaGroupMessage(): ChannelMediaGroupMessage? = @@ -999,7 +1050,8 @@ inline fun Message.requireChannelMediaGroupMessage(): ChannelMediaGroupMessage @PreviewFeature -inline fun Message.whenCommonGroupEventMessage(block: (CommonGroupEventMessage) -> T) = asCommonGroupEventMessage() ?.let(block) +inline fun Message.whenCommonGroupEventMessage(block: (CommonGroupEventMessage) -> T) = + asCommonGroupEventMessage()?.let(block) @PreviewFeature inline fun Message.asCommonGroupEventMessage(): CommonGroupEventMessage? = @@ -1010,7 +1062,8 @@ inline fun Message.requireCommonGroupEventMessage(): CommonGroupEventMessage @PreviewFeature -inline fun Message.whenCommonMediaGroupMessage(block: (CommonMediaGroupMessage) -> T) = asCommonMediaGroupMessage() ?.let(block) +inline fun Message.whenCommonMediaGroupMessage(block: (CommonMediaGroupMessage) -> T) = + asCommonMediaGroupMessage()?.let(block) @PreviewFeature inline fun Message.asCommonMediaGroupMessage(): CommonMediaGroupMessage? = @@ -1021,7 +1074,8 @@ inline fun Message.requireCommonMediaGroupMessage(): CommonMediaGroupMessage @PreviewFeature -inline fun Message.whenCommonSupergroupEventMessage(block: (CommonSupergroupEventMessage) -> T) = asCommonSupergroupEventMessage() ?.let(block) +inline fun Message.whenCommonSupergroupEventMessage(block: (CommonSupergroupEventMessage) -> T) = + asCommonSupergroupEventMessage()?.let(block) @PreviewFeature inline fun Message.asCommonSupergroupEventMessage(): CommonSupergroupEventMessage? = @@ -1032,7 +1086,8 @@ inline fun Message.requireCommonSupergroupEventMessage(): CommonSupergroupEventM this as CommonSupergroupEventMessage @PreviewFeature -inline fun Message.whenAnonymousGroupContentMessage(block: (AnonymousGroupContentMessage) -> T) = asAnonymousGroupContentMessage() ?.let(block) +inline fun Message.whenAnonymousGroupContentMessage(block: (AnonymousGroupContentMessage) -> T) = + asAnonymousGroupContentMessage()?.let(block) @PreviewFeature inline fun Message.asAnonymousGroupContentMessage(): AnonymousGroupContentMessage? = @@ -1043,7 +1098,8 @@ inline fun Message.requireAnonymousGroupContentMessage(): AnonymousGroupContentM this as AnonymousGroupContentMessage @PreviewFeature -inline fun Message.whenChannelContentMessage(block: (ChannelContentMessage) -> T) = asChannelContentMessage() ?.let(block) +inline fun Message.whenChannelContentMessage(block: (ChannelContentMessage) -> T) = + asChannelContentMessage()?.let(block) @PreviewFeature inline fun Message.asChannelContentMessage(): ChannelContentMessage? = @@ -1054,7 +1110,8 @@ inline fun Message.requireChannelContentMessage(): ChannelContentMessage @PreviewFeature -inline fun Message.whenConnectedFromChannelGroupContentMessage(block: (ConnectedFromChannelGroupContentMessage) -> T) = asConnectedFromChannelGroupContentMessage() ?.let(block) +inline fun Message.whenConnectedFromChannelGroupContentMessage(block: (ConnectedFromChannelGroupContentMessage) -> T) = + asConnectedFromChannelGroupContentMessage()?.let(block) @PreviewFeature inline fun Message.asConnectedFromChannelGroupContentMessage(): ConnectedFromChannelGroupContentMessage? = @@ -1065,7 +1122,8 @@ inline fun Message.requireConnectedFromChannelGroupContentMessage(): ConnectedFr this as ConnectedFromChannelGroupContentMessage @PreviewFeature -inline fun Message.whenUnconnectedFromChannelGroupContentMessage(block: (UnconnectedFromChannelGroupContentMessage) -> T) = asUnconnectedFromChannelGroupContentMessage() ?.let(block) +inline fun Message.whenUnconnectedFromChannelGroupContentMessage(block: (UnconnectedFromChannelGroupContentMessage) -> T) = + asUnconnectedFromChannelGroupContentMessage()?.let(block) @PreviewFeature inline fun Message.asUnconnectedFromChannelGroupContentMessage(): UnconnectedFromChannelGroupContentMessage? = @@ -1076,7 +1134,8 @@ inline fun Message.requireUnconnectedFromChannelGroupContentMessage(): Unconnect this as UnconnectedFromChannelGroupContentMessage @PreviewFeature -inline fun Message.whenChatEventMessage(block: (ChatEventMessage) -> T) = asChatEventMessage() ?.let(block) +inline fun Message.whenChatEventMessage(block: (ChatEventMessage) -> T) = + asChatEventMessage()?.let(block) @PreviewFeature inline fun Message.asChatEventMessage(): ChatEventMessage? = this as? ChatEventMessage @@ -1085,7 +1144,8 @@ inline fun Message.asChatEventMessage(): ChatEventMessage? = this as? inline fun Message.requireChatEventMessage(): ChatEventMessage = this as ChatEventMessage @PreviewFeature -inline fun Message.whenCommonGroupContentMessage(block: (CommonGroupContentMessage) -> T) = asCommonGroupContentMessage() ?.let(block) +inline fun Message.whenCommonGroupContentMessage(block: (CommonGroupContentMessage) -> T) = + asCommonGroupContentMessage()?.let(block) @PreviewFeature inline fun Message.asCommonGroupContentMessage(): CommonGroupContentMessage? = @@ -1096,7 +1156,7 @@ inline fun Message.requireCommonGroupContentMessage(): CommonGroupContentMessage this as CommonGroupContentMessage @PreviewFeature -inline fun Message.whenCommonMessage(block: (CommonMessage) -> T) = asCommonMessage() ?.let(block) +inline fun Message.whenCommonMessage(block: (CommonMessage) -> T) = asCommonMessage()?.let(block) @PreviewFeature inline fun Message.asCommonMessage(): CommonMessage? = this as? CommonMessage @@ -1105,7 +1165,7 @@ inline fun Message.asCommonMessage(): CommonMessage? = this as? inline fun Message.requireCommonMessage(): CommonMessage = this as CommonMessage @PreviewFeature -inline fun Message.whenContentMessage(block: (ContentMessage) -> T) = asContentMessage() ?.let(block) +inline fun Message.whenContentMessage(block: (ContentMessage) -> T) = asContentMessage()?.let(block) @PreviewFeature inline fun Message.asContentMessage(): ContentMessage? = this as? ContentMessage @@ -1114,7 +1174,8 @@ inline fun Message.asContentMessage(): ContentMessage? = this as inline fun Message.requireContentMessage(): ContentMessage = this as ContentMessage @PreviewFeature -inline fun Message.whenFromChannelGroupContentMessage(block: (FromChannelGroupContentMessage) -> T) = asFromChannelGroupContentMessage() ?.let(block) +inline fun Message.whenFromChannelGroupContentMessage(block: (FromChannelGroupContentMessage) -> T) = + asFromChannelGroupContentMessage()?.let(block) @PreviewFeature inline fun Message.asFromChannelGroupContentMessage(): FromChannelGroupContentMessage? = @@ -1125,7 +1186,8 @@ inline fun Message.requireFromChannelGroupContentMessage(): FromChannelGroupCont this as FromChannelGroupContentMessage @PreviewFeature -inline fun Message.whenGroupEventMessage(block: (GroupEventMessage) -> T) = asGroupEventMessage() ?.let(block) +inline fun Message.whenGroupEventMessage(block: (GroupEventMessage) -> T) = + asGroupEventMessage()?.let(block) @PreviewFeature inline fun Message.asGroupEventMessage(): GroupEventMessage? = this as? GroupEventMessage @@ -1134,16 +1196,20 @@ inline fun Message.asGroupEventMessage(): GroupEventMessage? = this inline fun Message.requireGroupEventMessage(): GroupEventMessage = this as GroupEventMessage @PreviewFeature -inline fun Message.whenPrivateEventMessage(block: (PrivateEventMessage) -> T) = asPrivateEventMessage() ?.let(block) +inline fun Message.whenPrivateEventMessage(block: (PrivateEventMessage) -> T) = + asPrivateEventMessage()?.let(block) @PreviewFeature -inline fun Message.asPrivateEventMessage(): PrivateEventMessage? = this as? PrivateEventMessage +inline fun Message.asPrivateEventMessage(): PrivateEventMessage? = + this as? PrivateEventMessage @PreviewFeature -inline fun Message.requirePrivateEventMessage(): PrivateEventMessage = this as PrivateEventMessage +inline fun Message.requirePrivateEventMessage(): PrivateEventMessage = + this as PrivateEventMessage @PreviewFeature -inline fun Message.whenGroupContentMessage(block: (GroupContentMessage) -> T) = asGroupContentMessage() ?.let(block) +inline fun Message.whenGroupContentMessage(block: (GroupContentMessage) -> T) = + asGroupContentMessage()?.let(block) @PreviewFeature inline fun Message.asGroupContentMessage(): GroupContentMessage? = @@ -1154,7 +1220,8 @@ inline fun Message.requireGroupContentMessage(): GroupContentMessage @PreviewFeature -inline fun Message.whenMediaGroupMessage(block: (MediaGroupMessage) -> T) = asMediaGroupMessage() ?.let(block) +inline fun Message.whenMediaGroupMessage(block: (MediaGroupMessage) -> T) = + asMediaGroupMessage()?.let(block) @PreviewFeature inline fun Message.asMediaGroupMessage(): MediaGroupMessage? = @@ -1165,7 +1232,8 @@ inline fun Message.requireMediaGroupMessage(): MediaGroupMessage @PreviewFeature -inline fun Message.whenPossiblyEditedMessage(block: (PossiblyEditedMessage) -> T) = asPossiblyEditedMessage() ?.let(block) +inline fun Message.whenPossiblyEditedMessage(block: (PossiblyEditedMessage) -> T) = + asPossiblyEditedMessage()?.let(block) @PreviewFeature inline fun Message.asPossiblyEditedMessage(): PossiblyEditedMessage? = this as? PossiblyEditedMessage @@ -1174,7 +1242,8 @@ inline fun Message.asPossiblyEditedMessage(): PossiblyEditedMessage? = this as? inline fun Message.requirePossiblyEditedMessage(): PossiblyEditedMessage = this as PossiblyEditedMessage @PreviewFeature -inline fun Message.whenPossiblyReplyMessage(block: (PossiblyReplyMessage) -> T) = asPossiblyReplyMessage() ?.let(block) +inline fun Message.whenPossiblyReplyMessage(block: (PossiblyReplyMessage) -> T) = + asPossiblyReplyMessage()?.let(block) @PreviewFeature inline fun Message.asPossiblyReplyMessage(): PossiblyReplyMessage? = this as? PossiblyReplyMessage @@ -1183,7 +1252,8 @@ inline fun Message.asPossiblyReplyMessage(): PossiblyReplyMessage? = this as? Po inline fun Message.requirePossiblyReplyMessage(): PossiblyReplyMessage = this as PossiblyReplyMessage @PreviewFeature -inline fun Message.whenPossiblyForwardedMessage(block: (PossiblyForwardedMessage) -> T) = asPossiblyForwardedMessage() ?.let(block) +inline fun Message.whenPossiblyForwardedMessage(block: (PossiblyForwardedMessage) -> T) = + asPossiblyForwardedMessage()?.let(block) @PreviewFeature inline fun Message.asPossiblyForwardedMessage(): PossiblyForwardedMessage? = this as? PossiblyForwardedMessage @@ -1192,7 +1262,8 @@ inline fun Message.asPossiblyForwardedMessage(): PossiblyForwardedMessage? = thi inline fun Message.requirePossiblyForwardedMessage(): PossiblyForwardedMessage = this as PossiblyForwardedMessage @PreviewFeature -inline fun Message.whenPossiblyPaymentMessage(block: (PossiblyPaymentMessage) -> T) = asPossiblyPaymentMessage() ?.let(block) +inline fun Message.whenPossiblyPaymentMessage(block: (PossiblyPaymentMessage) -> T) = + asPossiblyPaymentMessage()?.let(block) @PreviewFeature inline fun Message.asPossiblyPaymentMessage(): PossiblyPaymentMessage? = this as? PossiblyPaymentMessage @@ -1201,7 +1272,8 @@ inline fun Message.asPossiblyPaymentMessage(): PossiblyPaymentMessage? = this as inline fun Message.requirePossiblyPaymentMessage(): PossiblyPaymentMessage = this as PossiblyPaymentMessage @PreviewFeature -inline fun Message.whenPrivateContentMessage(block: (PrivateContentMessage) -> T) = asPrivateContentMessage() ?.let(block) +inline fun Message.whenPrivateContentMessage(block: (PrivateContentMessage) -> T) = + asPrivateContentMessage()?.let(block) @PreviewFeature inline fun Message.asPrivateContentMessage(): PrivateContentMessage? = @@ -1212,7 +1284,8 @@ inline fun Message.requirePrivateContentMessage(): PrivateContentMessage @PreviewFeature -inline fun Message.whenPublicContentMessage(block: (PublicContentMessage) -> T) = asPublicContentMessage() ?.let(block) +inline fun Message.whenPublicContentMessage(block: (PublicContentMessage) -> T) = + asPublicContentMessage()?.let(block) @PreviewFeature inline fun Message.asPublicContentMessage(): PublicContentMessage? = @@ -1223,7 +1296,7 @@ inline fun Message.requirePublicContentMessage(): PublicContentMessage @PreviewFeature -inline fun Message.whenSignedMessage(block: (SignedMessage) -> T) = asSignedMessage() ?.let(block) +inline fun Message.whenSignedMessage(block: (SignedMessage) -> T) = asSignedMessage()?.let(block) @PreviewFeature inline fun Message.asSignedMessage(): SignedMessage? = this as? SignedMessage @@ -1232,7 +1305,8 @@ inline fun Message.asSignedMessage(): SignedMessage? = this as? SignedMessage inline fun Message.requireSignedMessage(): SignedMessage = this as SignedMessage @PreviewFeature -inline fun Message.whenSupergroupEventMessage(block: (SupergroupEventMessage) -> T) = asSupergroupEventMessage() ?.let(block) +inline fun Message.whenSupergroupEventMessage(block: (SupergroupEventMessage) -> T) = + asSupergroupEventMessage()?.let(block) @PreviewFeature inline fun Message.asSupergroupEventMessage(): SupergroupEventMessage? = @@ -1243,7 +1317,7 @@ inline fun Message.requireSupergroupEventMessage(): SupergroupEventMessage @PreviewFeature -inline fun Message.whenUnknownMessageType(block: (UnknownMessageType) -> T) = asUnknownMessageType() ?.let(block) +inline fun Message.whenUnknownMessageType(block: (UnknownMessageType) -> T) = asUnknownMessageType()?.let(block) @PreviewFeature inline fun Message.asUnknownMessageType(): UnknownMessageType? = this as? UnknownMessageType @@ -1252,7 +1326,8 @@ inline fun Message.asUnknownMessageType(): UnknownMessageType? = this as? Unknow inline fun Message.requireUnknownMessageType(): UnknownMessageType = this as UnknownMessageType @PreviewFeature -inline fun Message.whenPossiblySentViaBotCommonMessage(block: (PossiblySentViaBotCommonMessage) -> T) = asPossiblySentViaBotCommonMessage() ?.let(block) +inline fun Message.whenPossiblySentViaBotCommonMessage(block: (PossiblySentViaBotCommonMessage) -> T) = + asPossiblySentViaBotCommonMessage()?.let(block) @PreviewFeature inline fun Message.asPossiblySentViaBotCommonMessage(): PossiblySentViaBotCommonMessage? = @@ -1263,7 +1338,7 @@ inline fun Message.requirePossiblySentViaBotCommonMessage(): PossiblySentViaBotC this as PossiblySentViaBotCommonMessage @PreviewFeature -inline fun Message.whenFromUserMessage(block: (FromUserMessage) -> T) = asFromUserMessage() ?.let(block) +inline fun Message.whenFromUserMessage(block: (FromUserMessage) -> T) = asFromUserMessage()?.let(block) @PreviewFeature inline fun Message.asFromUserMessage(): FromUserMessage? = this as? FromUserMessage @@ -1272,7 +1347,7 @@ inline fun Message.asFromUserMessage(): FromUserMessage? = this as? FromUserMess inline fun Message.requireFromUserMessage(): FromUserMessage = this as FromUserMessage @PreviewFeature -inline fun BotAction.whenFindLocationAction(block: (FindLocationAction) -> T) = asFindLocationAction() ?.let(block) +inline fun BotAction.whenFindLocationAction(block: (FindLocationAction) -> T) = asFindLocationAction()?.let(block) @PreviewFeature inline fun BotAction.asFindLocationAction(): FindLocationAction? = this as? FindLocationAction @@ -1281,7 +1356,7 @@ inline fun BotAction.asFindLocationAction(): FindLocationAction? = this as? Find inline fun BotAction.requireFindLocationAction(): FindLocationAction = this as FindLocationAction @PreviewFeature -inline fun BotAction.whenRecordVoiceAction(block: (RecordVoiceAction) -> T) = asRecordVoiceAction() ?.let(block) +inline fun BotAction.whenRecordVoiceAction(block: (RecordVoiceAction) -> T) = asRecordVoiceAction()?.let(block) @PreviewFeature inline fun BotAction.asRecordVoiceAction(): RecordVoiceAction? = this as? RecordVoiceAction @@ -1290,7 +1365,7 @@ inline fun BotAction.asRecordVoiceAction(): RecordVoiceAction? = this as? Record inline fun BotAction.requireRecordVoiceAction(): RecordVoiceAction = this as RecordVoiceAction @PreviewFeature -inline fun BotAction.whenRecordVideoAction(block: (RecordVideoAction) -> T) = asRecordVideoAction() ?.let(block) +inline fun BotAction.whenRecordVideoAction(block: (RecordVideoAction) -> T) = asRecordVideoAction()?.let(block) @PreviewFeature inline fun BotAction.asRecordVideoAction(): RecordVideoAction? = this as? RecordVideoAction @@ -1299,7 +1374,8 @@ inline fun BotAction.asRecordVideoAction(): RecordVideoAction? = this as? Record inline fun BotAction.requireRecordVideoAction(): RecordVideoAction = this as RecordVideoAction @PreviewFeature -inline fun BotAction.whenRecordVideoNoteAction(block: (RecordVideoNoteAction) -> T) = asRecordVideoNoteAction() ?.let(block) +inline fun BotAction.whenRecordVideoNoteAction(block: (RecordVideoNoteAction) -> T) = + asRecordVideoNoteAction()?.let(block) @PreviewFeature inline fun BotAction.asRecordVideoNoteAction(): RecordVideoNoteAction? = this as? RecordVideoNoteAction @@ -1308,7 +1384,7 @@ inline fun BotAction.asRecordVideoNoteAction(): RecordVideoNoteAction? = this as inline fun BotAction.requireRecordVideoNoteAction(): RecordVideoNoteAction = this as RecordVideoNoteAction @PreviewFeature -inline fun BotAction.whenTypingAction(block: (TypingAction) -> T) = asTypingAction() ?.let(block) +inline fun BotAction.whenTypingAction(block: (TypingAction) -> T) = asTypingAction()?.let(block) @PreviewFeature inline fun BotAction.asTypingAction(): TypingAction? = this as? TypingAction @@ -1317,7 +1393,8 @@ inline fun BotAction.asTypingAction(): TypingAction? = this as? TypingAction inline fun BotAction.requireTypingAction(): TypingAction = this as TypingAction @PreviewFeature -inline fun BotAction.whenChooseStickerAction(block: (ChooseStickerAction) -> T) = asChooseStickerAction() ?.let(block) +inline fun BotAction.whenChooseStickerAction(block: (ChooseStickerAction) -> T) = + asChooseStickerAction()?.let(block) @PreviewFeature inline fun BotAction.asChooseStickerAction(): ChooseStickerAction? = this as? ChooseStickerAction @@ -1326,7 +1403,7 @@ inline fun BotAction.asChooseStickerAction(): ChooseStickerAction? = this as? Ch inline fun BotAction.requireChooseStickerAction(): ChooseStickerAction = this as ChooseStickerAction @PreviewFeature -inline fun BotAction.whenUploadVoiceAction(block: (UploadVoiceAction) -> T) = asUploadVoiceAction() ?.let(block) +inline fun BotAction.whenUploadVoiceAction(block: (UploadVoiceAction) -> T) = asUploadVoiceAction()?.let(block) @PreviewFeature inline fun BotAction.asUploadVoiceAction(): UploadVoiceAction? = this as? UploadVoiceAction @@ -1335,7 +1412,8 @@ inline fun BotAction.asUploadVoiceAction(): UploadVoiceAction? = this as? Upload inline fun BotAction.requireUploadVoiceAction(): UploadVoiceAction = this as UploadVoiceAction @PreviewFeature -inline fun BotAction.whenUploadDocumentAction(block: (UploadDocumentAction) -> T) = asUploadDocumentAction() ?.let(block) +inline fun BotAction.whenUploadDocumentAction(block: (UploadDocumentAction) -> T) = + asUploadDocumentAction()?.let(block) @PreviewFeature inline fun BotAction.asUploadDocumentAction(): UploadDocumentAction? = this as? UploadDocumentAction @@ -1344,7 +1422,7 @@ inline fun BotAction.asUploadDocumentAction(): UploadDocumentAction? = this as? inline fun BotAction.requireUploadDocumentAction(): UploadDocumentAction = this as UploadDocumentAction @PreviewFeature -inline fun BotAction.whenUploadPhotoAction(block: (UploadPhotoAction) -> T) = asUploadPhotoAction() ?.let(block) +inline fun BotAction.whenUploadPhotoAction(block: (UploadPhotoAction) -> T) = asUploadPhotoAction()?.let(block) @PreviewFeature inline fun BotAction.asUploadPhotoAction(): UploadPhotoAction? = this as? UploadPhotoAction @@ -1353,7 +1431,7 @@ inline fun BotAction.asUploadPhotoAction(): UploadPhotoAction? = this as? Upload inline fun BotAction.requireUploadPhotoAction(): UploadPhotoAction = this as UploadPhotoAction @PreviewFeature -inline fun BotAction.whenUploadVideoAction(block: (UploadVideoAction) -> T) = asUploadVideoAction() ?.let(block) +inline fun BotAction.whenUploadVideoAction(block: (UploadVideoAction) -> T) = asUploadVideoAction()?.let(block) @PreviewFeature inline fun BotAction.asUploadVideoAction(): UploadVideoAction? = this as? UploadVideoAction @@ -1362,7 +1440,8 @@ inline fun BotAction.asUploadVideoAction(): UploadVideoAction? = this as? Upload inline fun BotAction.requireUploadVideoAction(): UploadVideoAction = this as UploadVideoAction @PreviewFeature -inline fun BotAction.whenUploadVideoNoteAction(block: (UploadVideoNoteAction) -> T) = asUploadVideoNoteAction() ?.let(block) +inline fun BotAction.whenUploadVideoNoteAction(block: (UploadVideoNoteAction) -> T) = + asUploadVideoNoteAction()?.let(block) @PreviewFeature inline fun BotAction.asUploadVideoNoteAction(): UploadVideoNoteAction? = this as? UploadVideoNoteAction @@ -1371,7 +1450,7 @@ inline fun BotAction.asUploadVideoNoteAction(): UploadVideoNoteAction? = this as inline fun BotAction.requireUploadVideoNoteAction(): UploadVideoNoteAction = this as UploadVideoNoteAction @PreviewFeature -inline fun InlineQuery.whenBaseInlineQuery(block: (BaseInlineQuery) -> T) = asBaseInlineQuery() ?.let(block) +inline fun InlineQuery.whenBaseInlineQuery(block: (BaseInlineQuery) -> T) = asBaseInlineQuery()?.let(block) @PreviewFeature inline fun InlineQuery.asBaseInlineQuery(): BaseInlineQuery? = @@ -1382,7 +1461,8 @@ inline fun InlineQuery.requireBaseInlineQuery(): BaseInlineQuery = this as BaseInlineQuery @PreviewFeature -inline fun InlineQuery.whenLocationInlineQuery(block: (LocationInlineQuery) -> T) = asLocationInlineQuery() ?.let(block) +inline fun InlineQuery.whenLocationInlineQuery(block: (LocationInlineQuery) -> T) = + asLocationInlineQuery()?.let(block) @PreviewFeature inline fun InlineQuery.asLocationInlineQuery(): LocationInlineQuery? = @@ -1393,7 +1473,8 @@ inline fun InlineQuery.requireLocationInlineQuery(): LocationInlineQuery = this as LocationInlineQuery @PreviewFeature -inline fun InputMessageContent.whenInputContactMessageContent(block: (InputContactMessageContent) -> T) = asInputContactMessageContent() ?.let(block) +inline fun InputMessageContent.whenInputContactMessageContent(block: (InputContactMessageContent) -> T) = + asInputContactMessageContent()?.let(block) @PreviewFeature inline fun InputMessageContent.asInputContactMessageContent(): InputContactMessageContent? = @@ -1404,7 +1485,8 @@ inline fun InputMessageContent.requireInputContactMessageContent(): InputContact this as InputContactMessageContent @PreviewFeature -inline fun InputMessageContent.whenInputLocationMessageContent(block: (InputLocationMessageContent) -> T) = asInputLocationMessageContent() ?.let(block) +inline fun InputMessageContent.whenInputLocationMessageContent(block: (InputLocationMessageContent) -> T) = + asInputLocationMessageContent()?.let(block) @PreviewFeature inline fun InputMessageContent.asInputLocationMessageContent(): InputLocationMessageContent? = @@ -1415,7 +1497,8 @@ inline fun InputMessageContent.requireInputLocationMessageContent(): InputLocati this as InputLocationMessageContent @PreviewFeature -inline fun InputMessageContent.whenInputTextMessageContent(block: (InputTextMessageContent) -> T) = asInputTextMessageContent() ?.let(block) +inline fun InputMessageContent.whenInputTextMessageContent(block: (InputTextMessageContent) -> T) = + asInputTextMessageContent()?.let(block) @PreviewFeature inline fun InputMessageContent.asInputTextMessageContent(): InputTextMessageContent? = this as? InputTextMessageContent @@ -1425,7 +1508,8 @@ inline fun InputMessageContent.requireInputTextMessageContent(): InputTextMessag this as InputTextMessageContent @PreviewFeature -inline fun InputMessageContent.whenInputVenueMessageContent(block: (InputVenueMessageContent) -> T) = asInputVenueMessageContent() ?.let(block) +inline fun InputMessageContent.whenInputVenueMessageContent(block: (InputVenueMessageContent) -> T) = + asInputVenueMessageContent()?.let(block) @PreviewFeature inline fun InputMessageContent.asInputVenueMessageContent(): InputVenueMessageContent? = @@ -1436,7 +1520,8 @@ inline fun InputMessageContent.requireInputVenueMessageContent(): InputVenueMess this as InputVenueMessageContent @PreviewFeature -inline fun InputMessageContent.whenInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T) = asInputInvoiceMessageContent() ?.let(block) +inline fun InputMessageContent.whenInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T) = + asInputInvoiceMessageContent()?.let(block) @PreviewFeature inline fun InputMessageContent.asInputInvoiceMessageContent(): InputInvoiceMessageContent? = @@ -1447,7 +1532,8 @@ inline fun InputMessageContent.requireInputInvoiceMessageContent(): InputInvoice this as InputInvoiceMessageContent @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultArticle(block: (InlineQueryResultArticle) -> T) = asInlineQueryResultArticle() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultArticle(block: (InlineQueryResultArticle) -> T) = + asInlineQueryResultArticle()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultArticle(): InlineQueryResultArticle? = this as? InlineQueryResultArticle @@ -1457,7 +1543,8 @@ inline fun InlineQueryResult.requireInlineQueryResultArticle(): InlineQueryResul this as InlineQueryResultArticle @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultContact(block: (InlineQueryResultContact) -> T) = asInlineQueryResultContact() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultContact(block: (InlineQueryResultContact) -> T) = + asInlineQueryResultContact()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultContact(): InlineQueryResultContact? = this as? InlineQueryResultContact @@ -1467,7 +1554,8 @@ inline fun InlineQueryResult.requireInlineQueryResultContact(): InlineQueryResul this as InlineQueryResultContact @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultGame(block: (InlineQueryResultGame) -> T) = asInlineQueryResultGame() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultGame(block: (InlineQueryResultGame) -> T) = + asInlineQueryResultGame()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultGame(): InlineQueryResultGame? = this as? InlineQueryResultGame @@ -1476,7 +1564,8 @@ inline fun InlineQueryResult.asInlineQueryResultGame(): InlineQueryResultGame? = inline fun InlineQueryResult.requireInlineQueryResultGame(): InlineQueryResultGame = this as InlineQueryResultGame @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultLocation(block: (InlineQueryResultLocation) -> T) = asInlineQueryResultLocation() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultLocation(block: (InlineQueryResultLocation) -> T) = + asInlineQueryResultLocation()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultLocation(): InlineQueryResultLocation? = @@ -1487,7 +1576,8 @@ inline fun InlineQueryResult.requireInlineQueryResultLocation(): InlineQueryResu this as InlineQueryResultLocation @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultStickerCached(block: (InlineQueryResultStickerCached) -> T) = asInlineQueryResultStickerCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultStickerCached(block: (InlineQueryResultStickerCached) -> T) = + asInlineQueryResultStickerCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultStickerCached(): InlineQueryResultStickerCached? = @@ -1498,7 +1588,8 @@ inline fun InlineQueryResult.requireInlineQueryResultStickerCached(): InlineQuer this as InlineQueryResultStickerCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultVenue(block: (InlineQueryResultVenue) -> T) = asInlineQueryResultVenue() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultVenue(block: (InlineQueryResultVenue) -> T) = + asInlineQueryResultVenue()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultVenue(): InlineQueryResultVenue? = this as? InlineQueryResultVenue @@ -1507,7 +1598,8 @@ inline fun InlineQueryResult.asInlineQueryResultVenue(): InlineQueryResultVenue? inline fun InlineQueryResult.requireInlineQueryResultVenue(): InlineQueryResultVenue = this as InlineQueryResultVenue @PreviewFeature -inline fun InlineQueryResult.whenDescribedInlineQueryResult(block: (DescribedInlineQueryResult) -> T) = asDescribedInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenDescribedInlineQueryResult(block: (DescribedInlineQueryResult) -> T) = + asDescribedInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asDescribedInlineQueryResult(): DescribedInlineQueryResult? = @@ -1518,7 +1610,8 @@ inline fun InlineQueryResult.requireDescribedInlineQueryResult(): DescribedInlin this as DescribedInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenFileInlineQueryResult(block: (FileInlineQueryResult) -> T) = asFileInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenFileInlineQueryResult(block: (FileInlineQueryResult) -> T) = + asFileInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asFileInlineQueryResult(): FileInlineQueryResult? = this as? FileInlineQueryResult @@ -1527,7 +1620,8 @@ inline fun InlineQueryResult.asFileInlineQueryResult(): FileInlineQueryResult? = inline fun InlineQueryResult.requireFileInlineQueryResult(): FileInlineQueryResult = this as FileInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenOptionallyTitledInlineQueryResult(block: (OptionallyTitledInlineQueryResult) -> T) = asOptionallyTitledInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenOptionallyTitledInlineQueryResult(block: (OptionallyTitledInlineQueryResult) -> T) = + asOptionallyTitledInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asOptionallyTitledInlineQueryResult(): OptionallyTitledInlineQueryResult? = @@ -1538,7 +1632,8 @@ inline fun InlineQueryResult.requireOptionallyTitledInlineQueryResult(): Optiona this as OptionallyTitledInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenSizedInlineQueryResult(block: (SizedInlineQueryResult) -> T) = asSizedInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenSizedInlineQueryResult(block: (SizedInlineQueryResult) -> T) = + asSizedInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asSizedInlineQueryResult(): SizedInlineQueryResult? = this as? SizedInlineQueryResult @@ -1547,7 +1642,8 @@ inline fun InlineQueryResult.asSizedInlineQueryResult(): SizedInlineQueryResult? inline fun InlineQueryResult.requireSizedInlineQueryResult(): SizedInlineQueryResult = this as SizedInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenThumbSizedInlineQueryResult(block: (ThumbSizedInlineQueryResult) -> T) = asThumbSizedInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenThumbSizedInlineQueryResult(block: (ThumbSizedInlineQueryResult) -> T) = + asThumbSizedInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asThumbSizedInlineQueryResult(): ThumbSizedInlineQueryResult? = @@ -1558,7 +1654,8 @@ inline fun InlineQueryResult.requireThumbSizedInlineQueryResult(): ThumbSizedInl this as ThumbSizedInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenThumbedInlineQueryResult(block: (ThumbedInlineQueryResult) -> T) = asThumbedInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenThumbedInlineQueryResult(block: (ThumbedInlineQueryResult) -> T) = + asThumbedInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asThumbedInlineQueryResult(): ThumbedInlineQueryResult? = this as? ThumbedInlineQueryResult @@ -1568,7 +1665,8 @@ inline fun InlineQueryResult.requireThumbedInlineQueryResult(): ThumbedInlineQue this as ThumbedInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenThumbedWithMimeTypeInlineQueryResult(block: (ThumbedWithMimeTypeInlineQueryResult) -> T) = asThumbedWithMimeTypeInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenThumbedWithMimeTypeInlineQueryResult(block: (ThumbedWithMimeTypeInlineQueryResult) -> T) = + asThumbedWithMimeTypeInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asThumbedWithMimeTypeInlineQueryResult(): ThumbedWithMimeTypeInlineQueryResult? = @@ -1579,7 +1677,8 @@ inline fun InlineQueryResult.requireThumbedWithMimeTypeInlineQueryResult(): Thum this as ThumbedWithMimeTypeInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenTitledInlineQueryResult(block: (TitledInlineQueryResult) -> T) = asTitledInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenTitledInlineQueryResult(block: (TitledInlineQueryResult) -> T) = + asTitledInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asTitledInlineQueryResult(): TitledInlineQueryResult? = this as? TitledInlineQueryResult @@ -1588,7 +1687,8 @@ inline fun InlineQueryResult.asTitledInlineQueryResult(): TitledInlineQueryResul inline fun InlineQueryResult.requireTitledInlineQueryResult(): TitledInlineQueryResult = this as TitledInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenUrlInlineQueryResult(block: (UrlInlineQueryResult) -> T) = asUrlInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenUrlInlineQueryResult(block: (UrlInlineQueryResult) -> T) = + asUrlInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asUrlInlineQueryResult(): UrlInlineQueryResult? = this as? UrlInlineQueryResult @@ -1597,7 +1697,8 @@ inline fun InlineQueryResult.asUrlInlineQueryResult(): UrlInlineQueryResult? = t inline fun InlineQueryResult.requireUrlInlineQueryResult(): UrlInlineQueryResult = this as UrlInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenWithInputMessageContentInlineQueryResult(block: (WithInputMessageContentInlineQueryResult) -> T) = asWithInputMessageContentInlineQueryResult() ?.let(block) +inline fun InlineQueryResult.whenWithInputMessageContentInlineQueryResult(block: (WithInputMessageContentInlineQueryResult) -> T) = + asWithInputMessageContentInlineQueryResult()?.let(block) @PreviewFeature inline fun InlineQueryResult.asWithInputMessageContentInlineQueryResult(): WithInputMessageContentInlineQueryResult? = @@ -1608,7 +1709,8 @@ inline fun InlineQueryResult.requireWithInputMessageContentInlineQueryResult(): this as WithInputMessageContentInlineQueryResult @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultAudio(block: (InlineQueryResultAudio) -> T) = asInlineQueryResultAudio() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultAudio(block: (InlineQueryResultAudio) -> T) = + asInlineQueryResultAudio()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultAudio(): InlineQueryResultAudio? = this as? InlineQueryResultAudio @@ -1617,7 +1719,8 @@ inline fun InlineQueryResult.asInlineQueryResultAudio(): InlineQueryResultAudio? inline fun InlineQueryResult.requireInlineQueryResultAudio(): InlineQueryResultAudio = this as InlineQueryResultAudio @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultAudioCached(block: (InlineQueryResultAudioCached) -> T) = asInlineQueryResultAudioCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultAudioCached(block: (InlineQueryResultAudioCached) -> T) = + asInlineQueryResultAudioCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultAudioCached(): InlineQueryResultAudioCached? = @@ -1628,7 +1731,8 @@ inline fun InlineQueryResult.requireInlineQueryResultAudioCached(): InlineQueryR this as InlineQueryResultAudioCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultAudioCommon(block: (InlineQueryResultAudioCommon) -> T) = asInlineQueryResultAudioCommon() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultAudioCommon(block: (InlineQueryResultAudioCommon) -> T) = + asInlineQueryResultAudioCommon()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultAudioCommon(): InlineQueryResultAudioCommon? = @@ -1639,7 +1743,8 @@ inline fun InlineQueryResult.requireInlineQueryResultAudioCommon(): InlineQueryR this as InlineQueryResultAudioCommon @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultDocument(block: (InlineQueryResultDocument) -> T) = asInlineQueryResultDocument() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultDocument(block: (InlineQueryResultDocument) -> T) = + asInlineQueryResultDocument()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultDocument(): InlineQueryResultDocument? = @@ -1650,7 +1755,8 @@ inline fun InlineQueryResult.requireInlineQueryResultDocument(): InlineQueryResu this as InlineQueryResultDocument @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultDocumentCached(block: (InlineQueryResultDocumentCached) -> T) = asInlineQueryResultDocumentCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultDocumentCached(block: (InlineQueryResultDocumentCached) -> T) = + asInlineQueryResultDocumentCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultDocumentCached(): InlineQueryResultDocumentCached? = @@ -1661,7 +1767,8 @@ inline fun InlineQueryResult.requireInlineQueryResultDocumentCached(): InlineQue this as InlineQueryResultDocumentCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultDocumentCommon(block: (InlineQueryResultDocumentCommon) -> T) = asInlineQueryResultDocumentCommon() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultDocumentCommon(block: (InlineQueryResultDocumentCommon) -> T) = + asInlineQueryResultDocumentCommon()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultDocumentCommon(): InlineQueryResultDocumentCommon? = @@ -1672,7 +1779,8 @@ inline fun InlineQueryResult.requireInlineQueryResultDocumentCommon(): InlineQue this as InlineQueryResultDocumentCommon @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultGif(block: (InlineQueryResultGif) -> T) = asInlineQueryResultGif() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultGif(block: (InlineQueryResultGif) -> T) = + asInlineQueryResultGif()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultGif(): InlineQueryResultGif? = this as? InlineQueryResultGif @@ -1681,7 +1789,8 @@ inline fun InlineQueryResult.asInlineQueryResultGif(): InlineQueryResultGif? = t inline fun InlineQueryResult.requireInlineQueryResultGif(): InlineQueryResultGif = this as InlineQueryResultGif @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultGifCached(block: (InlineQueryResultGifCached) -> T) = asInlineQueryResultGifCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultGifCached(block: (InlineQueryResultGifCached) -> T) = + asInlineQueryResultGifCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultGifCached(): InlineQueryResultGifCached? = @@ -1692,7 +1801,8 @@ inline fun InlineQueryResult.requireInlineQueryResultGifCached(): InlineQueryRes this as InlineQueryResultGifCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultGifCommon(block: (InlineQueryResultGifCommon) -> T) = asInlineQueryResultGifCommon() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultGifCommon(block: (InlineQueryResultGifCommon) -> T) = + asInlineQueryResultGifCommon()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultGifCommon(): InlineQueryResultGifCommon? = @@ -1703,7 +1813,8 @@ inline fun InlineQueryResult.requireInlineQueryResultGifCommon(): InlineQueryRes this as InlineQueryResultGifCommon @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultMpeg4Gif(block: (InlineQueryResultMpeg4Gif) -> T) = asInlineQueryResultMpeg4Gif() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultMpeg4Gif(block: (InlineQueryResultMpeg4Gif) -> T) = + asInlineQueryResultMpeg4Gif()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultMpeg4Gif(): InlineQueryResultMpeg4Gif? = @@ -1714,7 +1825,8 @@ inline fun InlineQueryResult.requireInlineQueryResultMpeg4Gif(): InlineQueryResu this as InlineQueryResultMpeg4Gif @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultMpeg4GifCached(block: (InlineQueryResultMpeg4GifCached) -> T) = asInlineQueryResultMpeg4GifCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultMpeg4GifCached(block: (InlineQueryResultMpeg4GifCached) -> T) = + asInlineQueryResultMpeg4GifCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultMpeg4GifCached(): InlineQueryResultMpeg4GifCached? = @@ -1725,7 +1837,8 @@ inline fun InlineQueryResult.requireInlineQueryResultMpeg4GifCached(): InlineQue this as InlineQueryResultMpeg4GifCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultMpeg4GifCommon(block: (InlineQueryResultMpeg4GifCommon) -> T) = asInlineQueryResultMpeg4GifCommon() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultMpeg4GifCommon(block: (InlineQueryResultMpeg4GifCommon) -> T) = + asInlineQueryResultMpeg4GifCommon()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultMpeg4GifCommon(): InlineQueryResultMpeg4GifCommon? = @@ -1736,7 +1849,8 @@ inline fun InlineQueryResult.requireInlineQueryResultMpeg4GifCommon(): InlineQue this as InlineQueryResultMpeg4GifCommon @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultPhoto(block: (InlineQueryResultPhoto) -> T) = asInlineQueryResultPhoto() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultPhoto(block: (InlineQueryResultPhoto) -> T) = + asInlineQueryResultPhoto()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultPhoto(): InlineQueryResultPhoto? = this as? InlineQueryResultPhoto @@ -1745,7 +1859,8 @@ inline fun InlineQueryResult.asInlineQueryResultPhoto(): InlineQueryResultPhoto? inline fun InlineQueryResult.requireInlineQueryResultPhoto(): InlineQueryResultPhoto = this as InlineQueryResultPhoto @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultPhotoCached(block: (InlineQueryResultPhotoCached) -> T) = asInlineQueryResultPhotoCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultPhotoCached(block: (InlineQueryResultPhotoCached) -> T) = + asInlineQueryResultPhotoCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultPhotoCached(): InlineQueryResultPhotoCached? = @@ -1756,7 +1871,8 @@ inline fun InlineQueryResult.requireInlineQueryResultPhotoCached(): InlineQueryR this as InlineQueryResultPhotoCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultPhotoCommon(block: (InlineQueryResultPhotoCommon) -> T) = asInlineQueryResultPhotoCommon() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultPhotoCommon(block: (InlineQueryResultPhotoCommon) -> T) = + asInlineQueryResultPhotoCommon()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultPhotoCommon(): InlineQueryResultPhotoCommon? = @@ -1767,7 +1883,8 @@ inline fun InlineQueryResult.requireInlineQueryResultPhotoCommon(): InlineQueryR this as InlineQueryResultPhotoCommon @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultVideo(block: (InlineQueryResultVideo) -> T) = asInlineQueryResultVideo() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultVideo(block: (InlineQueryResultVideo) -> T) = + asInlineQueryResultVideo()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultVideo(): InlineQueryResultVideo? = this as? InlineQueryResultVideo @@ -1776,7 +1893,8 @@ inline fun InlineQueryResult.asInlineQueryResultVideo(): InlineQueryResultVideo? inline fun InlineQueryResult.requireInlineQueryResultVideo(): InlineQueryResultVideo = this as InlineQueryResultVideo @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultVideoCached(block: (InlineQueryResultVideoCached) -> T) = asInlineQueryResultVideoCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultVideoCached(block: (InlineQueryResultVideoCached) -> T) = + asInlineQueryResultVideoCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultVideoCached(): InlineQueryResultVideoCached? = @@ -1787,7 +1905,8 @@ inline fun InlineQueryResult.requireInlineQueryResultVideoCached(): InlineQueryR this as InlineQueryResultVideoCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultVideoCommon(block: (InlineQueryResultVideoCommon) -> T) = asInlineQueryResultVideoCommon() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultVideoCommon(block: (InlineQueryResultVideoCommon) -> T) = + asInlineQueryResultVideoCommon()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultVideoCommon(): InlineQueryResultVideoCommon? = @@ -1798,7 +1917,8 @@ inline fun InlineQueryResult.requireInlineQueryResultVideoCommon(): InlineQueryR this as InlineQueryResultVideoCommon @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultVoice(block: (InlineQueryResultVoice) -> T) = asInlineQueryResultVoice() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultVoice(block: (InlineQueryResultVoice) -> T) = + asInlineQueryResultVoice()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultVoice(): InlineQueryResultVoice? = this as? InlineQueryResultVoice @@ -1807,7 +1927,8 @@ inline fun InlineQueryResult.asInlineQueryResultVoice(): InlineQueryResultVoice? inline fun InlineQueryResult.requireInlineQueryResultVoice(): InlineQueryResultVoice = this as InlineQueryResultVoice @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultVoiceCached(block: (InlineQueryResultVoiceCached) -> T) = asInlineQueryResultVoiceCached() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultVoiceCached(block: (InlineQueryResultVoiceCached) -> T) = + asInlineQueryResultVoiceCached()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultVoiceCached(): InlineQueryResultVoiceCached? = @@ -1818,7 +1939,8 @@ inline fun InlineQueryResult.requireInlineQueryResultVoiceCached(): InlineQueryR this as InlineQueryResultVoiceCached @PreviewFeature -inline fun InlineQueryResult.whenInlineQueryResultVoiceCommon(block: (InlineQueryResultVoiceCommon) -> T) = asInlineQueryResultVoiceCommon() ?.let(block) +inline fun InlineQueryResult.whenInlineQueryResultVoiceCommon(block: (InlineQueryResultVoiceCommon) -> T) = + asInlineQueryResultVoiceCommon()?.let(block) @PreviewFeature inline fun InlineQueryResult.asInlineQueryResultVoiceCommon(): InlineQueryResultVoiceCommon? = @@ -1829,19 +1951,7 @@ inline fun InlineQueryResult.requireInlineQueryResultVoiceCommon(): InlineQueryR this as InlineQueryResultVoiceCommon @PreviewFeature -@Deprecated("Renamed", ReplaceWith("whenOwnerChatMember", "dev.inmo.tgbotapi.extensions.utils.whenOwnerChatMember")) -inline fun ChatMember.whenCreatorChatMember(block: (CreatorChatMember) -> T) = asCreatorChatMember() ?.let(block) - -@PreviewFeature -@Deprecated("Renamed", ReplaceWith("asOwnerChatMember", "dev.inmo.tgbotapi.extensions.utils.asOwnerChatMember")) -inline fun ChatMember.asCreatorChatMember(): CreatorChatMember? = this as? CreatorChatMember - -@PreviewFeature -@Deprecated("Renamed", ReplaceWith("requireOwnerChatMember", "dev.inmo.tgbotapi.extensions.utils.requireOwnerChatMember")) -inline fun ChatMember.requireCreatorChatMember(): CreatorChatMember = this as CreatorChatMember - -@PreviewFeature -inline fun ChatMember.whenOwnerChatMember(block: (OwnerChatMember) -> T) = asOwnerChatMember() ?.let(block) +inline fun ChatMember.whenOwnerChatMember(block: (OwnerChatMember) -> T) = asOwnerChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asOwnerChatMember(): OwnerChatMember? = this as? OwnerChatMember @@ -1850,7 +1960,7 @@ inline fun ChatMember.asOwnerChatMember(): OwnerChatMember? = this as? OwnerChat inline fun ChatMember.requireOwnerChatMember(): OwnerChatMember = this as OwnerChatMember @PreviewFeature -inline fun ChatMember.whenKickedChatMember(block: (KickedChatMember) -> T) = asKickedChatMember() ?.let(block) +inline fun ChatMember.whenKickedChatMember(block: (KickedChatMember) -> T) = asKickedChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asKickedChatMember(): KickedChatMember? = this as? KickedChatMember @@ -1859,7 +1969,7 @@ inline fun ChatMember.asKickedChatMember(): KickedChatMember? = this as? KickedC inline fun ChatMember.requireKickedChatMember(): KickedChatMember = this as KickedChatMember @PreviewFeature -inline fun ChatMember.whenLeftChatMember(block: (LeftChatMember) -> T) = asLeftChatMember() ?.let(block) +inline fun ChatMember.whenLeftChatMember(block: (LeftChatMember) -> T) = asLeftChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asLeftChatMember(): LeftChatMember? = this as? LeftChatMember @@ -1868,7 +1978,7 @@ inline fun ChatMember.asLeftChatMember(): LeftChatMember? = this as? LeftChatMem inline fun ChatMember.requireLeftChatMember(): LeftChatMember = this as LeftChatMember @PreviewFeature -inline fun ChatMember.whenMemberChatMember(block: (MemberChatMember) -> T) = asMemberChatMember() ?.let(block) +inline fun ChatMember.whenMemberChatMember(block: (MemberChatMember) -> T) = asMemberChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asMemberChatMember(): MemberChatMember? = this as? MemberChatMember @@ -1877,7 +1987,8 @@ inline fun ChatMember.asMemberChatMember(): MemberChatMember? = this as? MemberC inline fun ChatMember.requireMemberChatMember(): MemberChatMember = this as MemberChatMember @PreviewFeature -inline fun ChatMember.whenRestrictedChatMember(block: (RestrictedChatMember) -> T) = asRestrictedChatMember() ?.let(block) +inline fun ChatMember.whenRestrictedChatMember(block: (RestrictedChatMember) -> T) = + asRestrictedChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asRestrictedChatMember(): RestrictedChatMember? = this as? RestrictedChatMember @@ -1886,7 +1997,8 @@ inline fun ChatMember.asRestrictedChatMember(): RestrictedChatMember? = this as? inline fun ChatMember.requireRestrictedChatMember(): RestrictedChatMember = this as RestrictedChatMember @PreviewFeature -inline fun ChatMember.whenAdministratorChatMember(block: (AdministratorChatMember) -> T) = asAdministratorChatMember() ?.let(block) +inline fun ChatMember.whenAdministratorChatMember(block: (AdministratorChatMember) -> T) = + asAdministratorChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asAdministratorChatMember(): AdministratorChatMember? = this as? AdministratorChatMember @@ -1895,7 +2007,7 @@ inline fun ChatMember.asAdministratorChatMember(): AdministratorChatMember? = th inline fun ChatMember.requireAdministratorChatMember(): AdministratorChatMember = this as AdministratorChatMember @PreviewFeature -inline fun ChatMember.whenBannedChatMember(block: (BannedChatMember) -> T) = asBannedChatMember() ?.let(block) +inline fun ChatMember.whenBannedChatMember(block: (BannedChatMember) -> T) = asBannedChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asBannedChatMember(): BannedChatMember? = this as? BannedChatMember @@ -1904,7 +2016,8 @@ inline fun ChatMember.asBannedChatMember(): BannedChatMember? = this as? BannedC inline fun ChatMember.requireBannedChatMember(): BannedChatMember = this as BannedChatMember @PreviewFeature -inline fun ChatMember.whenSpecialRightsChatMember(block: (SpecialRightsChatMember) -> T) = asSpecialRightsChatMember() ?.let(block) +inline fun ChatMember.whenSpecialRightsChatMember(block: (SpecialRightsChatMember) -> T) = + asSpecialRightsChatMember()?.let(block) @PreviewFeature inline fun ChatMember.asSpecialRightsChatMember(): SpecialRightsChatMember? = this as? SpecialRightsChatMember @@ -1913,7 +2026,8 @@ inline fun ChatMember.asSpecialRightsChatMember(): SpecialRightsChatMember? = th inline fun ChatMember.requireSpecialRightsChatMember(): SpecialRightsChatMember = this as SpecialRightsChatMember @PreviewFeature -inline fun TelegramMedia.whenAudioMediaGroupMemberTelegramMedia(block: (AudioMediaGroupMemberTelegramMedia) -> T) = asAudioMediaGroupMemberTelegramMedia() ?.let(block) +inline fun TelegramMedia.whenAudioMediaGroupMemberTelegramMedia(block: (AudioMediaGroupMemberTelegramMedia) -> T) = + asAudioMediaGroupMemberTelegramMedia()?.let(block) @PreviewFeature inline fun TelegramMedia.asAudioMediaGroupMemberTelegramMedia(): AudioMediaGroupMemberTelegramMedia? = @@ -1924,7 +2038,8 @@ inline fun TelegramMedia.requireAudioMediaGroupMemberTelegramMedia(): AudioMedia this as AudioMediaGroupMemberTelegramMedia @PreviewFeature -inline fun TelegramMedia.whenDocumentMediaGroupMemberTelegramMedia(block: (DocumentMediaGroupMemberTelegramMedia) -> T) = asDocumentMediaGroupMemberTelegramMedia() ?.let(block) +inline fun TelegramMedia.whenDocumentMediaGroupMemberTelegramMedia(block: (DocumentMediaGroupMemberTelegramMedia) -> T) = + asDocumentMediaGroupMemberTelegramMedia()?.let(block) @PreviewFeature inline fun TelegramMedia.asDocumentMediaGroupMemberTelegramMedia(): DocumentMediaGroupMemberTelegramMedia? = @@ -1935,7 +2050,8 @@ inline fun TelegramMedia.requireDocumentMediaGroupMemberTelegramMedia(): Documen this as DocumentMediaGroupMemberTelegramMedia @PreviewFeature -inline fun TelegramMedia.whenDuratedTelegramMedia(block: (DuratedTelegramMedia) -> T) = asDuratedTelegramMedia() ?.let(block) +inline fun TelegramMedia.whenDuratedTelegramMedia(block: (DuratedTelegramMedia) -> T) = + asDuratedTelegramMedia()?.let(block) @PreviewFeature inline fun TelegramMedia.asDuratedTelegramMedia(): DuratedTelegramMedia? = this as? DuratedTelegramMedia @@ -1944,7 +2060,8 @@ inline fun TelegramMedia.asDuratedTelegramMedia(): DuratedTelegramMedia? = this inline fun TelegramMedia.requireDuratedTelegramMedia(): DuratedTelegramMedia = this as DuratedTelegramMedia @PreviewFeature -inline fun TelegramMedia.whenTelegramMediaAnimation(block: (TelegramMediaAnimation) -> T) = asTelegramMediaAnimation() ?.let(block) +inline fun TelegramMedia.whenTelegramMediaAnimation(block: (TelegramMediaAnimation) -> T) = + asTelegramMediaAnimation()?.let(block) @PreviewFeature inline fun TelegramMedia.asTelegramMediaAnimation(): TelegramMediaAnimation? = this as? TelegramMediaAnimation @@ -1953,7 +2070,8 @@ inline fun TelegramMedia.asTelegramMediaAnimation(): TelegramMediaAnimation? = t inline fun TelegramMedia.requireTelegramMediaAnimation(): TelegramMediaAnimation = this as TelegramMediaAnimation @PreviewFeature -inline fun TelegramMedia.whenTelegramMediaAudio(block: (TelegramMediaAudio) -> T) = asTelegramMediaAudio() ?.let(block) +inline fun TelegramMedia.whenTelegramMediaAudio(block: (TelegramMediaAudio) -> T) = + asTelegramMediaAudio()?.let(block) @PreviewFeature inline fun TelegramMedia.asTelegramMediaAudio(): TelegramMediaAudio? = this as? TelegramMediaAudio @@ -1962,7 +2080,8 @@ inline fun TelegramMedia.asTelegramMediaAudio(): TelegramMediaAudio? = this as? inline fun TelegramMedia.requireTelegramMediaAudio(): TelegramMediaAudio = this as TelegramMediaAudio @PreviewFeature -inline fun TelegramMedia.whenTelegramMediaDocument(block: (TelegramMediaDocument) -> T) = asTelegramMediaDocument() ?.let(block) +inline fun TelegramMedia.whenTelegramMediaDocument(block: (TelegramMediaDocument) -> T) = + asTelegramMediaDocument()?.let(block) @PreviewFeature inline fun TelegramMedia.asTelegramMediaDocument(): TelegramMediaDocument? = this as? TelegramMediaDocument @@ -1971,7 +2090,8 @@ inline fun TelegramMedia.asTelegramMediaDocument(): TelegramMediaDocument? = thi inline fun TelegramMedia.requireTelegramMediaDocument(): TelegramMediaDocument = this as TelegramMediaDocument @PreviewFeature -inline fun TelegramMedia.whenTelegramMediaPhoto(block: (TelegramMediaPhoto) -> T) = asTelegramMediaPhoto() ?.let(block) +inline fun TelegramMedia.whenTelegramMediaPhoto(block: (TelegramMediaPhoto) -> T) = + asTelegramMediaPhoto()?.let(block) @PreviewFeature inline fun TelegramMedia.asTelegramMediaPhoto(): TelegramMediaPhoto? = this as? TelegramMediaPhoto @@ -1980,7 +2100,8 @@ inline fun TelegramMedia.asTelegramMediaPhoto(): TelegramMediaPhoto? = this as? inline fun TelegramMedia.requireTelegramMediaPhoto(): TelegramMediaPhoto = this as TelegramMediaPhoto @PreviewFeature -inline fun TelegramMedia.whenTelegramMediaVideo(block: (TelegramMediaVideo) -> T) = asTelegramMediaVideo() ?.let(block) +inline fun TelegramMedia.whenTelegramMediaVideo(block: (TelegramMediaVideo) -> T) = + asTelegramMediaVideo()?.let(block) @PreviewFeature inline fun TelegramMedia.asTelegramMediaVideo(): TelegramMediaVideo? = this as? TelegramMediaVideo @@ -1989,17 +2110,20 @@ inline fun TelegramMedia.asTelegramMediaVideo(): TelegramMediaVideo? = this as? inline fun TelegramMedia.requireTelegramMediaVideo(): TelegramMediaVideo = this as TelegramMediaVideo @PreviewFeature -inline fun TelegramMedia.whenMediaGroupMemberTelegramMedia(block: (MediaGroupMemberTelegramMedia) -> T) = asMediaGroupMemberTelegramMedia() ?.let(block) +inline fun TelegramMedia.whenMediaGroupMemberTelegramMedia(block: (MediaGroupMemberTelegramMedia) -> T) = + asMediaGroupMemberTelegramMedia()?.let(block) @PreviewFeature -inline fun TelegramMedia.asMediaGroupMemberTelegramMedia(): MediaGroupMemberTelegramMedia? = this as? MediaGroupMemberTelegramMedia +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) +inline fun TelegramMedia.whenSizedTelegramMedia(block: (SizedTelegramMedia) -> T) = + asSizedTelegramMedia()?.let(block) @PreviewFeature inline fun TelegramMedia.asSizedTelegramMedia(): SizedTelegramMedia? = this as? SizedTelegramMedia @@ -2008,7 +2132,8 @@ inline fun TelegramMedia.asSizedTelegramMedia(): SizedTelegramMedia? = this as? inline fun TelegramMedia.requireSizedTelegramMedia(): SizedTelegramMedia = this as SizedTelegramMedia @PreviewFeature -inline fun TelegramMedia.whenThumbedTelegramMedia(block: (ThumbedTelegramMedia) -> T) = asThumbedTelegramMedia() ?.let(block) +inline fun TelegramMedia.whenThumbedTelegramMedia(block: (ThumbedTelegramMedia) -> T) = + asThumbedTelegramMedia()?.let(block) @PreviewFeature inline fun TelegramMedia.asThumbedTelegramMedia(): ThumbedTelegramMedia? = this as? ThumbedTelegramMedia @@ -2017,7 +2142,8 @@ inline fun TelegramMedia.asThumbedTelegramMedia(): ThumbedTelegramMedia? = this inline fun TelegramMedia.requireThumbedTelegramMedia(): ThumbedTelegramMedia = this as ThumbedTelegramMedia @PreviewFeature -inline fun TelegramMedia.whenTitledTelegramMedia(block: (TitledTelegramMedia) -> T) = asTitledTelegramMedia() ?.let(block) +inline fun TelegramMedia.whenTitledTelegramMedia(block: (TitledTelegramMedia) -> T) = + asTitledTelegramMedia()?.let(block) @PreviewFeature inline fun TelegramMedia.asTitledTelegramMedia(): TitledTelegramMedia? = this as? TitledTelegramMedia @@ -2026,7 +2152,8 @@ inline fun TelegramMedia.asTitledTelegramMedia(): TitledTelegramMedia? = this as inline fun TelegramMedia.requireTitledTelegramMedia(): TitledTelegramMedia = this as TitledTelegramMedia @PreviewFeature -inline fun TelegramMedia.whenVisualMediaGroupMemberTelegramMedia(block: (VisualMediaGroupMemberTelegramMedia) -> T) = asVisualMediaGroupMemberTelegramMedia() ?.let(block) +inline fun TelegramMedia.whenVisualMediaGroupMemberTelegramMedia(block: (VisualMediaGroupMemberTelegramMedia) -> T) = + asVisualMediaGroupMemberTelegramMedia()?.let(block) @PreviewFeature inline fun TelegramMedia.asVisualMediaGroupMemberTelegramMedia(): VisualMediaGroupMemberTelegramMedia? = @@ -2037,7 +2164,7 @@ inline fun TelegramMedia.requireVisualMediaGroupMemberTelegramMedia(): VisualMed this as VisualMediaGroupMemberTelegramMedia @PreviewFeature -inline fun Update.whenCallbackQueryUpdate(block: (CallbackQueryUpdate) -> T) = asCallbackQueryUpdate() ?.let(block) +inline fun Update.whenCallbackQueryUpdate(block: (CallbackQueryUpdate) -> T) = asCallbackQueryUpdate()?.let(block) @PreviewFeature inline fun Update.asCallbackQueryUpdate(): CallbackQueryUpdate? = this as? CallbackQueryUpdate @@ -2046,7 +2173,7 @@ inline fun Update.asCallbackQueryUpdate(): CallbackQueryUpdate? = this as? Callb inline fun Update.requireCallbackQueryUpdate(): CallbackQueryUpdate = this as CallbackQueryUpdate @PreviewFeature -inline fun Update.whenChannelPostUpdate(block: (ChannelPostUpdate) -> T) = asChannelPostUpdate() ?.let(block) +inline fun Update.whenChannelPostUpdate(block: (ChannelPostUpdate) -> T) = asChannelPostUpdate()?.let(block) @PreviewFeature inline fun Update.asChannelPostUpdate(): ChannelPostUpdate? = this as? ChannelPostUpdate @@ -2055,7 +2182,8 @@ inline fun Update.asChannelPostUpdate(): ChannelPostUpdate? = this as? ChannelPo inline fun Update.requireChannelPostUpdate(): ChannelPostUpdate = this as ChannelPostUpdate @PreviewFeature -inline fun Update.whenChosenInlineResultUpdate(block: (ChosenInlineResultUpdate) -> T) = asChosenInlineResultUpdate() ?.let(block) +inline fun Update.whenChosenInlineResultUpdate(block: (ChosenInlineResultUpdate) -> T) = + asChosenInlineResultUpdate()?.let(block) @PreviewFeature inline fun Update.asChosenInlineResultUpdate(): ChosenInlineResultUpdate? = this as? ChosenInlineResultUpdate @@ -2064,7 +2192,8 @@ inline fun Update.asChosenInlineResultUpdate(): ChosenInlineResultUpdate? = this inline fun Update.requireChosenInlineResultUpdate(): ChosenInlineResultUpdate = this as ChosenInlineResultUpdate @PreviewFeature -inline fun Update.whenEditChannelPostUpdate(block: (EditChannelPostUpdate) -> T) = asEditChannelPostUpdate() ?.let(block) +inline fun Update.whenEditChannelPostUpdate(block: (EditChannelPostUpdate) -> T) = + asEditChannelPostUpdate()?.let(block) @PreviewFeature inline fun Update.asEditChannelPostUpdate(): EditChannelPostUpdate? = this as? EditChannelPostUpdate @@ -2073,7 +2202,7 @@ inline fun Update.asEditChannelPostUpdate(): EditChannelPostUpdate? = this as? E inline fun Update.requireEditChannelPostUpdate(): EditChannelPostUpdate = this as EditChannelPostUpdate @PreviewFeature -inline fun Update.whenEditMessageUpdate(block: (EditMessageUpdate) -> T) = asEditMessageUpdate() ?.let(block) +inline fun Update.whenEditMessageUpdate(block: (EditMessageUpdate) -> T) = asEditMessageUpdate()?.let(block) @PreviewFeature inline fun Update.asEditMessageUpdate(): EditMessageUpdate? = this as? EditMessageUpdate @@ -2082,7 +2211,7 @@ inline fun Update.asEditMessageUpdate(): EditMessageUpdate? = this as? EditMessa inline fun Update.requireEditMessageUpdate(): EditMessageUpdate = this as EditMessageUpdate @PreviewFeature -inline fun Update.whenInlineQueryUpdate(block: (InlineQueryUpdate) -> T) = asInlineQueryUpdate() ?.let(block) +inline fun Update.whenInlineQueryUpdate(block: (InlineQueryUpdate) -> T) = asInlineQueryUpdate()?.let(block) @PreviewFeature inline fun Update.asInlineQueryUpdate(): InlineQueryUpdate? = this as? InlineQueryUpdate @@ -2091,7 +2220,8 @@ inline fun Update.asInlineQueryUpdate(): InlineQueryUpdate? = this as? InlineQue inline fun Update.requireInlineQueryUpdate(): InlineQueryUpdate = this as InlineQueryUpdate @PreviewFeature -inline fun Update.whenChannelPostMediaGroupUpdate(block: (ChannelPostMediaGroupUpdate) -> T) = asChannelPostMediaGroupUpdate() ?.let(block) +inline fun Update.whenChannelPostMediaGroupUpdate(block: (ChannelPostMediaGroupUpdate) -> T) = + asChannelPostMediaGroupUpdate()?.let(block) @PreviewFeature inline fun Update.asChannelPostMediaGroupUpdate(): ChannelPostMediaGroupUpdate? = this as? ChannelPostMediaGroupUpdate @@ -2101,7 +2231,8 @@ inline fun Update.requireChannelPostMediaGroupUpdate(): ChannelPostMediaGroupUpd this as ChannelPostMediaGroupUpdate @PreviewFeature -inline fun Update.whenEditChannelPostMediaGroupUpdate(block: (EditChannelPostMediaGroupUpdate) -> T) = asEditChannelPostMediaGroupUpdate() ?.let(block) +inline fun Update.whenEditChannelPostMediaGroupUpdate(block: (EditChannelPostMediaGroupUpdate) -> T) = + asEditChannelPostMediaGroupUpdate()?.let(block) @PreviewFeature inline fun Update.asEditChannelPostMediaGroupUpdate(): EditChannelPostMediaGroupUpdate? = @@ -2112,7 +2243,8 @@ inline fun Update.requireEditChannelPostMediaGroupUpdate(): EditChannelPostMedia this as EditChannelPostMediaGroupUpdate @PreviewFeature -inline fun Update.whenEditMediaGroupUpdate(block: (EditMediaGroupUpdate) -> T) = asEditMediaGroupUpdate() ?.let(block) +inline fun Update.whenEditMediaGroupUpdate(block: (EditMediaGroupUpdate) -> T) = + asEditMediaGroupUpdate()?.let(block) @PreviewFeature inline fun Update.asEditMediaGroupUpdate(): EditMediaGroupUpdate? = this as? EditMediaGroupUpdate @@ -2121,7 +2253,8 @@ inline fun Update.asEditMediaGroupUpdate(): EditMediaGroupUpdate? = this as? Edi inline fun Update.requireEditMediaGroupUpdate(): EditMediaGroupUpdate = this as EditMediaGroupUpdate @PreviewFeature -inline fun Update.whenEditMessageMediaGroupUpdate(block: (EditMessageMediaGroupUpdate) -> T) = asEditMessageMediaGroupUpdate() ?.let(block) +inline fun Update.whenEditMessageMediaGroupUpdate(block: (EditMessageMediaGroupUpdate) -> T) = + asEditMessageMediaGroupUpdate()?.let(block) @PreviewFeature inline fun Update.asEditMessageMediaGroupUpdate(): EditMessageMediaGroupUpdate? = this as? EditMessageMediaGroupUpdate @@ -2131,7 +2264,7 @@ inline fun Update.requireEditMessageMediaGroupUpdate(): EditMessageMediaGroupUpd this as EditMessageMediaGroupUpdate @PreviewFeature -inline fun Update.whenMediaGroupUpdate(block: (MediaGroupUpdate) -> T) = asMediaGroupUpdate() ?.let(block) +inline fun Update.whenMediaGroupUpdate(block: (MediaGroupUpdate) -> T) = asMediaGroupUpdate()?.let(block) @PreviewFeature inline fun Update.asMediaGroupUpdate(): MediaGroupUpdate? = this as? MediaGroupUpdate @@ -2140,7 +2273,8 @@ inline fun Update.asMediaGroupUpdate(): MediaGroupUpdate? = this as? MediaGroupU inline fun Update.requireMediaGroupUpdate(): MediaGroupUpdate = this as MediaGroupUpdate @PreviewFeature -inline fun Update.whenMessageMediaGroupUpdate(block: (MessageMediaGroupUpdate) -> T) = asMessageMediaGroupUpdate() ?.let(block) +inline fun Update.whenMessageMediaGroupUpdate(block: (MessageMediaGroupUpdate) -> T) = + asMessageMediaGroupUpdate()?.let(block) @PreviewFeature inline fun Update.asMessageMediaGroupUpdate(): MessageMediaGroupUpdate? = this as? MessageMediaGroupUpdate @@ -2149,7 +2283,8 @@ inline fun Update.asMessageMediaGroupUpdate(): MessageMediaGroupUpdate? = this a inline fun Update.requireMessageMediaGroupUpdate(): MessageMediaGroupUpdate = this as MessageMediaGroupUpdate @PreviewFeature -inline fun Update.whenSentMediaGroupUpdate(block: (SentMediaGroupUpdate) -> T) = asSentMediaGroupUpdate() ?.let(block) +inline fun Update.whenSentMediaGroupUpdate(block: (SentMediaGroupUpdate) -> T) = + asSentMediaGroupUpdate()?.let(block) @PreviewFeature inline fun Update.asSentMediaGroupUpdate(): SentMediaGroupUpdate? = this as? SentMediaGroupUpdate @@ -2158,7 +2293,7 @@ inline fun Update.asSentMediaGroupUpdate(): SentMediaGroupUpdate? = this as? Sen inline fun Update.requireSentMediaGroupUpdate(): SentMediaGroupUpdate = this as SentMediaGroupUpdate @PreviewFeature -inline fun Update.whenMessageUpdate(block: (MessageUpdate) -> T) = asMessageUpdate() ?.let(block) +inline fun Update.whenMessageUpdate(block: (MessageUpdate) -> T) = asMessageUpdate()?.let(block) @PreviewFeature inline fun Update.asMessageUpdate(): MessageUpdate? = this as? MessageUpdate @@ -2167,7 +2302,7 @@ inline fun Update.asMessageUpdate(): MessageUpdate? = this as? MessageUpdate inline fun Update.requireMessageUpdate(): MessageUpdate = this as MessageUpdate @PreviewFeature -inline fun Update.whenPollAnswerUpdate(block: (PollAnswerUpdate) -> T) = asPollAnswerUpdate() ?.let(block) +inline fun Update.whenPollAnswerUpdate(block: (PollAnswerUpdate) -> T) = asPollAnswerUpdate()?.let(block) @PreviewFeature inline fun Update.asPollAnswerUpdate(): PollAnswerUpdate? = this as? PollAnswerUpdate @@ -2176,7 +2311,7 @@ inline fun Update.asPollAnswerUpdate(): PollAnswerUpdate? = this as? PollAnswerU inline fun Update.requirePollAnswerUpdate(): PollAnswerUpdate = this as PollAnswerUpdate @PreviewFeature -inline fun Update.whenPollUpdate(block: (PollUpdate) -> T) = asPollUpdate() ?.let(block) +inline fun Update.whenPollUpdate(block: (PollUpdate) -> T) = asPollUpdate()?.let(block) @PreviewFeature inline fun Update.asPollUpdate(): PollUpdate? = this as? PollUpdate @@ -2185,7 +2320,8 @@ inline fun Update.asPollUpdate(): PollUpdate? = this as? PollUpdate inline fun Update.requirePollUpdate(): PollUpdate = this as PollUpdate @PreviewFeature -inline fun Update.whenPreCheckoutQueryUpdate(block: (PreCheckoutQueryUpdate) -> T) = asPreCheckoutQueryUpdate() ?.let(block) +inline fun Update.whenPreCheckoutQueryUpdate(block: (PreCheckoutQueryUpdate) -> T) = + asPreCheckoutQueryUpdate()?.let(block) @PreviewFeature inline fun Update.asPreCheckoutQueryUpdate(): PreCheckoutQueryUpdate? = this as? PreCheckoutQueryUpdate @@ -2194,7 +2330,7 @@ inline fun Update.asPreCheckoutQueryUpdate(): PreCheckoutQueryUpdate? = this as? inline fun Update.requirePreCheckoutQueryUpdate(): PreCheckoutQueryUpdate = this as PreCheckoutQueryUpdate @PreviewFeature -inline fun Update.whenShippingQueryUpdate(block: (ShippingQueryUpdate) -> T) = asShippingQueryUpdate() ?.let(block) +inline fun Update.whenShippingQueryUpdate(block: (ShippingQueryUpdate) -> T) = asShippingQueryUpdate()?.let(block) @PreviewFeature inline fun Update.asShippingQueryUpdate(): ShippingQueryUpdate? = this as? ShippingQueryUpdate @@ -2203,7 +2339,8 @@ inline fun Update.asShippingQueryUpdate(): ShippingQueryUpdate? = this as? Shipp inline fun Update.requireShippingQueryUpdate(): ShippingQueryUpdate = this as ShippingQueryUpdate @PreviewFeature -inline fun Update.whenBaseEditMessageUpdate(block: (BaseEditMessageUpdate) -> T) = asBaseEditMessageUpdate() ?.let(block) +inline fun Update.whenBaseEditMessageUpdate(block: (BaseEditMessageUpdate) -> T) = + asBaseEditMessageUpdate()?.let(block) @PreviewFeature inline fun Update.asBaseEditMessageUpdate(): BaseEditMessageUpdate? = this as? BaseEditMessageUpdate @@ -2212,7 +2349,7 @@ inline fun Update.asBaseEditMessageUpdate(): BaseEditMessageUpdate? = this as? B inline fun Update.requireBaseEditMessageUpdate(): BaseEditMessageUpdate = this as BaseEditMessageUpdate @PreviewFeature -inline fun Update.whenBaseMessageUpdate(block: (BaseMessageUpdate) -> T) = asBaseMessageUpdate() ?.let(block) +inline fun Update.whenBaseMessageUpdate(block: (BaseMessageUpdate) -> T) = asBaseMessageUpdate()?.let(block) @PreviewFeature inline fun Update.asBaseMessageUpdate(): BaseMessageUpdate? = this as? BaseMessageUpdate @@ -2221,7 +2358,8 @@ inline fun Update.asBaseMessageUpdate(): BaseMessageUpdate? = this as? BaseMessa inline fun Update.requireBaseMessageUpdate(): BaseMessageUpdate = this as BaseMessageUpdate @PreviewFeature -inline fun Update.whenBaseSentMessageUpdate(block: (BaseSentMessageUpdate) -> T) = asBaseSentMessageUpdate() ?.let(block) +inline fun Update.whenBaseSentMessageUpdate(block: (BaseSentMessageUpdate) -> T) = + asBaseSentMessageUpdate()?.let(block) @PreviewFeature inline fun Update.asBaseSentMessageUpdate(): BaseSentMessageUpdate? = this as? BaseSentMessageUpdate @@ -2230,7 +2368,7 @@ inline fun Update.asBaseSentMessageUpdate(): BaseSentMessageUpdate? = this as? B inline fun Update.requireBaseSentMessageUpdate(): BaseSentMessageUpdate = this as BaseSentMessageUpdate @PreviewFeature -inline fun Update.whenUnknownUpdate(block: (UnknownUpdate) -> T) = asUnknownUpdate() ?.let(block) +inline fun Update.whenUnknownUpdate(block: (UnknownUpdate) -> T) = asUnknownUpdate()?.let(block) @PreviewFeature inline fun Update.asUnknownUpdate(): UnknownUpdate? = this as? UnknownUpdate @@ -2239,7 +2377,8 @@ inline fun Update.asUnknownUpdate(): UnknownUpdate? = this as? UnknownUpdate inline fun Update.requireUnknownUpdate(): UnknownUpdate = this as UnknownUpdate @PreviewFeature -inline fun Update.whenCommonChatMemberUpdatedUpdate(block: (CommonChatMemberUpdatedUpdate) -> T) = asCommonChatMemberUpdatedUpdate() ?.let(block) +inline fun Update.whenCommonChatMemberUpdatedUpdate(block: (CommonChatMemberUpdatedUpdate) -> T) = + asCommonChatMemberUpdatedUpdate()?.let(block) @PreviewFeature inline fun Update.asCommonChatMemberUpdatedUpdate(): CommonChatMemberUpdatedUpdate? = @@ -2250,7 +2389,8 @@ inline fun Update.requireCommonChatMemberUpdatedUpdate(): CommonChatMemberUpdate this as CommonChatMemberUpdatedUpdate @PreviewFeature -inline fun Update.whenMyChatMemberUpdatedUpdate(block: (MyChatMemberUpdatedUpdate) -> T) = asMyChatMemberUpdatedUpdate() ?.let(block) +inline fun Update.whenMyChatMemberUpdatedUpdate(block: (MyChatMemberUpdatedUpdate) -> T) = + asMyChatMemberUpdatedUpdate()?.let(block) @PreviewFeature inline fun Update.asMyChatMemberUpdatedUpdate(): MyChatMemberUpdatedUpdate? = this as? MyChatMemberUpdatedUpdate @@ -2259,7 +2399,8 @@ inline fun Update.asMyChatMemberUpdatedUpdate(): MyChatMemberUpdatedUpdate? = th inline fun Update.requireMyChatMemberUpdatedUpdate(): MyChatMemberUpdatedUpdate = this as MyChatMemberUpdatedUpdate @PreviewFeature -inline fun Update.whenChatMemberUpdatedUpdate(block: (ChatMemberUpdatedUpdate) -> T) = asChatMemberUpdatedUpdate() ?.let(block) +inline fun Update.whenChatMemberUpdatedUpdate(block: (ChatMemberUpdatedUpdate) -> T) = + asChatMemberUpdatedUpdate()?.let(block) @PreviewFeature inline fun Update.asChatMemberUpdatedUpdate(): ChatMemberUpdatedUpdate? = this as? ChatMemberUpdatedUpdate @@ -2268,7 +2409,8 @@ inline fun Update.asChatMemberUpdatedUpdate(): ChatMemberUpdatedUpdate? = this a inline fun Update.requireChatMemberUpdatedUpdate(): ChatMemberUpdatedUpdate = this as ChatMemberUpdatedUpdate @PreviewFeature -inline fun Update.whenChatJoinRequestUpdate(block: (ChatJoinRequestUpdate) -> T) = asChatJoinRequestUpdate() ?.let(block) +inline fun Update.whenChatJoinRequestUpdate(block: (ChatJoinRequestUpdate) -> T) = + asChatJoinRequestUpdate()?.let(block) @PreviewFeature inline fun Update.asChatJoinRequestUpdate(): ChatJoinRequestUpdate? = this as? ChatJoinRequestUpdate @@ -2277,7 +2419,7 @@ inline fun Update.asChatJoinRequestUpdate(): ChatJoinRequestUpdate? = this as? C inline fun Update.requireChatJoinRequestUpdate(): ChatJoinRequestUpdate = this as ChatJoinRequestUpdate @PreviewFeature -inline fun TelegramMediaFile.whenAnimationFile(block: (AnimationFile) -> T) = asAnimationFile() ?.let(block) +inline fun TelegramMediaFile.whenAnimationFile(block: (AnimationFile) -> T) = asAnimationFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asAnimationFile(): AnimationFile? = this as? AnimationFile @@ -2286,7 +2428,7 @@ inline fun TelegramMediaFile.asAnimationFile(): AnimationFile? = this as? Animat inline fun TelegramMediaFile.requireAnimationFile(): AnimationFile = this as AnimationFile @PreviewFeature -inline fun TelegramMediaFile.whenAudioFile(block: (AudioFile) -> T) = asAudioFile() ?.let(block) +inline fun TelegramMediaFile.whenAudioFile(block: (AudioFile) -> T) = asAudioFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asAudioFile(): AudioFile? = this as? AudioFile @@ -2295,7 +2437,7 @@ inline fun TelegramMediaFile.asAudioFile(): AudioFile? = this as? AudioFile inline fun TelegramMediaFile.requireAudioFile(): AudioFile = this as AudioFile @PreviewFeature -inline fun TelegramMediaFile.whenDocumentFile(block: (DocumentFile) -> T) = asDocumentFile() ?.let(block) +inline fun TelegramMediaFile.whenDocumentFile(block: (DocumentFile) -> T) = asDocumentFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asDocumentFile(): DocumentFile? = this as? DocumentFile @@ -2304,7 +2446,7 @@ inline fun TelegramMediaFile.asDocumentFile(): DocumentFile? = this as? Document inline fun TelegramMediaFile.requireDocumentFile(): DocumentFile = this as DocumentFile @PreviewFeature -inline fun TelegramMediaFile.whenFile(block: (File) -> T) = asFile() ?.let(block) +inline fun TelegramMediaFile.whenFile(block: (File) -> T) = asFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asFile(): File? = this as? File @@ -2313,7 +2455,7 @@ inline fun TelegramMediaFile.asFile(): File? = this as? File inline fun TelegramMediaFile.requireFile(): File = this as File @PreviewFeature -inline fun TelegramMediaFile.whenPathedFile(block: (PathedFile) -> T) = asPathedFile() ?.let(block) +inline fun TelegramMediaFile.whenPathedFile(block: (PathedFile) -> T) = asPathedFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asPathedFile(): PathedFile? = this as? PathedFile @@ -2322,7 +2464,7 @@ inline fun TelegramMediaFile.asPathedFile(): PathedFile? = this as? PathedFile inline fun TelegramMediaFile.requirePathedFile(): PathedFile = this as PathedFile @PreviewFeature -inline fun TelegramMediaFile.whenPhotoSize(block: (PhotoSize) -> T) = asPhotoSize() ?.let(block) +inline fun TelegramMediaFile.whenPhotoSize(block: (PhotoSize) -> T) = asPhotoSize()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asPhotoSize(): PhotoSize? = this as? PhotoSize @@ -2331,7 +2473,7 @@ inline fun TelegramMediaFile.asPhotoSize(): PhotoSize? = this as? PhotoSize inline fun TelegramMediaFile.requirePhotoSize(): PhotoSize = this as PhotoSize @PreviewFeature -inline fun TelegramMediaFile.whenSticker(block: (Sticker) -> T) = asSticker() ?.let(block) +inline fun TelegramMediaFile.whenSticker(block: (Sticker) -> T) = asSticker()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asSticker(): Sticker? = this as? Sticker @@ -2340,7 +2482,7 @@ inline fun TelegramMediaFile.asSticker(): Sticker? = this as? Sticker inline fun TelegramMediaFile.requireSticker(): Sticker = this as Sticker @PreviewFeature -inline fun TelegramMediaFile.whenSimpleSticker(block: (SimpleSticker) -> T) = asSimpleSticker() ?.let(block) +inline fun TelegramMediaFile.whenSimpleSticker(block: (SimpleSticker) -> T) = asSimpleSticker()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asSimpleSticker(): SimpleSticker? = this as? SimpleSticker @@ -2349,7 +2491,7 @@ inline fun TelegramMediaFile.asSimpleSticker(): SimpleSticker? = this as? Simple inline fun TelegramMediaFile.requireSimpleSticker(): SimpleSticker = this as SimpleSticker @PreviewFeature -inline fun TelegramMediaFile.whenAnimatedSticker(block: (AnimatedSticker) -> T) = asAnimatedSticker() ?.let(block) +inline fun TelegramMediaFile.whenAnimatedSticker(block: (AnimatedSticker) -> T) = asAnimatedSticker()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asAnimatedSticker(): AnimatedSticker? = this as? AnimatedSticker @@ -2358,7 +2500,7 @@ inline fun TelegramMediaFile.asAnimatedSticker(): AnimatedSticker? = this as? An inline fun TelegramMediaFile.requireAnimatedSticker(): AnimatedSticker = this as AnimatedSticker @PreviewFeature -inline fun TelegramMediaFile.whenVideoSticker(block: (VideoSticker) -> T) = asVideoSticker() ?.let(block) +inline fun TelegramMediaFile.whenVideoSticker(block: (VideoSticker) -> T) = asVideoSticker()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asVideoSticker(): VideoSticker? = this as? VideoSticker @@ -2367,7 +2509,7 @@ inline fun TelegramMediaFile.asVideoSticker(): VideoSticker? = this as? VideoSti inline fun TelegramMediaFile.requireVideoSticker(): VideoSticker = this as VideoSticker @PreviewFeature -inline fun TelegramMediaFile.whenVideoFile(block: (VideoFile) -> T) = asVideoFile() ?.let(block) +inline fun TelegramMediaFile.whenVideoFile(block: (VideoFile) -> T) = asVideoFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asVideoFile(): VideoFile? = this as? VideoFile @@ -2376,7 +2518,7 @@ inline fun TelegramMediaFile.asVideoFile(): VideoFile? = this as? VideoFile inline fun TelegramMediaFile.requireVideoFile(): VideoFile = this as VideoFile @PreviewFeature -inline fun TelegramMediaFile.whenVideoNoteFile(block: (VideoNoteFile) -> T) = asVideoNoteFile() ?.let(block) +inline fun TelegramMediaFile.whenVideoNoteFile(block: (VideoNoteFile) -> T) = asVideoNoteFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asVideoNoteFile(): VideoNoteFile? = this as? VideoNoteFile @@ -2385,7 +2527,7 @@ inline fun TelegramMediaFile.asVideoNoteFile(): VideoNoteFile? = this as? VideoN inline fun TelegramMediaFile.requireVideoNoteFile(): VideoNoteFile = this as VideoNoteFile @PreviewFeature -inline fun TelegramMediaFile.whenVoiceFile(block: (VoiceFile) -> T) = asVoiceFile() ?.let(block) +inline fun TelegramMediaFile.whenVoiceFile(block: (VoiceFile) -> T) = asVoiceFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asVoiceFile(): VoiceFile? = this as? VoiceFile @@ -2394,7 +2536,7 @@ inline fun TelegramMediaFile.asVoiceFile(): VoiceFile? = this as? VoiceFile inline fun TelegramMediaFile.requireVoiceFile(): VoiceFile = this as VoiceFile @PreviewFeature -inline fun TelegramMediaFile.whenMimedMediaFile(block: (MimedMediaFile) -> T) = asMimedMediaFile() ?.let(block) +inline fun TelegramMediaFile.whenMimedMediaFile(block: (MimedMediaFile) -> T) = asMimedMediaFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asMimedMediaFile(): MimedMediaFile? = this as? MimedMediaFile @@ -2403,7 +2545,8 @@ inline fun TelegramMediaFile.asMimedMediaFile(): MimedMediaFile? = this as? Mime inline fun TelegramMediaFile.requireMimedMediaFile(): MimedMediaFile = this as MimedMediaFile @PreviewFeature -inline fun TelegramMediaFile.whenPlayableMediaFile(block: (PlayableMediaFile) -> T) = asPlayableMediaFile() ?.let(block) +inline fun TelegramMediaFile.whenPlayableMediaFile(block: (PlayableMediaFile) -> T) = + asPlayableMediaFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asPlayableMediaFile(): PlayableMediaFile? = this as? PlayableMediaFile @@ -2412,7 +2555,7 @@ inline fun TelegramMediaFile.asPlayableMediaFile(): PlayableMediaFile? = this as inline fun TelegramMediaFile.requirePlayableMediaFile(): PlayableMediaFile = this as PlayableMediaFile @PreviewFeature -inline fun TelegramMediaFile.whenSizedMediaFile(block: (SizedMediaFile) -> T) = asSizedMediaFile() ?.let(block) +inline fun TelegramMediaFile.whenSizedMediaFile(block: (SizedMediaFile) -> T) = asSizedMediaFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asSizedMediaFile(): SizedMediaFile? = this as? SizedMediaFile @@ -2421,7 +2564,7 @@ inline fun TelegramMediaFile.asSizedMediaFile(): SizedMediaFile? = this as? Size inline fun TelegramMediaFile.requireSizedMediaFile(): SizedMediaFile = this as SizedMediaFile @PreviewFeature -inline fun TelegramMediaFile.whenThumbedMediaFile(block: (ThumbedMediaFile) -> T) = asThumbedMediaFile() ?.let(block) +inline fun TelegramMediaFile.whenThumbedMediaFile(block: (ThumbedMediaFile) -> T) = asThumbedMediaFile()?.let(block) @PreviewFeature inline fun TelegramMediaFile.asThumbedMediaFile(): ThumbedMediaFile? = this as? ThumbedMediaFile @@ -2430,7 +2573,7 @@ inline fun TelegramMediaFile.asThumbedMediaFile(): ThumbedMediaFile? = this as? inline fun TelegramMediaFile.requireThumbedMediaFile(): ThumbedMediaFile = this as ThumbedMediaFile @PreviewFeature -inline fun KeyboardMarkup.whenForceReply(block: (ReplyForce) -> T) = asForceReply() ?.let(block) +inline fun KeyboardMarkup.whenForceReply(block: (ReplyForce) -> T) = asForceReply()?.let(block) @PreviewFeature inline fun KeyboardMarkup.asForceReply(): ReplyForce? = this as? ReplyForce @@ -2439,7 +2582,8 @@ inline fun KeyboardMarkup.asForceReply(): ReplyForce? = this as? ReplyForce inline fun KeyboardMarkup.requireForceReply(): ReplyForce = this as ReplyForce @PreviewFeature -inline fun KeyboardMarkup.whenInlineKeyboardMarkup(block: (InlineKeyboardMarkup) -> T) = asInlineKeyboardMarkup() ?.let(block) +inline fun KeyboardMarkup.whenInlineKeyboardMarkup(block: (InlineKeyboardMarkup) -> T) = + asInlineKeyboardMarkup()?.let(block) @PreviewFeature inline fun KeyboardMarkup.asInlineKeyboardMarkup(): InlineKeyboardMarkup? = this as? InlineKeyboardMarkup @@ -2448,7 +2592,8 @@ inline fun KeyboardMarkup.asInlineKeyboardMarkup(): InlineKeyboardMarkup? = this inline fun KeyboardMarkup.requireInlineKeyboardMarkup(): InlineKeyboardMarkup = this as InlineKeyboardMarkup @PreviewFeature -inline fun KeyboardMarkup.whenReplyKeyboardMarkup(block: (ReplyKeyboardMarkup) -> T) = asReplyKeyboardMarkup() ?.let(block) +inline fun KeyboardMarkup.whenReplyKeyboardMarkup(block: (ReplyKeyboardMarkup) -> T) = + asReplyKeyboardMarkup()?.let(block) @PreviewFeature inline fun KeyboardMarkup.asReplyKeyboardMarkup(): ReplyKeyboardMarkup? = this as? ReplyKeyboardMarkup @@ -2457,7 +2602,8 @@ inline fun KeyboardMarkup.asReplyKeyboardMarkup(): ReplyKeyboardMarkup? = this a inline fun KeyboardMarkup.requireReplyKeyboardMarkup(): ReplyKeyboardMarkup = this as ReplyKeyboardMarkup @PreviewFeature -inline fun KeyboardMarkup.whenReplyKeyboardRemove(block: (ReplyKeyboardRemove) -> T) = asReplyKeyboardRemove() ?.let(block) +inline fun KeyboardMarkup.whenReplyKeyboardRemove(block: (ReplyKeyboardRemove) -> T) = + asReplyKeyboardRemove()?.let(block) @PreviewFeature inline fun KeyboardMarkup.asReplyKeyboardRemove(): ReplyKeyboardRemove? = this as? ReplyKeyboardRemove @@ -2466,7 +2612,8 @@ inline fun KeyboardMarkup.asReplyKeyboardRemove(): ReplyKeyboardRemove? = this a inline fun KeyboardMarkup.requireReplyKeyboardRemove(): ReplyKeyboardRemove = this as ReplyKeyboardRemove @PreviewFeature -inline fun InlineKeyboardButton.whenCallbackDataInlineKeyboardButton(block: (CallbackDataInlineKeyboardButton) -> T) = asCallbackDataInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenCallbackDataInlineKeyboardButton(block: (CallbackDataInlineKeyboardButton) -> T) = + asCallbackDataInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asCallbackDataInlineKeyboardButton(): CallbackDataInlineKeyboardButton? = @@ -2477,7 +2624,8 @@ inline fun InlineKeyboardButton.requireCallbackDataInlineKeyboardButton(): Callb this as CallbackDataInlineKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenCallbackGameInlineKeyboardButton(block: (CallbackGameInlineKeyboardButton) -> T) = asCallbackGameInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenCallbackGameInlineKeyboardButton(block: (CallbackGameInlineKeyboardButton) -> T) = + asCallbackGameInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asCallbackGameInlineKeyboardButton(): CallbackGameInlineKeyboardButton? = @@ -2488,7 +2636,8 @@ inline fun InlineKeyboardButton.requireCallbackGameInlineKeyboardButton(): Callb this as CallbackGameInlineKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenLoginURLInlineKeyboardButton(block: (LoginURLInlineKeyboardButton) -> T) = asLoginURLInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenLoginURLInlineKeyboardButton(block: (LoginURLInlineKeyboardButton) -> T) = + asLoginURLInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asLoginURLInlineKeyboardButton(): LoginURLInlineKeyboardButton? = @@ -2499,7 +2648,8 @@ inline fun InlineKeyboardButton.requireLoginURLInlineKeyboardButton(): LoginURLI this as LoginURLInlineKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenPayInlineKeyboardButton(block: (PayInlineKeyboardButton) -> T) = asPayInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenPayInlineKeyboardButton(block: (PayInlineKeyboardButton) -> T) = + asPayInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asPayInlineKeyboardButton(): PayInlineKeyboardButton? = this as? PayInlineKeyboardButton @@ -2509,7 +2659,8 @@ inline fun InlineKeyboardButton.requirePayInlineKeyboardButton(): PayInlineKeybo this as PayInlineKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenSwitchInlineQueryCurrentChatInlineKeyboardButton(block: (SwitchInlineQueryCurrentChatInlineKeyboardButton) -> T) = asSwitchInlineQueryCurrentChatInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenSwitchInlineQueryCurrentChatInlineKeyboardButton(block: (SwitchInlineQueryCurrentChatInlineKeyboardButton) -> T) = + asSwitchInlineQueryCurrentChatInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asSwitchInlineQueryCurrentChatInlineKeyboardButton(): SwitchInlineQueryCurrentChatInlineKeyboardButton? = @@ -2520,7 +2671,8 @@ inline fun InlineKeyboardButton.requireSwitchInlineQueryCurrentChatInlineKeyboar this as SwitchInlineQueryCurrentChatInlineKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenSwitchInlineQueryInlineKeyboardButton(block: (SwitchInlineQueryInlineKeyboardButton) -> T) = asSwitchInlineQueryInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenSwitchInlineQueryInlineKeyboardButton(block: (SwitchInlineQueryInlineKeyboardButton) -> T) = + asSwitchInlineQueryInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asSwitchInlineQueryInlineKeyboardButton(): SwitchInlineQueryInlineKeyboardButton? = @@ -2531,7 +2683,8 @@ inline fun InlineKeyboardButton.requireSwitchInlineQueryInlineKeyboardButton(): this as SwitchInlineQueryInlineKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenURLInlineKeyboardButton(block: (URLInlineKeyboardButton) -> T) = asURLInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenURLInlineKeyboardButton(block: (URLInlineKeyboardButton) -> T) = + asURLInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asURLInlineKeyboardButton(): URLInlineKeyboardButton? = this as? URLInlineKeyboardButton @@ -2541,7 +2694,8 @@ inline fun InlineKeyboardButton.requireURLInlineKeyboardButton(): URLInlineKeybo this as URLInlineKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenWebAppKeyboardButton(block: (WebAppKeyboardButton) -> T) = asWebAppKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenWebAppKeyboardButton(block: (WebAppKeyboardButton) -> T) = + asWebAppKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asWebAppKeyboardButton(): WebAppKeyboardButton? = this as? WebAppKeyboardButton @@ -2551,7 +2705,8 @@ inline fun InlineKeyboardButton.requireWebAppKeyboardButton(): WebAppKeyboardBut this as WebAppKeyboardButton @PreviewFeature -inline fun InlineKeyboardButton.whenUnknownInlineKeyboardButton(block: (UnknownInlineKeyboardButton) -> T) = asUnknownInlineKeyboardButton() ?.let(block) +inline fun InlineKeyboardButton.whenUnknownInlineKeyboardButton(block: (UnknownInlineKeyboardButton) -> T) = + asUnknownInlineKeyboardButton()?.let(block) @PreviewFeature inline fun InlineKeyboardButton.asUnknownInlineKeyboardButton(): UnknownInlineKeyboardButton? = @@ -2562,7 +2717,7 @@ inline fun InlineKeyboardButton.requireUnknownInlineKeyboardButton(): UnknownInl this as UnknownInlineKeyboardButton @PreviewFeature -inline fun Poll.whenMultipleAnswersPoll(block: (MultipleAnswersPoll) -> T) = asMultipleAnswersPoll() ?.let(block) +inline fun Poll.whenMultipleAnswersPoll(block: (MultipleAnswersPoll) -> T) = asMultipleAnswersPoll()?.let(block) @PreviewFeature inline fun Poll.asMultipleAnswersPoll(): MultipleAnswersPoll? = this as? MultipleAnswersPoll @@ -2571,7 +2726,7 @@ inline fun Poll.asMultipleAnswersPoll(): MultipleAnswersPoll? = this as? Multipl inline fun Poll.requireMultipleAnswersPoll(): MultipleAnswersPoll = this as MultipleAnswersPoll @PreviewFeature -inline fun Poll.whenQuizPoll(block: (QuizPoll) -> T) = asQuizPoll() ?.let(block) +inline fun Poll.whenQuizPoll(block: (QuizPoll) -> T) = asQuizPoll()?.let(block) @PreviewFeature inline fun Poll.asQuizPoll(): QuizPoll? = this as? QuizPoll @@ -2580,7 +2735,7 @@ inline fun Poll.asQuizPoll(): QuizPoll? = this as? QuizPoll inline fun Poll.requireQuizPoll(): QuizPoll = this as QuizPoll @PreviewFeature -inline fun Poll.whenRegularPoll(block: (RegularPoll) -> T) = asRegularPoll() ?.let(block) +inline fun Poll.whenRegularPoll(block: (RegularPoll) -> T) = asRegularPoll()?.let(block) @PreviewFeature inline fun Poll.asRegularPoll(): RegularPoll? = this as? RegularPoll @@ -2589,7 +2744,7 @@ inline fun Poll.asRegularPoll(): RegularPoll? = this as? RegularPoll inline fun Poll.requireRegularPoll(): RegularPoll = this as RegularPoll @PreviewFeature -inline fun Poll.whenUnknownPollType(block: (UnknownPollType) -> T) = asUnknownPollType() ?.let(block) +inline fun Poll.whenUnknownPollType(block: (UnknownPollType) -> T) = asUnknownPollType()?.let(block) @PreviewFeature inline fun Poll.asUnknownPollType(): UnknownPollType? = this as? UnknownPollType @@ -2598,7 +2753,7 @@ inline fun Poll.asUnknownPollType(): UnknownPollType? = this as? UnknownPollType inline fun Poll.requireUnknownPollType(): UnknownPollType = this as UnknownPollType @PreviewFeature -inline fun ResendableContent.whenContactContent(block: (ContactContent) -> T) = asContactContent() ?.let(block) +inline fun ResendableContent.whenContactContent(block: (ContactContent) -> T) = asContactContent()?.let(block) @PreviewFeature inline fun ResendableContent.asContactContent(): ContactContent? = this as? ContactContent @@ -2607,7 +2762,7 @@ inline fun ResendableContent.asContactContent(): ContactContent? = this as? Cont inline fun ResendableContent.requireContactContent(): ContactContent = this as ContactContent @PreviewFeature -inline fun ResendableContent.whenDiceContent(block: (DiceContent) -> T) = asDiceContent() ?.let(block) +inline fun ResendableContent.whenDiceContent(block: (DiceContent) -> T) = asDiceContent()?.let(block) @PreviewFeature inline fun ResendableContent.asDiceContent(): DiceContent? = this as? DiceContent @@ -2616,7 +2771,7 @@ inline fun ResendableContent.asDiceContent(): DiceContent? = this as? DiceConten inline fun ResendableContent.requireDiceContent(): DiceContent = this as DiceContent @PreviewFeature -inline fun ResendableContent.whenGameContent(block: (GameContent) -> T) = asGameContent() ?.let(block) +inline fun ResendableContent.whenGameContent(block: (GameContent) -> T) = asGameContent()?.let(block) @PreviewFeature inline fun ResendableContent.asGameContent(): GameContent? = this as? GameContent @@ -2625,7 +2780,7 @@ inline fun ResendableContent.asGameContent(): GameContent? = this as? GameConten inline fun ResendableContent.requireGameContent(): GameContent = this as GameContent @PreviewFeature -inline fun ResendableContent.whenLocationContent(block: (LocationContent) -> T) = asLocationContent() ?.let(block) +inline fun ResendableContent.whenLocationContent(block: (LocationContent) -> T) = asLocationContent()?.let(block) @PreviewFeature inline fun ResendableContent.asLocationContent(): LocationContent? = this as? LocationContent @@ -2634,7 +2789,8 @@ inline fun ResendableContent.asLocationContent(): LocationContent? = this as? Lo inline fun ResendableContent.requireLocationContent(): LocationContent = this as LocationContent @PreviewFeature -inline fun ResendableContent.whenLiveLocationContent(block: (LiveLocationContent) -> T) = asLiveLocationContent() ?.let(block) +inline fun ResendableContent.whenLiveLocationContent(block: (LiveLocationContent) -> T) = + asLiveLocationContent()?.let(block) @PreviewFeature inline fun ResendableContent.asLiveLocationContent(): LiveLocationContent? = this as? LiveLocationContent @@ -2643,7 +2799,8 @@ inline fun ResendableContent.asLiveLocationContent(): LiveLocationContent? = thi inline fun ResendableContent.requireLiveLocationContent(): LiveLocationContent = this as LiveLocationContent @PreviewFeature -inline fun ResendableContent.whenStaticLocationContent(block: (StaticLocationContent) -> T) = asStaticLocationContent() ?.let(block) +inline fun ResendableContent.whenStaticLocationContent(block: (StaticLocationContent) -> T) = + asStaticLocationContent()?.let(block) @PreviewFeature inline fun ResendableContent.asStaticLocationContent(): StaticLocationContent? = this as? StaticLocationContent @@ -2652,7 +2809,7 @@ inline fun ResendableContent.asStaticLocationContent(): StaticLocationContent? = inline fun ResendableContent.requireStaticLocationContent(): StaticLocationContent = this as StaticLocationContent @PreviewFeature -inline fun ResendableContent.whenPollContent(block: (PollContent) -> T) = asPollContent() ?.let(block) +inline fun ResendableContent.whenPollContent(block: (PollContent) -> T) = asPollContent()?.let(block) @PreviewFeature inline fun ResendableContent.asPollContent(): PollContent? = this as? PollContent @@ -2661,7 +2818,7 @@ inline fun ResendableContent.asPollContent(): PollContent? = this as? PollConten inline fun ResendableContent.requirePollContent(): PollContent = this as PollContent @PreviewFeature -inline fun ResendableContent.whenTextContent(block: (TextContent) -> T) = asTextContent() ?.let(block) +inline fun ResendableContent.whenTextContent(block: (TextContent) -> T) = asTextContent()?.let(block) @PreviewFeature inline fun ResendableContent.asTextContent(): TextContent? = this as? TextContent @@ -2670,7 +2827,7 @@ inline fun ResendableContent.asTextContent(): TextContent? = this as? TextConten inline fun ResendableContent.requireTextContent(): TextContent = this as TextContent @PreviewFeature -inline fun ResendableContent.whenVenueContent(block: (VenueContent) -> T) = asVenueContent() ?.let(block) +inline fun ResendableContent.whenVenueContent(block: (VenueContent) -> T) = asVenueContent()?.let(block) @PreviewFeature inline fun ResendableContent.asVenueContent(): VenueContent? = this as? VenueContent @@ -2679,7 +2836,8 @@ inline fun ResendableContent.asVenueContent(): VenueContent? = this as? VenueCon inline fun ResendableContent.requireVenueContent(): VenueContent = this as VenueContent @PreviewFeature -inline fun ResendableContent.whenAudioMediaGroupContent(block: (AudioMediaGroupContent) -> T) = asAudioMediaGroupContent() ?.let(block) +inline fun ResendableContent.whenAudioMediaGroupContent(block: (AudioMediaGroupContent) -> T) = + asAudioMediaGroupContent()?.let(block) @PreviewFeature inline fun ResendableContent.asAudioMediaGroupContent(): AudioMediaGroupContent? = this as? AudioMediaGroupContent @@ -2688,7 +2846,8 @@ inline fun ResendableContent.asAudioMediaGroupContent(): AudioMediaGroupContent? inline fun ResendableContent.requireAudioMediaGroupContent(): AudioMediaGroupContent = this as AudioMediaGroupContent @PreviewFeature -inline fun ResendableContent.whenDocumentMediaGroupContent(block: (DocumentMediaGroupContent) -> T) = asDocumentMediaGroupContent() ?.let(block) +inline fun ResendableContent.whenDocumentMediaGroupContent(block: (DocumentMediaGroupContent) -> T) = + asDocumentMediaGroupContent()?.let(block) @PreviewFeature inline fun ResendableContent.asDocumentMediaGroupContent(): DocumentMediaGroupContent? = @@ -2699,7 +2858,8 @@ inline fun ResendableContent.requireDocumentMediaGroupContent(): DocumentMediaGr this as DocumentMediaGroupContent @PreviewFeature -inline fun ResendableContent.whenMediaCollectionContent(block: (MediaCollectionContent) -> T) = asMediaCollectionContent() ?.let(block) +inline fun ResendableContent.whenMediaCollectionContent(block: (MediaCollectionContent) -> T) = + asMediaCollectionContent()?.let(block) @PreviewFeature inline fun ResendableContent.asMediaCollectionContent(): MediaCollectionContent? = @@ -2710,7 +2870,8 @@ inline fun ResendableContent.requireMediaCollectionContent(): MediaCollectionCon this as MediaCollectionContent @PreviewFeature -inline fun ResendableContent.whenTextedMediaContent(block: (TextedMediaContent) -> T) = asTextedMediaContent() ?.let(block) +inline fun ResendableContent.whenTextedMediaContent(block: (TextedMediaContent) -> T) = + asTextedMediaContent()?.let(block) @PreviewFeature inline fun ResendableContent.asTextedMediaContent(): TextedMediaContent? = @@ -2721,7 +2882,7 @@ inline fun ResendableContent.requireTextedMediaContent(): TextedMediaContent = this as TextedMediaContent @PreviewFeature -inline fun ResendableContent.whenMediaContent(block: (MediaContent) -> T) = asMediaContent() ?.let(block) +inline fun ResendableContent.whenMediaContent(block: (MediaContent) -> T) = asMediaContent()?.let(block) @PreviewFeature inline fun ResendableContent.asMediaContent(): MediaContent? = this as? MediaContent @@ -2730,7 +2891,8 @@ inline fun ResendableContent.asMediaContent(): MediaContent? = this as? MediaCon inline fun ResendableContent.requireMediaContent(): MediaContent = this as MediaContent @PreviewFeature -inline fun ResendableContent.whenMediaGroupContent(block: (MediaGroupContent) -> T) = asMediaGroupContent() ?.let(block) +inline fun ResendableContent.whenMediaGroupContent(block: (MediaGroupContent) -> T) = + asMediaGroupContent()?.let(block) @PreviewFeature inline fun ResendableContent.asMediaGroupContent(): MediaGroupContent? = this as? MediaGroupContent @@ -2739,7 +2901,7 @@ inline fun ResendableContent.asMediaGroupContent(): MediaGroupContent? = this as inline fun ResendableContent.requireMediaGroupContent(): MediaGroupContent = this as MediaGroupContent @PreviewFeature -inline fun ResendableContent.whenMessageContent(block: (MessageContent) -> T) = asMessageContent() ?.let(block) +inline fun ResendableContent.whenMessageContent(block: (MessageContent) -> T) = asMessageContent()?.let(block) @PreviewFeature inline fun ResendableContent.asMessageContent(): MessageContent? = this as? MessageContent @@ -2748,7 +2910,8 @@ inline fun ResendableContent.asMessageContent(): MessageContent? = this as? Mess inline fun ResendableContent.requireMessageContent(): MessageContent = this as MessageContent @PreviewFeature -inline fun ResendableContent.whenVisualMediaGroupContent(block: (VisualMediaGroupContent) -> T) = asVisualMediaGroupContent() ?.let(block) +inline fun ResendableContent.whenVisualMediaGroupContent(block: (VisualMediaGroupContent) -> T) = + asVisualMediaGroupContent()?.let(block) @PreviewFeature inline fun ResendableContent.asVisualMediaGroupContent(): VisualMediaGroupContent? = this as? VisualMediaGroupContent @@ -2757,7 +2920,7 @@ inline fun ResendableContent.asVisualMediaGroupContent(): VisualMediaGroupConten inline fun ResendableContent.requireVisualMediaGroupContent(): VisualMediaGroupContent = this as VisualMediaGroupContent @PreviewFeature -inline fun ResendableContent.whenAnimationContent(block: (AnimationContent) -> T) = asAnimationContent() ?.let(block) +inline fun ResendableContent.whenAnimationContent(block: (AnimationContent) -> T) = asAnimationContent()?.let(block) @PreviewFeature inline fun ResendableContent.asAnimationContent(): AnimationContent? = this as? AnimationContent @@ -2766,7 +2929,7 @@ inline fun ResendableContent.asAnimationContent(): AnimationContent? = this as? inline fun ResendableContent.requireAnimationContent(): AnimationContent = this as AnimationContent @PreviewFeature -inline fun ResendableContent.whenAudioContent(block: (AudioContent) -> T) = asAudioContent() ?.let(block) +inline fun ResendableContent.whenAudioContent(block: (AudioContent) -> T) = asAudioContent()?.let(block) @PreviewFeature inline fun ResendableContent.asAudioContent(): AudioContent? = this as? AudioContent @@ -2775,7 +2938,7 @@ inline fun ResendableContent.asAudioContent(): AudioContent? = this as? AudioCon inline fun ResendableContent.requireAudioContent(): AudioContent = this as AudioContent @PreviewFeature -inline fun ResendableContent.whenDocumentContent(block: (DocumentContent) -> T) = asDocumentContent() ?.let(block) +inline fun ResendableContent.whenDocumentContent(block: (DocumentContent) -> T) = asDocumentContent()?.let(block) @PreviewFeature inline fun ResendableContent.asDocumentContent(): DocumentContent? = this as? DocumentContent @@ -2784,7 +2947,7 @@ inline fun ResendableContent.asDocumentContent(): DocumentContent? = this as? Do inline fun ResendableContent.requireDocumentContent(): DocumentContent = this as DocumentContent @PreviewFeature -inline fun ResendableContent.whenPhotoContent(block: (PhotoContent) -> T) = asPhotoContent() ?.let(block) +inline fun ResendableContent.whenPhotoContent(block: (PhotoContent) -> T) = asPhotoContent()?.let(block) @PreviewFeature inline fun ResendableContent.asPhotoContent(): PhotoContent? = this as? PhotoContent @@ -2793,7 +2956,7 @@ inline fun ResendableContent.asPhotoContent(): PhotoContent? = this as? PhotoCon inline fun ResendableContent.requirePhotoContent(): PhotoContent = this as PhotoContent @PreviewFeature -inline fun ResendableContent.whenStickerContent(block: (StickerContent) -> T) = asStickerContent() ?.let(block) +inline fun ResendableContent.whenStickerContent(block: (StickerContent) -> T) = asStickerContent()?.let(block) @PreviewFeature inline fun ResendableContent.asStickerContent(): StickerContent? = this as? StickerContent @@ -2802,7 +2965,7 @@ inline fun ResendableContent.asStickerContent(): StickerContent? = this as? Stic inline fun ResendableContent.requireStickerContent(): StickerContent = this as StickerContent @PreviewFeature -inline fun ResendableContent.whenVideoContent(block: (VideoContent) -> T) = asVideoContent() ?.let(block) +inline fun ResendableContent.whenVideoContent(block: (VideoContent) -> T) = asVideoContent()?.let(block) @PreviewFeature inline fun ResendableContent.asVideoContent(): VideoContent? = this as? VideoContent @@ -2811,7 +2974,7 @@ inline fun ResendableContent.asVideoContent(): VideoContent? = this as? VideoCon inline fun ResendableContent.requireVideoContent(): VideoContent = this as VideoContent @PreviewFeature -inline fun ResendableContent.whenVideoNoteContent(block: (VideoNoteContent) -> T) = asVideoNoteContent() ?.let(block) +inline fun ResendableContent.whenVideoNoteContent(block: (VideoNoteContent) -> T) = asVideoNoteContent()?.let(block) @PreviewFeature inline fun ResendableContent.asVideoNoteContent(): VideoNoteContent? = this as? VideoNoteContent @@ -2820,7 +2983,7 @@ inline fun ResendableContent.asVideoNoteContent(): VideoNoteContent? = this as? inline fun ResendableContent.requireVideoNoteContent(): VideoNoteContent = this as VideoNoteContent @PreviewFeature -inline fun ResendableContent.whenVoiceContent(block: (VoiceContent) -> T) = asVoiceContent() ?.let(block) +inline fun ResendableContent.whenVoiceContent(block: (VoiceContent) -> T) = asVoiceContent()?.let(block) @PreviewFeature inline fun ResendableContent.asVoiceContent(): VoiceContent? = this as? VoiceContent @@ -2829,7 +2992,7 @@ inline fun ResendableContent.asVoiceContent(): VoiceContent? = this as? VoiceCon inline fun ResendableContent.requireVoiceContent(): VoiceContent = this as VoiceContent @PreviewFeature -inline fun ResendableContent.whenInvoiceContent(block: (InvoiceContent) -> T) = asInvoiceContent() ?.let(block) +inline fun ResendableContent.whenInvoiceContent(block: (InvoiceContent) -> T) = asInvoiceContent()?.let(block) @PreviewFeature inline fun ResendableContent.asInvoiceContent(): InvoiceContent? = this as? InvoiceContent @@ -2838,7 +3001,8 @@ inline fun ResendableContent.asInvoiceContent(): InvoiceContent? = this as? Invo inline fun ResendableContent.requireInvoiceContent(): InvoiceContent = this as InvoiceContent @PreviewFeature -inline fun TextSource.whenMultilevelTextSource(block: (MultilevelTextSource) -> T) = asMultilevelTextSource() ?.let(block) +inline fun TextSource.whenMultilevelTextSource(block: (MultilevelTextSource) -> T) = + asMultilevelTextSource()?.let(block) @PreviewFeature inline fun TextSource.asMultilevelTextSource(): MultilevelTextSource? = this as? MultilevelTextSource @@ -2847,7 +3011,7 @@ inline fun TextSource.asMultilevelTextSource(): MultilevelTextSource? = this as? inline fun TextSource.requireMultilevelTextSource(): MultilevelTextSource = this as MultilevelTextSource @PreviewFeature -inline fun TextSource.whenBoldTextSource(block: (BoldTextSource) -> T) = asBoldTextSource() ?.let(block) +inline fun TextSource.whenBoldTextSource(block: (BoldTextSource) -> T) = asBoldTextSource()?.let(block) @PreviewFeature inline fun TextSource.asBoldTextSource(): BoldTextSource? = this as? BoldTextSource @@ -2856,7 +3020,8 @@ inline fun TextSource.asBoldTextSource(): BoldTextSource? = this as? BoldTextSou inline fun TextSource.requireBoldTextSource(): BoldTextSource = this as BoldTextSource @PreviewFeature -inline fun TextSource.whenBotCommandTextSource(block: (BotCommandTextSource) -> T) = asBotCommandTextSource() ?.let(block) +inline fun TextSource.whenBotCommandTextSource(block: (BotCommandTextSource) -> T) = + asBotCommandTextSource()?.let(block) @PreviewFeature inline fun TextSource.asBotCommandTextSource(): BotCommandTextSource? = this as? BotCommandTextSource @@ -2865,7 +3030,7 @@ inline fun TextSource.asBotCommandTextSource(): BotCommandTextSource? = this as? inline fun TextSource.requireBotCommandTextSource(): BotCommandTextSource = this as BotCommandTextSource @PreviewFeature -inline fun TextSource.whenCashTagTextSource(block: (CashTagTextSource) -> T) = asCashTagTextSource() ?.let(block) +inline fun TextSource.whenCashTagTextSource(block: (CashTagTextSource) -> T) = asCashTagTextSource()?.let(block) @PreviewFeature inline fun TextSource.asCashTagTextSource(): CashTagTextSource? = this as? CashTagTextSource @@ -2874,7 +3039,7 @@ inline fun TextSource.asCashTagTextSource(): CashTagTextSource? = this as? CashT inline fun TextSource.requireCashTagTextSource(): CashTagTextSource = this as CashTagTextSource @PreviewFeature -inline fun TextSource.whenCodeTextSource(block: (CodeTextSource) -> T) = asCodeTextSource() ?.let(block) +inline fun TextSource.whenCodeTextSource(block: (CodeTextSource) -> T) = asCodeTextSource()?.let(block) @PreviewFeature inline fun TextSource.asCodeTextSource(): CodeTextSource? = this as? CodeTextSource @@ -2883,7 +3048,7 @@ inline fun TextSource.asCodeTextSource(): CodeTextSource? = this as? CodeTextSou inline fun TextSource.requireCodeTextSource(): CodeTextSource = this as CodeTextSource @PreviewFeature -inline fun TextSource.whenEMailTextSource(block: (EMailTextSource) -> T) = asEMailTextSource() ?.let(block) +inline fun TextSource.whenEMailTextSource(block: (EMailTextSource) -> T) = asEMailTextSource()?.let(block) @PreviewFeature inline fun TextSource.asEMailTextSource(): EMailTextSource? = this as? EMailTextSource @@ -2892,7 +3057,7 @@ inline fun TextSource.asEMailTextSource(): EMailTextSource? = this as? EMailText inline fun TextSource.requireEMailTextSource(): EMailTextSource = this as EMailTextSource @PreviewFeature -inline fun TextSource.whenHashTagTextSource(block: (HashTagTextSource) -> T) = asHashTagTextSource() ?.let(block) +inline fun TextSource.whenHashTagTextSource(block: (HashTagTextSource) -> T) = asHashTagTextSource()?.let(block) @PreviewFeature inline fun TextSource.asHashTagTextSource(): HashTagTextSource? = this as? HashTagTextSource @@ -2901,7 +3066,7 @@ inline fun TextSource.asHashTagTextSource(): HashTagTextSource? = this as? HashT inline fun TextSource.requireHashTagTextSource(): HashTagTextSource = this as HashTagTextSource @PreviewFeature -inline fun TextSource.whenItalicTextSource(block: (ItalicTextSource) -> T) = asItalicTextSource() ?.let(block) +inline fun TextSource.whenItalicTextSource(block: (ItalicTextSource) -> T) = asItalicTextSource()?.let(block) @PreviewFeature inline fun TextSource.asItalicTextSource(): ItalicTextSource? = this as? ItalicTextSource @@ -2910,7 +3075,7 @@ inline fun TextSource.asItalicTextSource(): ItalicTextSource? = this as? ItalicT inline fun TextSource.requireItalicTextSource(): ItalicTextSource = this as ItalicTextSource @PreviewFeature -inline fun TextSource.whenMentionTextSource(block: (MentionTextSource) -> T) = asMentionTextSource() ?.let(block) +inline fun TextSource.whenMentionTextSource(block: (MentionTextSource) -> T) = asMentionTextSource()?.let(block) @PreviewFeature inline fun TextSource.asMentionTextSource(): MentionTextSource? = this as? MentionTextSource @@ -2919,7 +3084,8 @@ inline fun TextSource.asMentionTextSource(): MentionTextSource? = this as? Menti inline fun TextSource.requireMentionTextSource(): MentionTextSource = this as MentionTextSource @PreviewFeature -inline fun TextSource.whenPhoneNumberTextSource(block: (PhoneNumberTextSource) -> T) = asPhoneNumberTextSource() ?.let(block) +inline fun TextSource.whenPhoneNumberTextSource(block: (PhoneNumberTextSource) -> T) = + asPhoneNumberTextSource()?.let(block) @PreviewFeature inline fun TextSource.asPhoneNumberTextSource(): PhoneNumberTextSource? = this as? PhoneNumberTextSource @@ -2928,7 +3094,7 @@ inline fun TextSource.asPhoneNumberTextSource(): PhoneNumberTextSource? = this a inline fun TextSource.requirePhoneNumberTextSource(): PhoneNumberTextSource = this as PhoneNumberTextSource @PreviewFeature -inline fun TextSource.whenPreTextSource(block: (PreTextSource) -> T) = asPreTextSource() ?.let(block) +inline fun TextSource.whenPreTextSource(block: (PreTextSource) -> T) = asPreTextSource()?.let(block) @PreviewFeature inline fun TextSource.asPreTextSource(): PreTextSource? = this as? PreTextSource @@ -2937,7 +3103,7 @@ inline fun TextSource.asPreTextSource(): PreTextSource? = this as? PreTextSource inline fun TextSource.requirePreTextSource(): PreTextSource = this as PreTextSource @PreviewFeature -inline fun TextSource.whenRegularTextSource(block: (RegularTextSource) -> T) = asRegularTextSource() ?.let(block) +inline fun TextSource.whenRegularTextSource(block: (RegularTextSource) -> T) = asRegularTextSource()?.let(block) @PreviewFeature inline fun TextSource.asRegularTextSource(): RegularTextSource? = this as? RegularTextSource @@ -2946,7 +3112,8 @@ inline fun TextSource.asRegularTextSource(): RegularTextSource? = this as? Regul inline fun TextSource.requireRegularTextSource(): RegularTextSource = this as RegularTextSource @PreviewFeature -inline fun TextSource.whenStrikethroughTextSource(block: (StrikethroughTextSource) -> T) = asStrikethroughTextSource() ?.let(block) +inline fun TextSource.whenStrikethroughTextSource(block: (StrikethroughTextSource) -> T) = + asStrikethroughTextSource()?.let(block) @PreviewFeature inline fun TextSource.asStrikethroughTextSource(): StrikethroughTextSource? = this as? StrikethroughTextSource @@ -2955,7 +3122,7 @@ inline fun TextSource.asStrikethroughTextSource(): StrikethroughTextSource? = th inline fun TextSource.requireStrikethroughTextSource(): StrikethroughTextSource = this as StrikethroughTextSource @PreviewFeature -inline fun TextSource.whenTextLinkTextSource(block: (TextLinkTextSource) -> T) = asTextLinkTextSource() ?.let(block) +inline fun TextSource.whenTextLinkTextSource(block: (TextLinkTextSource) -> T) = asTextLinkTextSource()?.let(block) @PreviewFeature inline fun TextSource.asTextLinkTextSource(): TextLinkTextSource? = this as? TextLinkTextSource @@ -2964,7 +3131,8 @@ inline fun TextSource.asTextLinkTextSource(): TextLinkTextSource? = this as? Tex inline fun TextSource.requireTextLinkTextSource(): TextLinkTextSource = this as TextLinkTextSource @PreviewFeature -inline fun TextSource.whenTextMentionTextSource(block: (TextMentionTextSource) -> T) = asTextMentionTextSource() ?.let(block) +inline fun TextSource.whenTextMentionTextSource(block: (TextMentionTextSource) -> T) = + asTextMentionTextSource()?.let(block) @PreviewFeature inline fun TextSource.asTextMentionTextSource(): TextMentionTextSource? = this as? TextMentionTextSource @@ -2973,7 +3141,7 @@ inline fun TextSource.asTextMentionTextSource(): TextMentionTextSource? = this a inline fun TextSource.requireTextMentionTextSource(): TextMentionTextSource = this as TextMentionTextSource @PreviewFeature -inline fun TextSource.whenURLTextSource(block: (URLTextSource) -> T) = asURLTextSource() ?.let(block) +inline fun TextSource.whenURLTextSource(block: (URLTextSource) -> T) = asURLTextSource()?.let(block) @PreviewFeature inline fun TextSource.asURLTextSource(): URLTextSource? = this as? URLTextSource @@ -2982,7 +3150,8 @@ inline fun TextSource.asURLTextSource(): URLTextSource? = this as? URLTextSource inline fun TextSource.requireURLTextSource(): URLTextSource = this as URLTextSource @PreviewFeature -inline fun TextSource.whenUnderlineTextSource(block: (UnderlineTextSource) -> T) = asUnderlineTextSource() ?.let(block) +inline fun TextSource.whenUnderlineTextSource(block: (UnderlineTextSource) -> T) = + asUnderlineTextSource()?.let(block) @PreviewFeature inline fun TextSource.asUnderlineTextSource(): UnderlineTextSource? = this as? UnderlineTextSource @@ -2991,7 +3160,8 @@ inline fun TextSource.asUnderlineTextSource(): UnderlineTextSource? = this as? U inline fun TextSource.requireUnderlineTextSource(): UnderlineTextSource = this as UnderlineTextSource @PreviewFeature -inline fun DiceAnimationType.whenBasketballDiceAnimationType(block: (BasketballDiceAnimationType) -> T) = asBasketballDiceAnimationType() ?.let(block) +inline fun DiceAnimationType.whenBasketballDiceAnimationType(block: (BasketballDiceAnimationType) -> T) = + asBasketballDiceAnimationType()?.let(block) @PreviewFeature inline fun DiceAnimationType.asBasketballDiceAnimationType(): BasketballDiceAnimationType? = @@ -3002,7 +3172,8 @@ inline fun DiceAnimationType.requireBasketballDiceAnimationType(): BasketballDic this as BasketballDiceAnimationType @PreviewFeature -inline fun DiceAnimationType.whenBowlingDiceAnimationType(block: (BowlingDiceAnimationType) -> T) = asBowlingDiceAnimationType() ?.let(block) +inline fun DiceAnimationType.whenBowlingDiceAnimationType(block: (BowlingDiceAnimationType) -> T) = + asBowlingDiceAnimationType()?.let(block) @PreviewFeature inline fun DiceAnimationType.asBowlingDiceAnimationType(): BowlingDiceAnimationType? = this as? BowlingDiceAnimationType @@ -3012,7 +3183,8 @@ inline fun DiceAnimationType.requireBowlingDiceAnimationType(): BowlingDiceAnima this as BowlingDiceAnimationType @PreviewFeature -inline fun DiceAnimationType.whenCubeDiceAnimationType(block: (CubeDiceAnimationType) -> T) = asCubeDiceAnimationType() ?.let(block) +inline fun DiceAnimationType.whenCubeDiceAnimationType(block: (CubeDiceAnimationType) -> T) = + asCubeDiceAnimationType()?.let(block) @PreviewFeature inline fun DiceAnimationType.asCubeDiceAnimationType(): CubeDiceAnimationType? = this as? CubeDiceAnimationType @@ -3021,7 +3193,8 @@ inline fun DiceAnimationType.asCubeDiceAnimationType(): CubeDiceAnimationType? = inline fun DiceAnimationType.requireCubeDiceAnimationType(): CubeDiceAnimationType = this as CubeDiceAnimationType @PreviewFeature -inline fun DiceAnimationType.whenCustomDiceAnimationType(block: (CustomDiceAnimationType) -> T) = asCustomDiceAnimationType() ?.let(block) +inline fun DiceAnimationType.whenCustomDiceAnimationType(block: (CustomDiceAnimationType) -> T) = + asCustomDiceAnimationType()?.let(block) @PreviewFeature inline fun DiceAnimationType.asCustomDiceAnimationType(): CustomDiceAnimationType? = this as? CustomDiceAnimationType @@ -3030,7 +3203,8 @@ inline fun DiceAnimationType.asCustomDiceAnimationType(): CustomDiceAnimationTyp inline fun DiceAnimationType.requireCustomDiceAnimationType(): CustomDiceAnimationType = this as CustomDiceAnimationType @PreviewFeature -inline fun DiceAnimationType.whenDartsDiceAnimationType(block: (DartsDiceAnimationType) -> T) = asDartsDiceAnimationType() ?.let(block) +inline fun DiceAnimationType.whenDartsDiceAnimationType(block: (DartsDiceAnimationType) -> T) = + asDartsDiceAnimationType()?.let(block) @PreviewFeature inline fun DiceAnimationType.asDartsDiceAnimationType(): DartsDiceAnimationType? = this as? DartsDiceAnimationType @@ -3039,7 +3213,8 @@ inline fun DiceAnimationType.asDartsDiceAnimationType(): DartsDiceAnimationType? inline fun DiceAnimationType.requireDartsDiceAnimationType(): DartsDiceAnimationType = this as DartsDiceAnimationType @PreviewFeature -inline fun DiceAnimationType.whenFootballDiceAnimationType(block: (FootballDiceAnimationType) -> T) = asFootballDiceAnimationType() ?.let(block) +inline fun DiceAnimationType.whenFootballDiceAnimationType(block: (FootballDiceAnimationType) -> T) = + asFootballDiceAnimationType()?.let(block) @PreviewFeature inline fun DiceAnimationType.asFootballDiceAnimationType(): FootballDiceAnimationType? = @@ -3050,7 +3225,8 @@ inline fun DiceAnimationType.requireFootballDiceAnimationType(): FootballDiceAni this as FootballDiceAnimationType @PreviewFeature -inline fun DiceAnimationType.whenSlotMachineDiceAnimationType(block: (SlotMachineDiceAnimationType) -> T) = asSlotMachineDiceAnimationType() ?.let(block) +inline fun DiceAnimationType.whenSlotMachineDiceAnimationType(block: (SlotMachineDiceAnimationType) -> T) = + asSlotMachineDiceAnimationType()?.let(block) @PreviewFeature inline fun DiceAnimationType.asSlotMachineDiceAnimationType(): SlotMachineDiceAnimationType? = @@ -3061,7 +3237,7 @@ inline fun DiceAnimationType.requireSlotMachineDiceAnimationType(): SlotMachineD this as SlotMachineDiceAnimationType @PreviewFeature -inline fun ChatEvent.whenChannelChatCreated(block: (ChannelChatCreated) -> T) = asChannelChatCreated() ?.let(block) +inline fun ChatEvent.whenChannelChatCreated(block: (ChannelChatCreated) -> T) = asChannelChatCreated()?.let(block) @PreviewFeature inline fun ChatEvent.asChannelChatCreated(): ChannelChatCreated? = this as? ChannelChatCreated @@ -3070,7 +3246,7 @@ inline fun ChatEvent.asChannelChatCreated(): ChannelChatCreated? = this as? Chan inline fun ChatEvent.requireChannelChatCreated(): ChannelChatCreated = this as ChannelChatCreated @PreviewFeature -inline fun ChatEvent.whenDeleteChatPhoto(block: (DeleteChatPhoto) -> T) = asDeleteChatPhoto() ?.let(block) +inline fun ChatEvent.whenDeleteChatPhoto(block: (DeleteChatPhoto) -> T) = asDeleteChatPhoto()?.let(block) @PreviewFeature inline fun ChatEvent.asDeleteChatPhoto(): DeleteChatPhoto? = this as? DeleteChatPhoto @@ -3079,7 +3255,7 @@ inline fun ChatEvent.asDeleteChatPhoto(): DeleteChatPhoto? = this as? DeleteChat inline fun ChatEvent.requireDeleteChatPhoto(): DeleteChatPhoto = this as DeleteChatPhoto @PreviewFeature -inline fun ChatEvent.whenGroupChatCreated(block: (GroupChatCreated) -> T) = asGroupChatCreated() ?.let(block) +inline fun ChatEvent.whenGroupChatCreated(block: (GroupChatCreated) -> T) = asGroupChatCreated()?.let(block) @PreviewFeature inline fun ChatEvent.asGroupChatCreated(): GroupChatCreated? = this as? GroupChatCreated @@ -3088,7 +3264,7 @@ inline fun ChatEvent.asGroupChatCreated(): GroupChatCreated? = this as? GroupCha inline fun ChatEvent.requireGroupChatCreated(): GroupChatCreated = this as GroupChatCreated @PreviewFeature -inline fun ChatEvent.whenLeftChatMember(block: (LeftChatMember) -> T) = asLeftChatMember() ?.let(block) +inline fun ChatEvent.whenLeftChatMember(block: (LeftChatMember) -> T) = asLeftChatMember()?.let(block) @PreviewFeature inline fun ChatEvent.asLeftChatMember(): LeftChatMember? = this as? LeftChatMember @@ -3097,7 +3273,8 @@ inline fun ChatEvent.asLeftChatMember(): LeftChatMember? = this as? LeftChatMemb inline fun ChatEvent.requireLeftChatMember(): LeftChatMember = this as LeftChatMember @PreviewFeature -inline fun ChatEvent.whenMessageAutoDeleteTimerChanged(block: (MessageAutoDeleteTimerChanged) -> T) = asMessageAutoDeleteTimerChanged() ?.let(block) +inline fun ChatEvent.whenMessageAutoDeleteTimerChanged(block: (MessageAutoDeleteTimerChanged) -> T) = + asMessageAutoDeleteTimerChanged()?.let(block) @PreviewFeature inline fun ChatEvent.asMessageAutoDeleteTimerChanged(): MessageAutoDeleteTimerChanged? = @@ -3108,7 +3285,7 @@ inline fun ChatEvent.requireMessageAutoDeleteTimerChanged(): MessageAutoDeleteTi this as MessageAutoDeleteTimerChanged @PreviewFeature -inline fun ChatEvent.whenNewChatMembers(block: (NewChatMembers) -> T) = asNewChatMembers() ?.let(block) +inline fun ChatEvent.whenNewChatMembers(block: (NewChatMembers) -> T) = asNewChatMembers()?.let(block) @PreviewFeature inline fun ChatEvent.asNewChatMembers(): NewChatMembers? = this as? NewChatMembers @@ -3117,7 +3294,7 @@ inline fun ChatEvent.asNewChatMembers(): NewChatMembers? = this as? NewChatMembe inline fun ChatEvent.requireNewChatMembers(): NewChatMembers = this as NewChatMembers @PreviewFeature -inline fun ChatEvent.whenNewChatPhoto(block: (NewChatPhoto) -> T) = asNewChatPhoto() ?.let(block) +inline fun ChatEvent.whenNewChatPhoto(block: (NewChatPhoto) -> T) = asNewChatPhoto()?.let(block) @PreviewFeature inline fun ChatEvent.asNewChatPhoto(): NewChatPhoto? = this as? NewChatPhoto @@ -3126,7 +3303,7 @@ inline fun ChatEvent.asNewChatPhoto(): NewChatPhoto? = this as? NewChatPhoto inline fun ChatEvent.requireNewChatPhoto(): NewChatPhoto = this as NewChatPhoto @PreviewFeature -inline fun ChatEvent.whenNewChatTitle(block: (NewChatTitle) -> T) = asNewChatTitle() ?.let(block) +inline fun ChatEvent.whenNewChatTitle(block: (NewChatTitle) -> T) = asNewChatTitle()?.let(block) @PreviewFeature inline fun ChatEvent.asNewChatTitle(): NewChatTitle? = this as? NewChatTitle @@ -3135,7 +3312,7 @@ inline fun ChatEvent.asNewChatTitle(): NewChatTitle? = this as? NewChatTitle inline fun ChatEvent.requireNewChatTitle(): NewChatTitle = this as NewChatTitle @PreviewFeature -inline fun ChatEvent.whenPinnedMessage(block: (PinnedMessage) -> T) = asPinnedMessage() ?.let(block) +inline fun ChatEvent.whenPinnedMessage(block: (PinnedMessage) -> T) = asPinnedMessage()?.let(block) @PreviewFeature inline fun ChatEvent.asPinnedMessage(): PinnedMessage? = this as? PinnedMessage @@ -3144,7 +3321,8 @@ inline fun ChatEvent.asPinnedMessage(): PinnedMessage? = this as? PinnedMessage inline fun ChatEvent.requirePinnedMessage(): PinnedMessage = this as PinnedMessage @PreviewFeature -inline fun ChatEvent.whenSuccessfulPaymentEvent(block: (SuccessfulPaymentEvent) -> T) = asSuccessfulPaymentEvent() ?.let(block) +inline fun ChatEvent.whenSuccessfulPaymentEvent(block: (SuccessfulPaymentEvent) -> T) = + asSuccessfulPaymentEvent()?.let(block) @PreviewFeature inline fun ChatEvent.asSuccessfulPaymentEvent(): SuccessfulPaymentEvent? = this as? SuccessfulPaymentEvent @@ -3153,7 +3331,8 @@ inline fun ChatEvent.asSuccessfulPaymentEvent(): SuccessfulPaymentEvent? = this inline fun ChatEvent.requireSuccessfulPaymentEvent(): SuccessfulPaymentEvent = this as SuccessfulPaymentEvent @PreviewFeature -inline fun ChatEvent.whenProximityAlertTriggered(block: (ProximityAlertTriggered) -> T) = asProximityAlertTriggered() ?.let(block) +inline fun ChatEvent.whenProximityAlertTriggered(block: (ProximityAlertTriggered) -> T) = + asProximityAlertTriggered()?.let(block) @PreviewFeature inline fun ChatEvent.asProximityAlertTriggered(): ProximityAlertTriggered? = this as? ProximityAlertTriggered @@ -3162,7 +3341,8 @@ inline fun ChatEvent.asProximityAlertTriggered(): ProximityAlertTriggered? = thi inline fun ChatEvent.requireProximityAlertTriggered(): ProximityAlertTriggered = this as ProximityAlertTriggered @PreviewFeature -inline fun ChatEvent.whenSupergroupChatCreated(block: (SupergroupChatCreated) -> T) = asSupergroupChatCreated() ?.let(block) +inline fun ChatEvent.whenSupergroupChatCreated(block: (SupergroupChatCreated) -> T) = + asSupergroupChatCreated()?.let(block) @PreviewFeature inline fun ChatEvent.asSupergroupChatCreated(): SupergroupChatCreated? = this as? SupergroupChatCreated @@ -3171,7 +3351,8 @@ inline fun ChatEvent.asSupergroupChatCreated(): SupergroupChatCreated? = this as inline fun ChatEvent.requireSupergroupChatCreated(): SupergroupChatCreated = this as SupergroupChatCreated @PreviewFeature -inline fun ChatEvent.whenMigratedToSupergroup(block: (MigratedToSupergroup) -> T) = asMigratedToSupergroup() ?.let(block) +inline fun ChatEvent.whenMigratedToSupergroup(block: (MigratedToSupergroup) -> T) = + asMigratedToSupergroup()?.let(block) @PreviewFeature inline fun ChatEvent.asMigratedToSupergroup(): MigratedToSupergroup? = this as? MigratedToSupergroup @@ -3180,7 +3361,7 @@ inline fun ChatEvent.asMigratedToSupergroup(): MigratedToSupergroup? = this as? inline fun ChatEvent.requireMigratedToSupergroup(): MigratedToSupergroup = this as MigratedToSupergroup @PreviewFeature -inline fun ChatEvent.whenChannelEvent(block: (ChannelEvent) -> T) = asChannelEvent() ?.let(block) +inline fun ChatEvent.whenChannelEvent(block: (ChannelEvent) -> T) = asChannelEvent()?.let(block) @PreviewFeature inline fun ChatEvent.asChannelEvent(): ChannelEvent? = this as? ChannelEvent @@ -3189,7 +3370,7 @@ inline fun ChatEvent.asChannelEvent(): ChannelEvent? = this as? ChannelEvent inline fun ChatEvent.requireChannelEvent(): ChannelEvent = this as ChannelEvent @PreviewFeature -inline fun ChatEvent.whenPublicChatEvent(block: (PublicChatEvent) -> T) = asPublicChatEvent() ?.let(block) +inline fun ChatEvent.whenPublicChatEvent(block: (PublicChatEvent) -> T) = asPublicChatEvent()?.let(block) @PreviewFeature inline fun ChatEvent.asPublicChatEvent(): PublicChatEvent? = this as? PublicChatEvent @@ -3198,7 +3379,7 @@ inline fun ChatEvent.asPublicChatEvent(): PublicChatEvent? = this as? PublicChat inline fun ChatEvent.requirePublicChatEvent(): PublicChatEvent = this as PublicChatEvent @PreviewFeature -inline fun ChatEvent.whenCommonEvent(block: (CommonEvent) -> T) = asCommonEvent() ?.let(block) +inline fun ChatEvent.whenCommonEvent(block: (CommonEvent) -> T) = asCommonEvent()?.let(block) @PreviewFeature inline fun ChatEvent.asCommonEvent(): CommonEvent? = this as? CommonEvent @@ -3207,7 +3388,7 @@ inline fun ChatEvent.asCommonEvent(): CommonEvent? = this as? CommonEvent inline fun ChatEvent.requireCommonEvent(): CommonEvent = this as CommonEvent @PreviewFeature -inline fun ChatEvent.whenGroupEvent(block: (GroupEvent) -> T) = asGroupEvent() ?.let(block) +inline fun ChatEvent.whenGroupEvent(block: (GroupEvent) -> T) = asGroupEvent()?.let(block) @PreviewFeature inline fun ChatEvent.asGroupEvent(): GroupEvent? = this as? GroupEvent @@ -3216,7 +3397,7 @@ inline fun ChatEvent.asGroupEvent(): GroupEvent? = this as? GroupEvent inline fun ChatEvent.requireGroupEvent(): GroupEvent = this as GroupEvent @PreviewFeature -inline fun ChatEvent.whenSupergroupEvent(block: (SupergroupEvent) -> T) = asSupergroupEvent() ?.let(block) +inline fun ChatEvent.whenSupergroupEvent(block: (SupergroupEvent) -> T) = asSupergroupEvent()?.let(block) @PreviewFeature inline fun ChatEvent.asSupergroupEvent(): SupergroupEvent? = this as? SupergroupEvent @@ -3225,7 +3406,7 @@ inline fun ChatEvent.asSupergroupEvent(): SupergroupEvent? = this as? Supergroup inline fun ChatEvent.requireSupergroupEvent(): SupergroupEvent = this as SupergroupEvent @PreviewFeature -inline fun ChatEvent.whenVideoChatEvent(block: (VideoChatEvent) -> T) = asVideoChatEvent() ?.let(block) +inline fun ChatEvent.whenVideoChatEvent(block: (VideoChatEvent) -> T) = asVideoChatEvent()?.let(block) @PreviewFeature inline fun ChatEvent.asVideoChatEvent(): VideoChatEvent? = this as? VideoChatEvent @@ -3234,7 +3415,7 @@ inline fun ChatEvent.asVideoChatEvent(): VideoChatEvent? = this as? VideoChatEve inline fun ChatEvent.requireVideoChatEvent(): VideoChatEvent = this as VideoChatEvent @PreviewFeature -inline fun ChatEvent.whenVideoChatEnded(block: (VideoChatEnded) -> T) = asVideoChatEnded() ?.let(block) +inline fun ChatEvent.whenVideoChatEnded(block: (VideoChatEnded) -> T) = asVideoChatEnded()?.let(block) @PreviewFeature inline fun ChatEvent.asVideoChatEnded(): VideoChatEnded? = this as? VideoChatEnded @@ -3243,7 +3424,8 @@ inline fun ChatEvent.asVideoChatEnded(): VideoChatEnded? = this as? VideoChatEnd inline fun ChatEvent.requireVideoChatEnded(): VideoChatEnded = this as VideoChatEnded @PreviewFeature -inline fun ChatEvent.whenVideoChatParticipantsInvited(block: (VideoChatParticipantsInvited) -> T) = asVideoChatParticipantsInvited() ?.let(block) +inline fun ChatEvent.whenVideoChatParticipantsInvited(block: (VideoChatParticipantsInvited) -> T) = + asVideoChatParticipantsInvited()?.let(block) @PreviewFeature inline fun ChatEvent.asVideoChatParticipantsInvited(): VideoChatParticipantsInvited? = @@ -3254,7 +3436,7 @@ inline fun ChatEvent.requireVideoChatParticipantsInvited(): VideoChatParticipant this as VideoChatParticipantsInvited @PreviewFeature -inline fun ChatEvent.whenVideoChatStarted(block: (VideoChatStarted) -> T) = asVideoChatStarted() ?.let(block) +inline fun ChatEvent.whenVideoChatStarted(block: (VideoChatStarted) -> T) = asVideoChatStarted()?.let(block) @PreviewFeature inline fun ChatEvent.asVideoChatStarted(): VideoChatStarted? = this as? VideoChatStarted @@ -3263,7 +3445,7 @@ inline fun ChatEvent.asVideoChatStarted(): VideoChatStarted? = this as? VideoCha inline fun ChatEvent.requireVideoChatStarted(): VideoChatStarted = this as VideoChatStarted @PreviewFeature -inline fun ChatEvent.whenVideoChatScheduled(block: (VideoChatScheduled) -> T) = asVideoChatScheduled() ?.let(block) +inline fun ChatEvent.whenVideoChatScheduled(block: (VideoChatScheduled) -> T) = asVideoChatScheduled()?.let(block) @PreviewFeature inline fun ChatEvent.asVideoChatScheduled(): VideoChatScheduled? = this as? VideoChatScheduled @@ -3272,7 +3454,7 @@ inline fun ChatEvent.asVideoChatScheduled(): VideoChatScheduled? = this as? Vide inline fun ChatEvent.requireVideoChatScheduled(): VideoChatScheduled = this as VideoChatScheduled @PreviewFeature -inline fun ChatEvent.whenUserLoggedIn(block: (UserLoggedIn) -> T) = asUserLoggedIn() ?.let(block) +inline fun ChatEvent.whenUserLoggedIn(block: (UserLoggedIn) -> T) = asUserLoggedIn()?.let(block) @PreviewFeature inline fun ChatEvent.asUserLoggedIn(): UserLoggedIn? = this as? UserLoggedIn @@ -3281,7 +3463,7 @@ inline fun ChatEvent.asUserLoggedIn(): UserLoggedIn? = this as? UserLoggedIn inline fun ChatEvent.requireUserLoggedIn(): UserLoggedIn = this as UserLoggedIn @PreviewFeature -inline fun CommonSendInvoiceData.whenSendInvoice(block: (SendInvoice) -> T) = asSendInvoice() ?.let(block) +inline fun CommonSendInvoiceData.whenSendInvoice(block: (SendInvoice) -> T) = asSendInvoice()?.let(block) @PreviewFeature inline fun CommonSendInvoiceData.asSendInvoice(): SendInvoice? = this as? SendInvoice @@ -3290,7 +3472,8 @@ inline fun CommonSendInvoiceData.asSendInvoice(): SendInvoice? = this as? SendIn inline fun CommonSendInvoiceData.requireSendInvoice(): SendInvoice = this as SendInvoice @PreviewFeature -inline fun CommonSendInvoiceData.whenCreateInvoiceLink(block: (CreateInvoiceLink) -> T) = asCreateInvoiceLink() ?.let(block) +inline fun CommonSendInvoiceData.whenCreateInvoiceLink(block: (CreateInvoiceLink) -> T) = + asCreateInvoiceLink()?.let(block) @PreviewFeature inline fun CommonSendInvoiceData.asCreateInvoiceLink(): CreateInvoiceLink? = this as? CreateInvoiceLink @@ -3299,7 +3482,8 @@ inline fun CommonSendInvoiceData.asCreateInvoiceLink(): CreateInvoiceLink? = thi inline fun CommonSendInvoiceData.requireCreateInvoiceLink(): CreateInvoiceLink = this as CreateInvoiceLink @PreviewFeature -inline fun CommonSendInvoiceData.whenInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T) = asInputInvoiceMessageContent() ?.let(block) +inline fun CommonSendInvoiceData.whenInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T) = + asInputInvoiceMessageContent()?.let(block) @PreviewFeature inline fun CommonSendInvoiceData.asInputInvoiceMessageContent(): InputInvoiceMessageContent? = @@ -3310,7 +3494,7 @@ inline fun CommonSendInvoiceData.requireInputInvoiceMessageContent(): InputInvoi this as InputInvoiceMessageContent @PreviewFeature -inline fun Any.whenFromUser(block: (FromUser) -> T) = asFromUser() ?.let(block) +inline fun Any.whenFromUser(block: (FromUser) -> T) = asFromUser()?.let(block) @PreviewFeature inline fun Any.asFromUser(): FromUser? = this as? FromUser @@ -3319,7 +3503,7 @@ inline fun Any.asFromUser(): FromUser? = this as? FromUser inline fun Any.requireFromUser(): FromUser = this as FromUser @PreviewFeature -inline fun Any.whenWithUser(block: (WithUser) -> T) = asWithUser() ?.let(block) +inline fun Any.whenWithUser(block: (WithUser) -> T) = asWithUser()?.let(block) @PreviewFeature inline fun Any.asWithUser(): WithUser? = this as? WithUser @@ -3328,7 +3512,8 @@ inline fun Any.asWithUser(): WithUser? = this as? WithUser inline fun Any.requireWithUser(): WithUser = this as WithUser @PreviewFeature -inline fun Any.whenWithOptionalLanguageCode(block: (WithOptionalLanguageCode) -> T) = asWithOptionalLanguageCode() ?.let(block) +inline fun Any.whenWithOptionalLanguageCode(block: (WithOptionalLanguageCode) -> T) = + asWithOptionalLanguageCode()?.let(block) @PreviewFeature inline fun Any.asWithOptionalLanguageCode(): WithOptionalLanguageCode? = this as? WithOptionalLanguageCode @@ -3337,7 +3522,7 @@ inline fun Any.asWithOptionalLanguageCode(): WithOptionalLanguageCode? = this as inline fun Any.requireWithOptionalLanguageCode(): WithOptionalLanguageCode = this as WithOptionalLanguageCode @PreviewFeature -inline fun Location.whenStaticLocation(block: (StaticLocation) -> T) = asStaticLocation() ?.let(block) +inline fun Location.whenStaticLocation(block: (StaticLocation) -> T) = asStaticLocation()?.let(block) @PreviewFeature inline fun Location.asStaticLocation(): StaticLocation? = this as? StaticLocation @@ -3346,7 +3531,7 @@ inline fun Location.asStaticLocation(): StaticLocation? = this as? StaticLocatio inline fun Location.requireStaticLocation(): StaticLocation = this as StaticLocation @PreviewFeature -inline fun Location.whenLiveLocation(block: (LiveLocation) -> T) = asLiveLocation() ?.let(block) +inline fun Location.whenLiveLocation(block: (LiveLocation) -> T) = asLiveLocation()?.let(block) @PreviewFeature inline fun Location.asLiveLocation(): LiveLocation? = this as? LiveLocation @@ -3355,7 +3540,7 @@ inline fun Location.asLiveLocation(): LiveLocation? = this as? LiveLocation inline fun Location.requireLiveLocation(): LiveLocation = this as LiveLocation @PreviewFeature -inline fun ChatInviteLink.whenPrimaryInviteLink(block: (PrimaryInviteLink) -> T) = asPrimaryInviteLink() ?.let(block) +inline fun ChatInviteLink.whenPrimaryInviteLink(block: (PrimaryInviteLink) -> T) = asPrimaryInviteLink()?.let(block) @PreviewFeature inline fun ChatInviteLink.asPrimaryInviteLink(): PrimaryInviteLink? = this as? PrimaryInviteLink @@ -3364,7 +3549,8 @@ inline fun ChatInviteLink.asPrimaryInviteLink(): PrimaryInviteLink? = this as? P inline fun ChatInviteLink.requirePrimaryInviteLink(): PrimaryInviteLink = this as PrimaryInviteLink @PreviewFeature -inline fun ChatInviteLink.whenSecondaryChatInviteLink(block: (SecondaryChatInviteLink) -> T) = asSecondaryChatInviteLink() ?.let(block) +inline fun ChatInviteLink.whenSecondaryChatInviteLink(block: (SecondaryChatInviteLink) -> T) = + asSecondaryChatInviteLink()?.let(block) @PreviewFeature inline fun ChatInviteLink.asSecondaryChatInviteLink(): SecondaryChatInviteLink? = this as? SecondaryChatInviteLink @@ -3373,25 +3559,32 @@ inline fun ChatInviteLink.asSecondaryChatInviteLink(): SecondaryChatInviteLink? inline fun ChatInviteLink.requireSecondaryChatInviteLink(): SecondaryChatInviteLink = this as SecondaryChatInviteLink @PreviewFeature -inline fun ChatInviteLink.whenChatInviteLinkWithJoinRequest(block: (ChatInviteLinkWithJoinRequest) -> T) = asChatInviteLinkWithJoinRequest() ?.let(block) +inline fun ChatInviteLink.whenChatInviteLinkWithJoinRequest(block: (ChatInviteLinkWithJoinRequest) -> T) = + asChatInviteLinkWithJoinRequest()?.let(block) @PreviewFeature -inline fun ChatInviteLink.asChatInviteLinkWithJoinRequest(): ChatInviteLinkWithJoinRequest? = this as? ChatInviteLinkWithJoinRequest +inline fun ChatInviteLink.asChatInviteLinkWithJoinRequest(): ChatInviteLinkWithJoinRequest? = + this as? ChatInviteLinkWithJoinRequest @PreviewFeature -inline fun ChatInviteLink.requireChatInviteLinkWithJoinRequest(): ChatInviteLinkWithJoinRequest = this as ChatInviteLinkWithJoinRequest +inline fun ChatInviteLink.requireChatInviteLinkWithJoinRequest(): ChatInviteLinkWithJoinRequest = + this as ChatInviteLinkWithJoinRequest @PreviewFeature -inline fun ChatInviteLink.whenChatInviteLinkWithLimitedMembers(block: (ChatInviteLinkWithLimitedMembers) -> T) = asChatInviteLinkWithLimitedMembers() ?.let(block) +inline fun ChatInviteLink.whenChatInviteLinkWithLimitedMembers(block: (ChatInviteLinkWithLimitedMembers) -> T) = + asChatInviteLinkWithLimitedMembers()?.let(block) @PreviewFeature -inline fun ChatInviteLink.asChatInviteLinkWithLimitedMembers(): ChatInviteLinkWithLimitedMembers? = this as? ChatInviteLinkWithLimitedMembers +inline fun ChatInviteLink.asChatInviteLinkWithLimitedMembers(): ChatInviteLinkWithLimitedMembers? = + this as? ChatInviteLinkWithLimitedMembers @PreviewFeature -inline fun ChatInviteLink.requireChatInviteLinkWithLimitedMembers(): ChatInviteLinkWithLimitedMembers = this as ChatInviteLinkWithLimitedMembers +inline fun ChatInviteLink.requireChatInviteLinkWithLimitedMembers(): ChatInviteLinkWithLimitedMembers = + this as ChatInviteLinkWithLimitedMembers @PreviewFeature -inline fun ChatInviteLink.whenChatInviteLinkUnlimited(block: (ChatInviteLinkUnlimited) -> T) = asChatInviteLinkUnlimited() ?.let(block) +inline fun ChatInviteLink.whenChatInviteLinkUnlimited(block: (ChatInviteLinkUnlimited) -> T) = + asChatInviteLinkUnlimited()?.let(block) @PreviewFeature inline fun ChatInviteLink.asChatInviteLinkUnlimited(): ChatInviteLinkUnlimited? = this as? ChatInviteLinkUnlimited @@ -3400,34 +3593,37 @@ inline fun ChatInviteLink.asChatInviteLinkUnlimited(): ChatInviteLinkUnlimited? inline fun ChatInviteLink.requireChatInviteLinkUnlimited(): ChatInviteLinkUnlimited = this as ChatInviteLinkUnlimited @PreviewFeature -inline fun ForwardInfo.whenAnonymousForwardInfo(block: (AnonymousForwardInfo) -> T) = asAnonymousForwardInfo() ?.let(block) +inline fun ForwardInfo.whenAnonymousForwardInfo(block: (ForwardInfo.ByAnonymous) -> T) = + asAnonymousForwardInfo()?.let(block) @PreviewFeature -inline fun ForwardInfo.asAnonymousForwardInfo(): AnonymousForwardInfo? = this as? AnonymousForwardInfo +inline fun ForwardInfo.asAnonymousForwardInfo(): ForwardInfo.ByAnonymous? = this as? ForwardInfo.ByAnonymous @PreviewFeature -inline fun ForwardInfo.requireAnonymousForwardInfo(): AnonymousForwardInfo = this as AnonymousForwardInfo +inline fun ForwardInfo.requireAnonymousForwardInfo(): ForwardInfo.ByAnonymous = this as ForwardInfo.ByAnonymous @PreviewFeature -inline fun ForwardInfo.whenUserForwardInfo(block: (UserForwardInfo) -> T) = asUserForwardInfo() ?.let(block) +inline fun ForwardInfo.whenUserForwardInfo(block: (ForwardInfo.ByUser) -> T) = asUserForwardInfo()?.let(block) @PreviewFeature -inline fun ForwardInfo.asUserForwardInfo(): UserForwardInfo? = this as? UserForwardInfo +inline fun ForwardInfo.asUserForwardInfo(): ForwardInfo.ByUser? = this as? ForwardInfo.ByUser @PreviewFeature -inline fun ForwardInfo.requireUserForwardInfo(): UserForwardInfo = this as UserForwardInfo +inline fun ForwardInfo.requireUserForwardInfo(): ForwardInfo.ByUser = this as ForwardInfo.ByUser @PreviewFeature -inline fun ForwardInfo.whenForwardFromPublicChatInfo(block: (ForwardFromPublicChatInfo) -> T) = asForwardFromPublicChatInfo() ?.let(block) +inline fun ForwardInfo.whenForwardFromPublicChatInfo(block: (ForwardInfo.PublicChat) -> T) = + asForwardFromPublicChatInfo()?.let(block) @PreviewFeature -inline fun ForwardInfo.asForwardFromPublicChatInfo(): ForwardFromPublicChatInfo? = this as? ForwardFromPublicChatInfo +inline fun ForwardInfo.asForwardFromPublicChatInfo(): ForwardInfo.PublicChat? = this as? ForwardInfo.PublicChat @PreviewFeature -inline fun ForwardInfo.requireForwardFromPublicChatInfo(): ForwardFromPublicChatInfo = this as ForwardFromPublicChatInfo +inline fun ForwardInfo.requireForwardFromPublicChatInfo(): ForwardInfo.PublicChat = this as ForwardInfo.PublicChat @PreviewFeature -inline fun ForwardInfo.whenForwardFromChannelInfo(block: (ForwardFromChannelInfo) -> T) = asForwardFromChannelInfo() ?.let(block) +inline fun ForwardInfo.whenForwardFromChannelInfo(block: (ForwardFromChannelInfo) -> T) = + asForwardFromChannelInfo()?.let(block) @PreviewFeature inline fun ForwardInfo.asForwardFromChannelInfo(): ForwardFromChannelInfo? = this as? ForwardFromChannelInfo @@ -3436,7 +3632,8 @@ inline fun ForwardInfo.asForwardFromChannelInfo(): ForwardFromChannelInfo? = thi inline fun ForwardInfo.requireForwardFromChannelInfo(): ForwardFromChannelInfo = this as ForwardFromChannelInfo @PreviewFeature -inline fun ForwardInfo.whenForwardFromSupergroupInfo(block: (ForwardFromSupergroupInfo) -> T) = asForwardFromSupergroupInfo() ?.let(block) +inline fun ForwardInfo.whenForwardFromSupergroupInfo(block: (ForwardFromSupergroupInfo) -> T) = + asForwardFromSupergroupInfo()?.let(block) @PreviewFeature inline fun ForwardInfo.asForwardFromSupergroupInfo(): ForwardFromSupergroupInfo? = this as? ForwardFromSupergroupInfo @@ -3445,7 +3642,7 @@ inline fun ForwardInfo.asForwardFromSupergroupInfo(): ForwardFromSupergroupInfo? inline fun ForwardInfo.requireForwardFromSupergroupInfo(): ForwardFromSupergroupInfo = this as ForwardFromSupergroupInfo @PreviewFeature -inline fun MessageContent.whenTextedInput(block: (TextedInput) -> T) = asTextedInput() ?.let(block) +inline fun MessageContent.whenTextedInput(block: (TextedInput) -> T) = asTextedInput()?.let(block) @PreviewFeature inline fun MessageContent.asTextedInput(): TextedInput? = this as? TextedInput @@ -3454,34 +3651,43 @@ inline fun MessageContent.asTextedInput(): TextedInput? = this as? TextedInput inline fun MessageContent.requireTextedInput(): TextedInput = this as TextedInput @PreviewFeature -inline fun ScheduledCloseInfo.whenExactScheduledCloseInfo(block: (ExactScheduledCloseInfo) -> T) = asExactScheduledCloseInfo() ?.let(block) +inline fun ScheduledCloseInfo.whenExactScheduledCloseInfo(block: (ExactScheduledCloseInfo) -> T) = + asExactScheduledCloseInfo()?.let(block) @PreviewFeature inline fun ScheduledCloseInfo.asExactScheduledCloseInfo(): ExactScheduledCloseInfo? = this as? ExactScheduledCloseInfo @PreviewFeature -inline fun ScheduledCloseInfo.requireExactScheduledCloseInfo(): ExactScheduledCloseInfo = this as ExactScheduledCloseInfo +inline fun ScheduledCloseInfo.requireExactScheduledCloseInfo(): ExactScheduledCloseInfo = + this as ExactScheduledCloseInfo @PreviewFeature -inline fun ScheduledCloseInfo.whenApproximateScheduledCloseInfo(block: (ApproximateScheduledCloseInfo) -> T) = asApproximateScheduledCloseInfo() ?.let(block) +inline fun ScheduledCloseInfo.whenApproximateScheduledCloseInfo(block: (ApproximateScheduledCloseInfo) -> T) = + asApproximateScheduledCloseInfo()?.let(block) @PreviewFeature -inline fun ScheduledCloseInfo.asApproximateScheduledCloseInfo(): ApproximateScheduledCloseInfo? = this as? ApproximateScheduledCloseInfo +inline fun ScheduledCloseInfo.asApproximateScheduledCloseInfo(): ApproximateScheduledCloseInfo? = + this as? ApproximateScheduledCloseInfo @PreviewFeature -inline fun ScheduledCloseInfo.requireApproximateScheduledCloseInfo(): ApproximateScheduledCloseInfo = this as ApproximateScheduledCloseInfo +inline fun ScheduledCloseInfo.requireApproximateScheduledCloseInfo(): ApproximateScheduledCloseInfo = + this as ApproximateScheduledCloseInfo @PreviewFeature -inline fun ChosenInlineResult.whenLocationChosenInlineResult(block: (LocationChosenInlineResult) -> T) = asLocationChosenInlineResult() ?.let(block) +inline fun ChosenInlineResult.whenLocationChosenInlineResult(block: (LocationChosenInlineResult) -> T) = + asLocationChosenInlineResult()?.let(block) @PreviewFeature -inline fun ChosenInlineResult.asLocationChosenInlineResult(): LocationChosenInlineResult? = this as? LocationChosenInlineResult +inline fun ChosenInlineResult.asLocationChosenInlineResult(): LocationChosenInlineResult? = + this as? LocationChosenInlineResult @PreviewFeature -inline fun ChosenInlineResult.requireLocationChosenInlineResult(): LocationChosenInlineResult = this as LocationChosenInlineResult +inline fun ChosenInlineResult.requireLocationChosenInlineResult(): LocationChosenInlineResult = + this as LocationChosenInlineResult @PreviewFeature -inline fun ChosenInlineResult.whenBaseChosenInlineResult(block: (BaseChosenInlineResult) -> T) = asBaseChosenInlineResult() ?.let(block) +inline fun ChosenInlineResult.whenBaseChosenInlineResult(block: (BaseChosenInlineResult) -> T) = + asBaseChosenInlineResult()?.let(block) @PreviewFeature inline fun ChosenInlineResult.asBaseChosenInlineResult(): BaseChosenInlineResult? = this as? BaseChosenInlineResult diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt index 125b1da116..c7c17929cb 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt @@ -1,3478 +1,4461 @@ -@file:Suppress("NOTHING_TO_INLINE", "unused", "UNCHECKED_CAST") +@file:Suppress( + "unused", + "RemoveRedundantQualifierName", + "RedundantVisibilityModifier", + "NOTHING_TO_INLINE", + "UNCHECKED_CAST", + "OPT_IN_USAGE", +) package dev.inmo.tgbotapi.extensions.utils -import dev.inmo.tgbotapi.abstracts.* +import dev.inmo.tgbotapi.abstracts.CommonSendInvoiceData +import dev.inmo.tgbotapi.abstracts.FromUser +import dev.inmo.tgbotapi.abstracts.WithUser import dev.inmo.tgbotapi.requests.send.payments.CreateInvoiceLink import dev.inmo.tgbotapi.requests.send.payments.SendInvoice -import dev.inmo.tgbotapi.types.* -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.* -import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.* -import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.* -import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.* -import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.* -import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.* -import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.* -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.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.* +import dev.inmo.tgbotapi.types.ChatInviteLink +import dev.inmo.tgbotapi.types.ChatInviteLinkUnlimited +import dev.inmo.tgbotapi.types.ChatInviteLinkWithJoinRequest +import dev.inmo.tgbotapi.types.ChatInviteLinkWithLimitedMembers +import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.BaseChosenInlineResult +import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.ChosenInlineResult +import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.LocationChosenInlineResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultArticle +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultAudioCachedImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultAudioImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultContact +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultDocumentCachedImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultDocumentImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGame +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGifCachedImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGifImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultLocation +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultMpeg4GifCachedImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultMpeg4GifImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultPhotoCachedImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultPhotoImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultStickerCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVenue +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVideoCachedImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVideoImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVoiceCachedImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVoiceImpl +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.DescribedInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.FileInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.InlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.OptionallyTitledInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.SizedInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbSizedInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbedInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbedWithMimeTypeInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.TitledInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.UrlInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.WithInputMessageContentInlineQueryResult +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudio +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCommon +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocument +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCommon +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGif +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCommon +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4Gif +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCommon +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhoto +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCommon +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideo +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCommon +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoice +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCached +import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCommon +import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputContactMessageContent +import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputInvoiceMessageContent +import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputLocationMessageContent +import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent +import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputTextMessageContent +import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputVenueMessageContent +import dev.inmo.tgbotapi.types.InlineQueries.query.BaseInlineQuery +import dev.inmo.tgbotapi.types.InlineQueries.query.InlineQuery +import dev.inmo.tgbotapi.types.InlineQueries.query.LocationInlineQuery +import dev.inmo.tgbotapi.types.PrimaryInviteLink +import dev.inmo.tgbotapi.types.SecondaryChatInviteLink +import dev.inmo.tgbotapi.types.actions.BotAction +import dev.inmo.tgbotapi.types.actions.ChooseStickerAction +import dev.inmo.tgbotapi.types.actions.CustomBotAction +import dev.inmo.tgbotapi.types.actions.FindLocationAction +import dev.inmo.tgbotapi.types.actions.RecordVideoAction +import dev.inmo.tgbotapi.types.actions.RecordVideoNoteAction +import dev.inmo.tgbotapi.types.actions.RecordVoiceAction +import dev.inmo.tgbotapi.types.actions.TypingAction +import dev.inmo.tgbotapi.types.actions.UploadDocumentAction +import dev.inmo.tgbotapi.types.actions.UploadPhotoAction +import dev.inmo.tgbotapi.types.actions.UploadVideoAction +import dev.inmo.tgbotapi.types.actions.UploadVideoNoteAction +import dev.inmo.tgbotapi.types.actions.UploadVoiceAction +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackGameInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.LoginURLInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.PayInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryCurrentChatInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.URLInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.UnknownInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.WebAppInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.buttons.ReplyForce +import dev.inmo.tgbotapi.types.buttons.ReplyKeyboardMarkup +import dev.inmo.tgbotapi.types.buttons.ReplyKeyboardRemove +import dev.inmo.tgbotapi.types.chat.AbleToAddInAttachmentMenuChat import dev.inmo.tgbotapi.types.chat.Bot +import dev.inmo.tgbotapi.types.chat.ChannelChat +import dev.inmo.tgbotapi.types.chat.ChannelChatImpl +import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.chat.ChatJoinRequest 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.ExtendedChannelChat +import dev.inmo.tgbotapi.types.chat.ExtendedChannelChatImpl +import dev.inmo.tgbotapi.types.chat.ExtendedChat +import dev.inmo.tgbotapi.types.chat.ExtendedGroupChat +import dev.inmo.tgbotapi.types.chat.ExtendedGroupChatImpl +import dev.inmo.tgbotapi.types.chat.ExtendedPrivateChat +import dev.inmo.tgbotapi.types.chat.ExtendedPrivateChatImpl +import dev.inmo.tgbotapi.types.chat.ExtendedPublicChat +import dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChat +import dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChatImpl +import dev.inmo.tgbotapi.types.chat.GroupChat +import dev.inmo.tgbotapi.types.chat.GroupChatImpl +import dev.inmo.tgbotapi.types.chat.PossiblyPremiumChat +import dev.inmo.tgbotapi.types.chat.PrivateChat +import dev.inmo.tgbotapi.types.chat.PrivateChatImpl +import dev.inmo.tgbotapi.types.chat.PublicChat +import dev.inmo.tgbotapi.types.chat.SuperPublicChat +import dev.inmo.tgbotapi.types.chat.SupergroupChat +import dev.inmo.tgbotapi.types.chat.SupergroupChatImpl +import dev.inmo.tgbotapi.types.chat.UnknownChatType +import dev.inmo.tgbotapi.types.chat.UnknownExtendedChat import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.chat.UsernameChat import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl import dev.inmo.tgbotapi.types.chat.member.BannedChatMember import dev.inmo.tgbotapi.types.chat.member.ChatMember +import dev.inmo.tgbotapi.types.chat.member.KickedChatMember +import dev.inmo.tgbotapi.types.chat.member.LeftChatMember +import dev.inmo.tgbotapi.types.chat.member.LeftChatMemberImpl import dev.inmo.tgbotapi.types.chat.member.MemberChatMember +import dev.inmo.tgbotapi.types.chat.member.MemberChatMemberImpl +import dev.inmo.tgbotapi.types.chat.member.OwnerChatMember +import dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember 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.dice.BasketballDiceAnimationType +import dev.inmo.tgbotapi.types.dice.BowlingDiceAnimationType +import dev.inmo.tgbotapi.types.dice.CubeDiceAnimationType +import dev.inmo.tgbotapi.types.dice.CustomDiceAnimationType +import dev.inmo.tgbotapi.types.dice.DartsDiceAnimationType +import dev.inmo.tgbotapi.types.dice.DiceAnimationType +import dev.inmo.tgbotapi.types.dice.FootballDiceAnimationType +import dev.inmo.tgbotapi.types.dice.SlotMachineDiceAnimationType +import dev.inmo.tgbotapi.types.files.AnimatedSticker +import dev.inmo.tgbotapi.types.files.AnimationFile +import dev.inmo.tgbotapi.types.files.AudioFile +import dev.inmo.tgbotapi.types.files.DocumentFile +import dev.inmo.tgbotapi.types.files.File +import dev.inmo.tgbotapi.types.files.MimedMediaFile +import dev.inmo.tgbotapi.types.files.PassportFile +import dev.inmo.tgbotapi.types.files.PathedFile +import dev.inmo.tgbotapi.types.files.PhotoSize +import dev.inmo.tgbotapi.types.files.PlayableMediaFile +import dev.inmo.tgbotapi.types.files.SimpleSticker +import dev.inmo.tgbotapi.types.files.SizedMediaFile 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.* -import dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMember -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.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.files.ThumbedMediaFile +import dev.inmo.tgbotapi.types.files.VideoFile +import dev.inmo.tgbotapi.types.files.VideoNoteFile +import dev.inmo.tgbotapi.types.files.VideoSticker +import dev.inmo.tgbotapi.types.files.VoiceFile +import dev.inmo.tgbotapi.types.location.LiveLocation +import dev.inmo.tgbotapi.types.location.Location +import dev.inmo.tgbotapi.types.location.StaticLocation +import dev.inmo.tgbotapi.types.media.AudioMediaGroupMemberTelegramMedia +import dev.inmo.tgbotapi.types.media.DocumentMediaGroupMemberTelegramMedia +import dev.inmo.tgbotapi.types.media.DuratedTelegramMedia +import dev.inmo.tgbotapi.types.media.MediaGroupMemberTelegramMedia +import dev.inmo.tgbotapi.types.media.SizedTelegramMedia +import dev.inmo.tgbotapi.types.media.TelegramMedia +import dev.inmo.tgbotapi.types.media.TelegramMediaAnimation +import dev.inmo.tgbotapi.types.media.TelegramMediaAudio +import dev.inmo.tgbotapi.types.media.TelegramMediaDocument +import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto +import dev.inmo.tgbotapi.types.media.TelegramMediaVideo +import dev.inmo.tgbotapi.types.media.ThumbedTelegramMedia +import dev.inmo.tgbotapi.types.media.TitledTelegramMedia +import dev.inmo.tgbotapi.types.media.VisualMediaGroupMemberTelegramMedia +import dev.inmo.tgbotapi.types.message.AnonymousGroupContentMessageImpl +import dev.inmo.tgbotapi.types.message.ChannelContentMessageImpl +import dev.inmo.tgbotapi.types.message.ChannelEventMessage +import dev.inmo.tgbotapi.types.message.ChannelMediaGroupMessage +import dev.inmo.tgbotapi.types.message.ChatEvents.ChannelChatCreated +import dev.inmo.tgbotapi.types.message.ChatEvents.DeleteChatPhoto +import dev.inmo.tgbotapi.types.message.ChatEvents.GroupChatCreated +import dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMemberEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.MessageAutoDeleteTimerChanged +import dev.inmo.tgbotapi.types.message.ChatEvents.MigratedToSupergroup +import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatMembers +import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatPhoto +import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatTitle +import dev.inmo.tgbotapi.types.message.ChatEvents.PinnedMessage +import dev.inmo.tgbotapi.types.message.ChatEvents.ProximityAlertTriggered +import dev.inmo.tgbotapi.types.message.ChatEvents.SupergroupChatCreated +import dev.inmo.tgbotapi.types.message.ChatEvents.UserLoggedIn +import dev.inmo.tgbotapi.types.message.ChatEvents.WebAppData +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.CommonEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PrivateEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PublicChatEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VideoChatEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatEnded +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatParticipantsInvited +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatScheduled +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatStarted +import dev.inmo.tgbotapi.types.message.CommonGroupContentMessageImpl +import dev.inmo.tgbotapi.types.message.CommonGroupEventMessage +import dev.inmo.tgbotapi.types.message.CommonMediaGroupMessage +import dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage +import dev.inmo.tgbotapi.types.message.ConnectedFromChannelGroupContentMessageImpl +import dev.inmo.tgbotapi.types.message.ForwardInfo +import dev.inmo.tgbotapi.types.message.PassportMessage +import dev.inmo.tgbotapi.types.message.PrivateContentMessageImpl +import dev.inmo.tgbotapi.types.message.PrivateEventMessage +import dev.inmo.tgbotapi.types.message.UnconnectedFromChannelGroupContentMessageImpl +import dev.inmo.tgbotapi.types.message.abstracts.AnonymousGroupContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.ChannelContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage +import dev.inmo.tgbotapi.types.message.abstracts.CommonGroupContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage +import dev.inmo.tgbotapi.types.message.abstracts.ConnectedFromChannelGroupContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.FromChannelGroupContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.FromUserMessage +import dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.GroupEventMessage import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.* +import dev.inmo.tgbotapi.types.message.abstracts.Message +import dev.inmo.tgbotapi.types.message.abstracts.PossiblyEditedMessage +import dev.inmo.tgbotapi.types.message.abstracts.PossiblyForwardedMessage +import dev.inmo.tgbotapi.types.message.abstracts.PossiblyPaymentMessage +import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage +import dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.PublicContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.SignedMessage +import dev.inmo.tgbotapi.types.message.abstracts.SupergroupEventMessage +import dev.inmo.tgbotapi.types.message.abstracts.UnconnectedFromChannelGroupContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.UnknownMessageType +import dev.inmo.tgbotapi.types.message.content.AnimationContent +import dev.inmo.tgbotapi.types.message.content.AudioContent import dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.ContactContent +import dev.inmo.tgbotapi.types.message.content.DiceContent +import dev.inmo.tgbotapi.types.message.content.DocumentContent 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.GameContent import dev.inmo.tgbotapi.types.message.content.InvoiceContent +import dev.inmo.tgbotapi.types.message.content.LiveLocationContent +import dev.inmo.tgbotapi.types.message.content.LocationContent +import dev.inmo.tgbotapi.types.message.content.MediaCollectionContent +import dev.inmo.tgbotapi.types.message.content.MediaContent +import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MessageContent +import dev.inmo.tgbotapi.types.message.content.PhotoContent +import dev.inmo.tgbotapi.types.message.content.PollContent +import dev.inmo.tgbotapi.types.message.content.ResendableContent +import dev.inmo.tgbotapi.types.message.content.StaticLocationContent +import dev.inmo.tgbotapi.types.message.content.StickerContent +import dev.inmo.tgbotapi.types.message.content.TextContent +import dev.inmo.tgbotapi.types.message.content.TextedMediaContent +import dev.inmo.tgbotapi.types.message.content.VenueContent +import dev.inmo.tgbotapi.types.message.content.VideoContent +import dev.inmo.tgbotapi.types.message.content.VideoNoteContent +import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.VoiceContent 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.* -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.abstracts.* -import dev.inmo.tgbotapi.types.update.media_group.* -import dev.inmo.tgbotapi.utils.PreviewFeature +import dev.inmo.tgbotapi.types.message.textsources.BoldTextSource +import dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource +import dev.inmo.tgbotapi.types.message.textsources.CashTagTextSource +import dev.inmo.tgbotapi.types.message.textsources.CodeTextSource +import dev.inmo.tgbotapi.types.message.textsources.EMailTextSource +import dev.inmo.tgbotapi.types.message.textsources.HashTagTextSource +import dev.inmo.tgbotapi.types.message.textsources.ItalicTextSource +import dev.inmo.tgbotapi.types.message.textsources.MentionTextSource +import dev.inmo.tgbotapi.types.message.textsources.MultilevelTextSource +import dev.inmo.tgbotapi.types.message.textsources.PhoneNumberTextSource +import dev.inmo.tgbotapi.types.message.textsources.PreTextSource +import dev.inmo.tgbotapi.types.message.textsources.RegularTextSource +import dev.inmo.tgbotapi.types.message.textsources.SpoilerTextSource +import dev.inmo.tgbotapi.types.message.textsources.StrikethroughTextSource +import dev.inmo.tgbotapi.types.message.textsources.TextLinkTextSource +import dev.inmo.tgbotapi.types.message.textsources.TextMentionTextSource +import dev.inmo.tgbotapi.types.message.textsources.TextSource +import dev.inmo.tgbotapi.types.message.textsources.URLTextSource +import dev.inmo.tgbotapi.types.message.textsources.UnderlineTextSource +import dev.inmo.tgbotapi.types.passport.PassportElementError +import dev.inmo.tgbotapi.types.passport.PassportElementErrorDataField +import dev.inmo.tgbotapi.types.passport.PassportElementErrorFile +import dev.inmo.tgbotapi.types.passport.PassportElementErrorFiles +import dev.inmo.tgbotapi.types.passport.PassportElementErrorFrontSide +import dev.inmo.tgbotapi.types.passport.PassportElementErrorReverseSide +import dev.inmo.tgbotapi.types.passport.PassportElementErrorSelfie +import dev.inmo.tgbotapi.types.passport.PassportElementErrorTranslationFile +import dev.inmo.tgbotapi.types.passport.PassportElementErrorTranslationFiles +import dev.inmo.tgbotapi.types.passport.PassportElementErrorUnspecified +import dev.inmo.tgbotapi.types.passport.PassportElementFileError +import dev.inmo.tgbotapi.types.passport.PassportElementFilesError +import dev.inmo.tgbotapi.types.passport.PassportMultipleElementsError +import dev.inmo.tgbotapi.types.passport.PassportSingleElementError +import dev.inmo.tgbotapi.types.passport.UnknownPassportElementError +import dev.inmo.tgbotapi.types.passport.decrypted.AddressSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.BankStatementSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.CommonPassportSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.DriverLicenseSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.IdentityCardSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.IdentityWithReverseSideSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.InternalPassportSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.OtherDocumentsSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.PassportRegistrationSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.PassportSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.PersonalDetailsSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.RentalAgreementSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.TemporalRegistrationSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.UtilityBillSecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValue +import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueIdentity +import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithData +import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithFiles +import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithReverseSide +import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithTranslations +import dev.inmo.tgbotapi.types.passport.encrypted.BankStatement +import dev.inmo.tgbotapi.types.passport.encrypted.CommonPassport +import dev.inmo.tgbotapi.types.passport.encrypted.DriverLicense +import dev.inmo.tgbotapi.types.passport.encrypted.Email +import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedAddress +import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPassportElementWithTranslatableFilesCollection +import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPassportElementWithTranslatableIDDocument +import dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPersonalDetails +import dev.inmo.tgbotapi.types.passport.encrypted.IdentityCard +import dev.inmo.tgbotapi.types.passport.encrypted.InternalPassport +import dev.inmo.tgbotapi.types.passport.encrypted.Passport +import dev.inmo.tgbotapi.types.passport.encrypted.PassportRegistration +import dev.inmo.tgbotapi.types.passport.encrypted.PhoneNumber +import dev.inmo.tgbotapi.types.passport.encrypted.RentalAgreement +import dev.inmo.tgbotapi.types.passport.encrypted.TemporaryRegistration +import dev.inmo.tgbotapi.types.passport.encrypted.UtilityBill +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElement +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementTranslatable +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithData +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithEmail +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithFilesCollection +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithFrontSide +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithPhoneNumber +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithReverseSide +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithSelfie +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.UnknownEncryptedPassportElement +import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery +import dev.inmo.tgbotapi.types.payments.ShippingQuery +import dev.inmo.tgbotapi.types.polls.ApproximateScheduledCloseInfo +import dev.inmo.tgbotapi.types.polls.ExactScheduledCloseInfo +import dev.inmo.tgbotapi.types.polls.MultipleAnswersPoll +import dev.inmo.tgbotapi.types.polls.Poll +import dev.inmo.tgbotapi.types.polls.PollAnswer +import dev.inmo.tgbotapi.types.polls.QuizPoll +import dev.inmo.tgbotapi.types.polls.RegularPoll +import dev.inmo.tgbotapi.types.polls.ScheduledCloseInfo +import dev.inmo.tgbotapi.types.polls.UnknownPollType +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.GameShortNameCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdDataCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdGameShortNameCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.MessageCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.MessageDataCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.MessageGameShortNameCallbackQuery +import dev.inmo.tgbotapi.types.queries.callback.UnknownCallbackQueryType +import dev.inmo.tgbotapi.types.update.CallbackQueryUpdate +import dev.inmo.tgbotapi.types.update.ChannelPostUpdate +import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate +import dev.inmo.tgbotapi.types.update.ChosenInlineResultUpdate +import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.EditChannelPostUpdate +import dev.inmo.tgbotapi.types.update.EditMessageUpdate +import dev.inmo.tgbotapi.types.update.InlineQueryUpdate +import dev.inmo.tgbotapi.types.update.MessageUpdate +import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.PollAnswerUpdate +import dev.inmo.tgbotapi.types.update.PollUpdate +import dev.inmo.tgbotapi.types.update.PreCheckoutQueryUpdate +import dev.inmo.tgbotapi.types.update.ShippingQueryUpdate +import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate +import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate +import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate +import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate +import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.types.update.media_group.ChannelPostMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.media_group.EditChannelPostMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.media_group.EditMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.media_group.EditMessageMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.media_group.MediaGroupUpdate +import dev.inmo.tgbotapi.types.update.media_group.MessageMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate +import kotlin.Suppress + +public inline fun CommonSendInvoiceData.createInvoiceLinkOrNull(): CreateInvoiceLink? = this as? + dev.inmo.tgbotapi.requests.send.payments.CreateInvoiceLink + +public inline fun CommonSendInvoiceData.createInvoiceLinkOrThrow(): CreateInvoiceLink = this as + dev.inmo.tgbotapi.requests.send.payments.CreateInvoiceLink + +public inline fun CommonSendInvoiceData.ifCreateInvoiceLink(block: (CreateInvoiceLink) -> T): T? + = createInvoiceLinkOrNull() ?.let(block) + +public inline fun CommonSendInvoiceData.sendInvoiceOrNull(): SendInvoice? = this as? + dev.inmo.tgbotapi.requests.send.payments.SendInvoice + +public inline fun CommonSendInvoiceData.sendInvoiceOrThrow(): SendInvoice = this as + dev.inmo.tgbotapi.requests.send.payments.SendInvoice + +public inline fun CommonSendInvoiceData.ifSendInvoice(block: (SendInvoice) -> T): T? = + sendInvoiceOrNull() ?.let(block) + +public inline fun CommonSendInvoiceData.inputInvoiceMessageContentOrNull(): + InputInvoiceMessageContent? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputInvoiceMessageContent + +public inline fun CommonSendInvoiceData.inputInvoiceMessageContentOrThrow(): + InputInvoiceMessageContent = this as + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputInvoiceMessageContent + +public inline fun + CommonSendInvoiceData.ifInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T): T? + = inputInvoiceMessageContentOrNull() ?.let(block) + +public inline fun WithUser.fromUserOrNull(): FromUser? = this as? + dev.inmo.tgbotapi.abstracts.FromUser + +public inline fun WithUser.fromUserOrThrow(): FromUser = this as + dev.inmo.tgbotapi.abstracts.FromUser + +public inline fun WithUser.ifFromUser(block: (FromUser) -> T): T? = fromUserOrNull() + ?.let(block) + +public inline fun WithUser.chatInviteLinkOrNull(): ChatInviteLink? = this as? + dev.inmo.tgbotapi.types.ChatInviteLink + +public inline fun WithUser.chatInviteLinkOrThrow(): ChatInviteLink = this as + dev.inmo.tgbotapi.types.ChatInviteLink + +public inline fun WithUser.ifChatInviteLink(block: (ChatInviteLink) -> T): T? = + chatInviteLinkOrNull() ?.let(block) + +public inline fun WithUser.secondaryChatInviteLinkOrNull(): SecondaryChatInviteLink? = this as? + dev.inmo.tgbotapi.types.SecondaryChatInviteLink + +public inline fun WithUser.secondaryChatInviteLinkOrThrow(): SecondaryChatInviteLink = this as + dev.inmo.tgbotapi.types.SecondaryChatInviteLink + +public inline fun WithUser.ifSecondaryChatInviteLink(block: (SecondaryChatInviteLink) -> T): T? + = secondaryChatInviteLinkOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifBot(block: (Bot) -> T) = botOrNull() ?.let(block) +public inline fun WithUser.primaryInviteLinkOrNull(): PrimaryInviteLink? = this as? + dev.inmo.tgbotapi.types.PrimaryInviteLink -@PreviewFeature -inline fun Chat.botOrNull(): Bot? = this as? Bot +public inline fun WithUser.primaryInviteLinkOrThrow(): PrimaryInviteLink = this as + dev.inmo.tgbotapi.types.PrimaryInviteLink -@PreviewFeature -inline fun Chat.botOrThrow(): Bot = this as Bot +public inline fun WithUser.ifPrimaryInviteLink(block: (PrimaryInviteLink) -> T): T? = + primaryInviteLinkOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifCommonBot(block: (CommonBot) -> T) = commonBotOrNull() ?.let(block) +public inline fun WithUser.chatInviteLinkWithJoinRequestOrNull(): ChatInviteLinkWithJoinRequest? = + this as? dev.inmo.tgbotapi.types.ChatInviteLinkWithJoinRequest -@PreviewFeature -inline fun Chat.commonBotOrNull(): CommonBot? = this as? CommonBot +public inline fun WithUser.chatInviteLinkWithJoinRequestOrThrow(): ChatInviteLinkWithJoinRequest = + this as dev.inmo.tgbotapi.types.ChatInviteLinkWithJoinRequest -@PreviewFeature -inline fun Chat.commonBotOrThrow(): CommonBot = this as CommonBot +public inline fun + WithUser.ifChatInviteLinkWithJoinRequest(block: (ChatInviteLinkWithJoinRequest) -> T): T? = + chatInviteLinkWithJoinRequestOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifCommonUser(block: (CommonUser) -> T) = commonUserOrNull() ?.let(block) +public inline fun WithUser.chatInviteLinkWithLimitedMembersOrNull(): + ChatInviteLinkWithLimitedMembers? = this as? + dev.inmo.tgbotapi.types.ChatInviteLinkWithLimitedMembers -@PreviewFeature -inline fun Chat.commonUserOrNull(): CommonUser? = this as? CommonUser +public inline fun WithUser.chatInviteLinkWithLimitedMembersOrThrow(): + ChatInviteLinkWithLimitedMembers = this as + dev.inmo.tgbotapi.types.ChatInviteLinkWithLimitedMembers -@PreviewFeature -inline fun Chat.commonUserOrThrow(): CommonUser = this as CommonUser +public inline fun + WithUser.ifChatInviteLinkWithLimitedMembers(block: (ChatInviteLinkWithLimitedMembers) -> T): T? + = chatInviteLinkWithLimitedMembersOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifExtendedBot(block: (ExtendedBot) -> T) = extendedBotOrNull() ?.let(block) +public inline fun WithUser.chatInviteLinkUnlimitedOrNull(): ChatInviteLinkUnlimited? = this as? + dev.inmo.tgbotapi.types.ChatInviteLinkUnlimited -@PreviewFeature -inline fun Chat.extendedBotOrNull(): ExtendedBot? = this as? ExtendedBot +public inline fun WithUser.chatInviteLinkUnlimitedOrThrow(): ChatInviteLinkUnlimited = this as + dev.inmo.tgbotapi.types.ChatInviteLinkUnlimited -@PreviewFeature -inline fun Chat.extendedBotOrThrow(): ExtendedBot = this as ExtendedBot +public inline fun WithUser.ifChatInviteLinkUnlimited(block: (ChatInviteLinkUnlimited) -> T): T? + = chatInviteLinkUnlimitedOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifUser(block: (User) -> T) = userOrNull() ?.let(block) +public inline fun WithUser.baseChosenInlineResultOrNull(): BaseChosenInlineResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.BaseChosenInlineResult -@PreviewFeature -inline fun Chat.userOrNull(): User? = this as? User +public inline fun WithUser.baseChosenInlineResultOrThrow(): BaseChosenInlineResult = this as + dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.BaseChosenInlineResult -@PreviewFeature -inline fun Chat.userOrThrow(): User = this as User +public inline fun WithUser.ifBaseChosenInlineResult(block: (BaseChosenInlineResult) -> T): T? = + baseChosenInlineResultOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifChannelChat(block: (ChannelChat) -> T) = channelChatOrNull() ?.let(block) +public inline fun WithUser.chosenInlineResultOrNull(): ChosenInlineResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.ChosenInlineResult -@PreviewFeature -inline fun Chat.channelChatOrNull(): ChannelChat? = this as? ChannelChat +public inline fun WithUser.chosenInlineResultOrThrow(): ChosenInlineResult = this as + dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.ChosenInlineResult -@PreviewFeature -inline fun Chat.channelChatOrThrow(): ChannelChat = this as ChannelChat +public inline fun WithUser.ifChosenInlineResult(block: (ChosenInlineResult) -> T): T? = + chosenInlineResultOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifGroupChat(block: (GroupChat) -> T) = groupChatOrNull() ?.let(block) +public inline fun WithUser.locationChosenInlineResultOrNull(): LocationChosenInlineResult? = this + as? dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.LocationChosenInlineResult -@PreviewFeature -inline fun Chat.groupChatOrNull(): GroupChat? = this as? GroupChat +public inline fun WithUser.locationChosenInlineResultOrThrow(): LocationChosenInlineResult = this as + dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.LocationChosenInlineResult -@PreviewFeature -inline fun Chat.groupChatOrThrow(): GroupChat = this as GroupChat +public inline fun + WithUser.ifLocationChosenInlineResult(block: (LocationChosenInlineResult) -> T): T? = + locationChosenInlineResultOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifPrivateChat(block: (PrivateChat) -> T) = privateChatOrNull() ?.let(block) +public inline fun WithUser.baseInlineQueryOrNull(): BaseInlineQuery? = this as? + dev.inmo.tgbotapi.types.InlineQueries.query.BaseInlineQuery -@PreviewFeature -inline fun Chat.privateChatOrNull(): PrivateChat? = this as? PrivateChat +public inline fun WithUser.baseInlineQueryOrThrow(): BaseInlineQuery = this as + dev.inmo.tgbotapi.types.InlineQueries.query.BaseInlineQuery -@PreviewFeature -inline fun Chat.privateChatOrThrow(): PrivateChat = this as PrivateChat +public inline fun WithUser.ifBaseInlineQuery(block: (BaseInlineQuery) -> T): T? = + baseInlineQueryOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifPublicChat(block: (PublicChat) -> T) = publicChatOrNull() ?.let(block) +public inline fun WithUser.inlineQueryOrNull(): InlineQuery? = this as? + dev.inmo.tgbotapi.types.InlineQueries.query.InlineQuery -@PreviewFeature -inline fun Chat.publicChatOrNull(): PublicChat? = this as? PublicChat +public inline fun WithUser.inlineQueryOrThrow(): InlineQuery = this as + dev.inmo.tgbotapi.types.InlineQueries.query.InlineQuery -@PreviewFeature -inline fun Chat.publicChatOrThrow(): PublicChat = this as PublicChat +public inline fun WithUser.ifInlineQuery(block: (InlineQuery) -> T): T? = inlineQueryOrNull() + ?.let(block) -@PreviewFeature -inline fun Chat.ifSuperPublicChat(block: (SuperPublicChat) -> T) = superPublicChatOrNull() ?.let(block) +public inline fun WithUser.locationInlineQueryOrNull(): LocationInlineQuery? = this as? + dev.inmo.tgbotapi.types.InlineQueries.query.LocationInlineQuery -@PreviewFeature -inline fun Chat.superPublicChatOrNull(): SuperPublicChat? = this as? SuperPublicChat +public inline fun WithUser.locationInlineQueryOrThrow(): LocationInlineQuery = this as + dev.inmo.tgbotapi.types.InlineQueries.query.LocationInlineQuery -@PreviewFeature -inline fun Chat.superPublicChatOrThrow(): SuperPublicChat = this as SuperPublicChat +public inline fun WithUser.ifLocationInlineQuery(block: (LocationInlineQuery) -> T): T? = + locationInlineQueryOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifSupergroupChat(block: (SupergroupChat) -> T) = supergroupChatOrNull() ?.let(block) +public inline fun WithUser.chatJoinRequestOrNull(): ChatJoinRequest? = this as? + dev.inmo.tgbotapi.types.chat.ChatJoinRequest -@PreviewFeature -inline fun Chat.supergroupChatOrNull(): SupergroupChat? = this as? SupergroupChat +public inline fun WithUser.chatJoinRequestOrThrow(): ChatJoinRequest = this as + dev.inmo.tgbotapi.types.chat.ChatJoinRequest -@PreviewFeature -inline fun Chat.supergroupChatOrThrow(): SupergroupChat = this as SupergroupChat +public inline fun WithUser.ifChatJoinRequest(block: (ChatJoinRequest) -> T): T? = + chatJoinRequestOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifUnknownChatType(block: (UnknownChatType) -> T) = unknownChatTypeOrNull() ?.let(block) +public inline fun WithUser.administratorChatMemberOrNull(): AdministratorChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember -@PreviewFeature -inline fun Chat.unknownChatTypeOrNull(): UnknownChatType? = this as? UnknownChatType +public inline fun WithUser.administratorChatMemberOrThrow(): AdministratorChatMember = this as + dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember -@PreviewFeature -inline fun Chat.unknownChatTypeOrThrow(): UnknownChatType = this as UnknownChatType +public inline fun WithUser.ifAdministratorChatMember(block: (AdministratorChatMember) -> T): T? + = administratorChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifUsernameChat(block: (UsernameChat) -> T) = usernameChatOrNull() ?.let(block) +public inline fun WithUser.administratorChatMemberImplOrNull(): AdministratorChatMemberImpl? = this + as? dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl -@PreviewFeature -inline fun Chat.usernameChatOrNull(): UsernameChat? = this as? UsernameChat +public inline fun WithUser.administratorChatMemberImplOrThrow(): AdministratorChatMemberImpl = this + as dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl -@PreviewFeature -inline fun Chat.usernameChatOrThrow(): UsernameChat = this as UsernameChat +public inline fun + WithUser.ifAdministratorChatMemberImpl(block: (AdministratorChatMemberImpl) -> T): T? = + administratorChatMemberImplOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifExtendedChannelChat(block: (ExtendedChannelChat) -> T) = extendedChannelChatOrNull() ?.let(block) +public inline fun WithUser.bannedChatMemberOrNull(): BannedChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.BannedChatMember -@PreviewFeature -inline fun Chat.extendedChannelChatOrNull(): ExtendedChannelChat? = this as? ExtendedChannelChat +public inline fun WithUser.bannedChatMemberOrThrow(): BannedChatMember = this as + dev.inmo.tgbotapi.types.chat.member.BannedChatMember -@PreviewFeature -inline fun Chat.extendedChannelChatOrThrow(): ExtendedChannelChat = this as ExtendedChannelChat +public inline fun WithUser.ifBannedChatMember(block: (BannedChatMember) -> T): T? = + bannedChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifExtendedChat(block: (ExtendedChat) -> T) = extendedChatOrNull() ?.let(block) +public inline fun WithUser.chatMemberOrNull(): ChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.ChatMember -@PreviewFeature -inline fun Chat.extendedChatOrNull(): ExtendedChat? = this as? ExtendedChat +public inline fun WithUser.chatMemberOrThrow(): ChatMember = this as + dev.inmo.tgbotapi.types.chat.member.ChatMember -@PreviewFeature -inline fun Chat.extendedChatOrThrow(): ExtendedChat = this as ExtendedChat +public inline fun WithUser.ifChatMember(block: (ChatMember) -> T): T? = chatMemberOrNull() + ?.let(block) -@PreviewFeature -inline fun Chat.ifExtendedGroupChat(block: (ExtendedGroupChat) -> T) = extendedGroupChatOrNull() ?.let(block) +public inline fun WithUser.kickedChatMemberOrNull(): KickedChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.KickedChatMember -@PreviewFeature -inline fun Chat.extendedGroupChatOrNull(): ExtendedGroupChat? = this as? ExtendedGroupChat +public inline fun WithUser.kickedChatMemberOrThrow(): KickedChatMember = this as + dev.inmo.tgbotapi.types.chat.member.KickedChatMember -@PreviewFeature -inline fun Chat.extendedGroupChatOrThrow(): ExtendedGroupChat = this as ExtendedGroupChat +public inline fun WithUser.ifKickedChatMember(block: (KickedChatMember) -> T): T? = + kickedChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifExtendedPrivateChat(block: (ExtendedPrivateChat) -> T) = extendedPrivateChatOrNull() ?.let(block) +public inline fun WithUser.leftChatMemberOrNull(): LeftChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.LeftChatMember -@PreviewFeature -inline fun Chat.extendedPrivateChatOrNull(): ExtendedPrivateChat? = this as? ExtendedPrivateChat +public inline fun WithUser.leftChatMemberOrThrow(): LeftChatMember = this as + dev.inmo.tgbotapi.types.chat.member.LeftChatMember -@PreviewFeature -inline fun Chat.extendedPrivateChatOrThrow(): ExtendedPrivateChat = this as ExtendedPrivateChat +public inline fun WithUser.ifLeftChatMember(block: (LeftChatMember) -> T): T? = + leftChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifExtendedPublicChat(block: (ExtendedPublicChat) -> T) = extendedPublicChatOrNull() ?.let(block) +public inline fun WithUser.leftChatMemberImplOrNull(): LeftChatMemberImpl? = this as? + dev.inmo.tgbotapi.types.chat.member.LeftChatMemberImpl -@PreviewFeature -inline fun Chat.extendedPublicChatOrNull(): ExtendedPublicChat? = this as? ExtendedPublicChat +public inline fun WithUser.leftChatMemberImplOrThrow(): LeftChatMemberImpl = this as + dev.inmo.tgbotapi.types.chat.member.LeftChatMemberImpl -@PreviewFeature -inline fun Chat.extendedPublicChatOrThrow(): ExtendedPublicChat = this as ExtendedPublicChat +public inline fun WithUser.ifLeftChatMemberImpl(block: (LeftChatMemberImpl) -> T): T? = + leftChatMemberImplOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifExtendedSupergroupChat(block: (ExtendedSupergroupChat) -> T) = extendedSupergroupChatOrNull() ?.let(block) +public inline fun WithUser.memberChatMemberOrNull(): MemberChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.MemberChatMember -@PreviewFeature -inline fun Chat.extendedSupergroupChatOrNull(): ExtendedSupergroupChat? = this as? ExtendedSupergroupChat +public inline fun WithUser.memberChatMemberOrThrow(): MemberChatMember = this as + dev.inmo.tgbotapi.types.chat.member.MemberChatMember -@PreviewFeature -inline fun Chat.extendedSupergroupChatOrThrow(): ExtendedSupergroupChat = this as ExtendedSupergroupChat +public inline fun WithUser.ifMemberChatMember(block: (MemberChatMember) -> T): T? = + memberChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifPossiblyPremiumChat(block: (PossiblyPremiumChat) -> T) = possiblyPremiumChatOrNull() ?.let(block) +public inline fun WithUser.memberChatMemberImplOrNull(): MemberChatMemberImpl? = this as? + dev.inmo.tgbotapi.types.chat.member.MemberChatMemberImpl -@PreviewFeature -inline fun Chat.possiblyPremiumChatOrNull(): PossiblyPremiumChat? = this as? PossiblyPremiumChat +public inline fun WithUser.memberChatMemberImplOrThrow(): MemberChatMemberImpl = this as + dev.inmo.tgbotapi.types.chat.member.MemberChatMemberImpl -@PreviewFeature -inline fun Chat.possiblyPremiumChatOrThrow(): PossiblyPremiumChat = this as PossiblyPremiumChat +public inline fun WithUser.ifMemberChatMemberImpl(block: (MemberChatMemberImpl) -> T): T? = + memberChatMemberImplOrNull() ?.let(block) -@PreviewFeature -inline fun Chat.ifAbleToAddInAttachmentMenuChat(block: (AbleToAddInAttachmentMenuChat) -> T) = ableToAddInAttachmentMenuChatOrNull() ?.let(block) +public inline fun WithUser.ownerChatMemberOrNull(): OwnerChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.OwnerChatMember -@PreviewFeature -inline fun Chat.ableToAddInAttachmentMenuChatOrNull(): AbleToAddInAttachmentMenuChat? = this as? AbleToAddInAttachmentMenuChat +public inline fun WithUser.ownerChatMemberOrThrow(): OwnerChatMember = this as + dev.inmo.tgbotapi.types.chat.member.OwnerChatMember -@PreviewFeature -inline fun Chat.ableToAddInAttachmentMenuChatOrThrow(): AbleToAddInAttachmentMenuChat = this as AbleToAddInAttachmentMenuChat +public inline fun WithUser.ifOwnerChatMember(block: (OwnerChatMember) -> T): T? = + ownerChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifDataCallbackQuery(block: (DataCallbackQuery) -> T) = dataCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.restrictedChatMemberOrNull(): RestrictedChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember -@PreviewFeature -inline fun CallbackQuery.dataCallbackQueryOrNull(): DataCallbackQuery? = this as? DataCallbackQuery +public inline fun WithUser.restrictedChatMemberOrThrow(): RestrictedChatMember = this as + dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember -@PreviewFeature -inline fun CallbackQuery.dataCallbackQueryOrThrow(): DataCallbackQuery = this as DataCallbackQuery +public inline fun WithUser.ifRestrictedChatMember(block: (RestrictedChatMember) -> T): T? = + restrictedChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifGameShortNameCallbackQuery(block: (GameShortNameCallbackQuery) -> T) = gameShortNameCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.specialRightsChatMemberOrNull(): SpecialRightsChatMember? = this as? + dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember -@PreviewFeature -inline fun CallbackQuery.gameShortNameCallbackQueryOrNull(): GameShortNameCallbackQuery? = - this as? GameShortNameCallbackQuery +public inline fun WithUser.specialRightsChatMemberOrThrow(): SpecialRightsChatMember = this as + dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember -@PreviewFeature -inline fun CallbackQuery.gameShortNameCallbackQueryOrThrow(): GameShortNameCallbackQuery = - this as GameShortNameCallbackQuery +public inline fun WithUser.ifSpecialRightsChatMember(block: (SpecialRightsChatMember) -> T): T? + = specialRightsChatMemberOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifInlineMessageIdCallbackQuery(block: (InlineMessageIdCallbackQuery) -> T) = inlineMessageIdCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.leftChatMemberEventOrNull(): LeftChatMemberEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMemberEvent -@PreviewFeature -inline fun CallbackQuery.inlineMessageIdCallbackQueryOrNull(): InlineMessageIdCallbackQuery? = - this as? InlineMessageIdCallbackQuery +public inline fun WithUser.leftChatMemberEventOrThrow(): LeftChatMemberEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMemberEvent -@PreviewFeature -inline fun CallbackQuery.inlineMessageIdCallbackQueryOrThrow(): InlineMessageIdCallbackQuery = - this as InlineMessageIdCallbackQuery +public inline fun WithUser.ifLeftChatMemberEvent(block: (LeftChatMemberEvent) -> T): T? = + leftChatMemberEventOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifInlineMessageIdDataCallbackQuery(block: (InlineMessageIdDataCallbackQuery) -> T) = inlineMessageIdDataCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.commonGroupEventMessageOrNull(): CommonGroupEventMessage? = + this as? + dev.inmo.tgbotapi.types.message.CommonGroupEventMessage -@PreviewFeature -inline fun CallbackQuery.inlineMessageIdDataCallbackQueryOrNull(): InlineMessageIdDataCallbackQuery? = - this as? InlineMessageIdDataCallbackQuery +public inline fun WithUser.commonGroupEventMessageOrThrow(): CommonGroupEventMessage = + this as + dev.inmo.tgbotapi.types.message.CommonGroupEventMessage -@PreviewFeature -inline fun CallbackQuery.inlineMessageIdDataCallbackQueryOrThrow(): InlineMessageIdDataCallbackQuery = - this as InlineMessageIdDataCallbackQuery +public inline fun + WithUser.ifCommonGroupEventMessage(block: (CommonGroupEventMessage) -> T): T? = + commonGroupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifInlineMessageIdGameShortNameCallbackQuery(block: (InlineMessageIdGameShortNameCallbackQuery) -> T) = inlineMessageIdGameShortNameCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.commonMediaGroupMessageOrNull(): + CommonMediaGroupMessage? = this as? + dev.inmo.tgbotapi.types.message.CommonMediaGroupMessage -@PreviewFeature -inline fun CallbackQuery.inlineMessageIdGameShortNameCallbackQueryOrNull(): InlineMessageIdGameShortNameCallbackQuery? = - this as? InlineMessageIdGameShortNameCallbackQuery +public inline fun WithUser.commonMediaGroupMessageOrThrow(): + CommonMediaGroupMessage = this as + dev.inmo.tgbotapi.types.message.CommonMediaGroupMessage -@PreviewFeature -inline fun CallbackQuery.inlineMessageIdGameShortNameCallbackQueryOrThrow(): InlineMessageIdGameShortNameCallbackQuery = - this as InlineMessageIdGameShortNameCallbackQuery +public inline fun + WithUser.ifCommonMediaGroupMessage(block: (CommonMediaGroupMessage) -> T): T? + = commonMediaGroupMessageOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifMessageCallbackQuery(block: (MessageCallbackQuery) -> T) = messageCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.commonSupergroupEventMessageOrNull(): + CommonSupergroupEventMessage? = this as? + dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage -@PreviewFeature -inline fun CallbackQuery.messageCallbackQueryOrNull(): MessageCallbackQuery? = this as? MessageCallbackQuery +public inline fun WithUser.commonSupergroupEventMessageOrThrow(): + CommonSupergroupEventMessage = this as + dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage -@PreviewFeature -inline fun CallbackQuery.messageCallbackQueryOrThrow(): MessageCallbackQuery = this as MessageCallbackQuery +public inline fun + WithUser.ifCommonSupergroupEventMessage(block: (CommonSupergroupEventMessage) -> T): + T? = commonSupergroupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifMessageDataCallbackQuery(block: (MessageDataCallbackQuery) -> T) = messageDataCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.commonGroupContentMessageImplOrNull(): + CommonGroupContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.CommonGroupContentMessageImpl -@PreviewFeature -inline fun CallbackQuery.messageDataCallbackQueryOrNull(): MessageDataCallbackQuery? = this as? MessageDataCallbackQuery +public inline fun WithUser.commonGroupContentMessageImplOrThrow(): + CommonGroupContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.CommonGroupContentMessageImpl -@PreviewFeature -inline fun CallbackQuery.messageDataCallbackQueryOrThrow(): MessageDataCallbackQuery = this as MessageDataCallbackQuery +public inline fun + WithUser.ifCommonGroupContentMessageImpl(block: (CommonGroupContentMessageImpl) -> T): + T? = commonGroupContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifMessageGameShortNameCallbackQuery(block: (MessageGameShortNameCallbackQuery) -> T) = messageGameShortNameCallbackQueryOrNull() ?.let(block) +public inline fun WithUser.passportMessageOrNull(): PassportMessage? = this as? + dev.inmo.tgbotapi.types.message.PassportMessage -@PreviewFeature -inline fun CallbackQuery.messageGameShortNameCallbackQueryOrNull(): MessageGameShortNameCallbackQuery? = - this as? MessageGameShortNameCallbackQuery +public inline fun WithUser.passportMessageOrThrow(): PassportMessage = this as + dev.inmo.tgbotapi.types.message.PassportMessage -@PreviewFeature -inline fun CallbackQuery.messageGameShortNameCallbackQueryOrThrow(): MessageGameShortNameCallbackQuery = - this as MessageGameShortNameCallbackQuery +public inline fun WithUser.ifPassportMessage(block: (PassportMessage) -> T): T? = + passportMessageOrNull() ?.let(block) -@PreviewFeature -inline fun CallbackQuery.ifUnknownCallbackQueryType(block: (UnknownCallbackQueryType) -> T) = unknownCallbackQueryTypeOrNull() ?.let(block) +public inline fun WithUser.privateContentMessageImplOrNull(): + PrivateContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.PrivateContentMessageImpl -@PreviewFeature -inline fun CallbackQuery.unknownCallbackQueryTypeOrNull(): UnknownCallbackQueryType? = this as? UnknownCallbackQueryType +public inline fun WithUser.privateContentMessageImplOrThrow(): + PrivateContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.PrivateContentMessageImpl -@PreviewFeature -inline fun CallbackQuery.unknownCallbackQueryTypeOrThrow(): UnknownCallbackQueryType = this as UnknownCallbackQueryType +public inline fun + WithUser.ifPrivateContentMessageImpl(block: (PrivateContentMessageImpl) -> T): + T? = privateContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorDataField(block: (PassportElementErrorDataField) -> T) = passportElementErrorDataFieldOrNull() ?.let(block) +public inline fun WithUser.fromUserMessageOrNull(): FromUserMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.FromUserMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorDataFieldOrNull(): PassportElementErrorDataField? = - this as? PassportElementErrorDataField +public inline fun WithUser.fromUserMessageOrThrow(): FromUserMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.FromUserMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorDataFieldOrThrow(): PassportElementErrorDataField = - this as PassportElementErrorDataField +public inline fun WithUser.ifFromUserMessage(block: (FromUserMessage) -> T): T? = + fromUserMessageOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorFile(block: (PassportElementErrorFile) -> T) = passportElementErrorFileOrNull() ?.let(block) +public inline fun WithUser.groupEventMessageOrNull(): GroupEventMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.GroupEventMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorFileOrNull(): PassportElementErrorFile? = - this as? PassportElementErrorFile +public inline fun WithUser.groupEventMessageOrThrow(): GroupEventMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.GroupEventMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorFileOrThrow(): PassportElementErrorFile = - this as PassportElementErrorFile +public inline fun WithUser.ifGroupEventMessage(block: (GroupEventMessage) -> T): T? + = groupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorFiles(block: (PassportElementErrorFiles) -> T) = passportElementErrorFilesOrNull() ?.let(block) +public inline fun WithUser.commonGroupContentMessageOrNull(): + CommonGroupContentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.CommonGroupContentMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorFilesOrNull(): PassportElementErrorFiles? = - this as? PassportElementErrorFiles +public inline fun WithUser.commonGroupContentMessageOrThrow(): + CommonGroupContentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.CommonGroupContentMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorFilesOrThrow(): PassportElementErrorFiles = - this as PassportElementErrorFiles +public inline fun + WithUser.ifCommonGroupContentMessage(block: (CommonGroupContentMessage) -> T): + T? = commonGroupContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorFrontSide(block: (PassportElementErrorFrontSide) -> T) = passportElementErrorFrontSideOrNull() ?.let(block) +public inline fun WithUser.privateContentMessageOrNull(): PrivateContentMessage? = + this as? + dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorFrontSideOrNull(): PassportElementErrorFrontSide? = - this as? PassportElementErrorFrontSide +public inline fun WithUser.privateContentMessageOrThrow(): PrivateContentMessage = + this as + dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorFrontSideOrThrow(): PassportElementErrorFrontSide = - this as PassportElementErrorFrontSide +public inline fun + WithUser.ifPrivateContentMessage(block: (PrivateContentMessage) -> T): T? = + privateContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorReverseSide(block: (PassportElementErrorReverseSide) -> T) = passportElementErrorReverseSideOrNull() ?.let(block) +public inline fun WithUser.supergroupEventMessageOrNull(): SupergroupEventMessage? + = this as? + dev.inmo.tgbotapi.types.message.abstracts.SupergroupEventMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorReverseSideOrNull(): PassportElementErrorReverseSide? = - this as? PassportElementErrorReverseSide +public inline fun WithUser.supergroupEventMessageOrThrow(): SupergroupEventMessage + = this as + dev.inmo.tgbotapi.types.message.abstracts.SupergroupEventMessage -@PreviewFeature -inline fun PassportElementError.passportElementErrorReverseSideOrThrow(): PassportElementErrorReverseSide = - this as PassportElementErrorReverseSide +public inline fun + WithUser.ifSupergroupEventMessage(block: (SupergroupEventMessage) -> T): T? = + supergroupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorSelfie(block: (PassportElementErrorSelfie) -> T) = passportElementErrorSelfieOrNull() ?.let(block) +public inline fun WithUser.preCheckoutQueryOrNull(): PreCheckoutQuery? = this as? + dev.inmo.tgbotapi.types.payments.PreCheckoutQuery -@PreviewFeature -inline fun PassportElementError.passportElementErrorSelfieOrNull(): PassportElementErrorSelfie? = - this as? PassportElementErrorSelfie +public inline fun WithUser.preCheckoutQueryOrThrow(): PreCheckoutQuery = this as + dev.inmo.tgbotapi.types.payments.PreCheckoutQuery -@PreviewFeature -inline fun PassportElementError.passportElementErrorSelfieOrThrow(): PassportElementErrorSelfie = - this as PassportElementErrorSelfie +public inline fun WithUser.ifPreCheckoutQuery(block: (PreCheckoutQuery) -> T): T? = + preCheckoutQueryOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorTranslationFile(block: (PassportElementErrorTranslationFile) -> T) = passportElementErrorTranslationFileOrNull() ?.let(block) +public inline fun WithUser.shippingQueryOrNull(): ShippingQuery? = this as? + dev.inmo.tgbotapi.types.payments.ShippingQuery -@PreviewFeature -inline fun PassportElementError.passportElementErrorTranslationFileOrNull(): PassportElementErrorTranslationFile? = - this as? PassportElementErrorTranslationFile +public inline fun WithUser.shippingQueryOrThrow(): ShippingQuery = this as + dev.inmo.tgbotapi.types.payments.ShippingQuery -@PreviewFeature -inline fun PassportElementError.passportElementErrorTranslationFileOrThrow(): PassportElementErrorTranslationFile = - this as PassportElementErrorTranslationFile +public inline fun WithUser.ifShippingQuery(block: (ShippingQuery) -> T): T? = + shippingQueryOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorTranslationFiles(block: (PassportElementErrorTranslationFiles) -> T) = passportElementErrorTranslationFilesOrNull() ?.let(block) +public inline fun WithUser.pollAnswerOrNull(): PollAnswer? = this as? + dev.inmo.tgbotapi.types.polls.PollAnswer -@PreviewFeature -inline fun PassportElementError.passportElementErrorTranslationFilesOrNull(): PassportElementErrorTranslationFiles? = - this as? PassportElementErrorTranslationFiles +public inline fun WithUser.pollAnswerOrThrow(): PollAnswer = this as + dev.inmo.tgbotapi.types.polls.PollAnswer -@PreviewFeature -inline fun PassportElementError.passportElementErrorTranslationFilesOrThrow(): PassportElementErrorTranslationFiles = - this as PassportElementErrorTranslationFiles +public inline fun WithUser.ifPollAnswer(block: (PollAnswer) -> T): T? = pollAnswerOrNull() + ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementErrorUnspecified(block: (PassportElementErrorUnspecified) -> T) = passportElementErrorUnspecifiedOrNull() ?.let(block) +public inline fun WithUser.callbackQueryOrNull(): CallbackQuery? = this as? + dev.inmo.tgbotapi.types.queries.callback.CallbackQuery -@PreviewFeature -inline fun PassportElementError.passportElementErrorUnspecifiedOrNull(): PassportElementErrorUnspecified? = - this as? PassportElementErrorUnspecified +public inline fun WithUser.callbackQueryOrThrow(): CallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.CallbackQuery -@PreviewFeature -inline fun PassportElementError.passportElementErrorUnspecifiedOrThrow(): PassportElementErrorUnspecified = - this as PassportElementErrorUnspecified +public inline fun WithUser.ifCallbackQuery(block: (CallbackQuery) -> T): T? = + callbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementFileError(block: (PassportElementFileError) -> T) = passportElementFileErrorOrNull() ?.let(block) +public inline fun WithUser.unknownCallbackQueryTypeOrNull(): UnknownCallbackQueryType? = this as? + dev.inmo.tgbotapi.types.queries.callback.UnknownCallbackQueryType -@PreviewFeature -inline fun PassportElementError.passportElementFileErrorOrNull(): PassportElementFileError? = - this as? PassportElementFileError +public inline fun WithUser.unknownCallbackQueryTypeOrThrow(): UnknownCallbackQueryType = this as + dev.inmo.tgbotapi.types.queries.callback.UnknownCallbackQueryType -@PreviewFeature -inline fun PassportElementError.passportElementFileErrorOrThrow(): PassportElementFileError = - this as PassportElementFileError +public inline fun WithUser.ifUnknownCallbackQueryType(block: (UnknownCallbackQueryType) -> T): + T? = unknownCallbackQueryTypeOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportElementFilesError(block: (PassportElementFilesError) -> T) = passportElementFilesErrorOrNull() ?.let(block) +public inline fun WithUser.dataCallbackQueryOrNull(): DataCallbackQuery? = this as? + dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery -@PreviewFeature -inline fun PassportElementError.passportElementFilesErrorOrNull(): PassportElementFilesError? = - this as? PassportElementFilesError +public inline fun WithUser.dataCallbackQueryOrThrow(): DataCallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.DataCallbackQuery -@PreviewFeature -inline fun PassportElementError.passportElementFilesErrorOrThrow(): PassportElementFilesError = - this as PassportElementFilesError +public inline fun WithUser.ifDataCallbackQuery(block: (DataCallbackQuery) -> T): T? = + dataCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportMultipleElementsError(block: (PassportMultipleElementsError) -> T) = passportMultipleElementsErrorOrNull() ?.let(block) +public inline fun WithUser.gameShortNameCallbackQueryOrNull(): GameShortNameCallbackQuery? = this + as? dev.inmo.tgbotapi.types.queries.callback.GameShortNameCallbackQuery -@PreviewFeature -inline fun PassportElementError.passportMultipleElementsErrorOrNull(): PassportMultipleElementsError? = - this as? PassportMultipleElementsError +public inline fun WithUser.gameShortNameCallbackQueryOrThrow(): GameShortNameCallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.GameShortNameCallbackQuery -@PreviewFeature -inline fun PassportElementError.passportMultipleElementsErrorOrThrow(): PassportMultipleElementsError = - this as PassportMultipleElementsError +public inline fun + WithUser.ifGameShortNameCallbackQuery(block: (GameShortNameCallbackQuery) -> T): T? = + gameShortNameCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifPassportSingleElementError(block: (PassportSingleElementError) -> T) = passportSingleElementErrorOrNull() ?.let(block) +public inline fun WithUser.inlineMessageIdCallbackQueryOrNull(): InlineMessageIdCallbackQuery? = + this as? dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdCallbackQuery -@PreviewFeature -inline fun PassportElementError.passportSingleElementErrorOrNull(): PassportSingleElementError? = - this as? PassportSingleElementError +public inline fun WithUser.inlineMessageIdCallbackQueryOrThrow(): InlineMessageIdCallbackQuery = + this as dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdCallbackQuery -@PreviewFeature -inline fun PassportElementError.passportSingleElementErrorOrThrow(): PassportSingleElementError = - this as PassportSingleElementError +public inline fun + WithUser.ifInlineMessageIdCallbackQuery(block: (InlineMessageIdCallbackQuery) -> T): T? = + inlineMessageIdCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun PassportElementError.ifUnknownPassportElementError(block: (UnknownPassportElementError) -> T) = unknownPassportElementErrorOrNull() ?.let(block) +public inline fun WithUser.inlineMessageIdDataCallbackQueryOrNull(): + InlineMessageIdDataCallbackQuery? = this as? + dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdDataCallbackQuery -@PreviewFeature -inline fun PassportElementError.unknownPassportElementErrorOrNull(): UnknownPassportElementError? = - this as? UnknownPassportElementError +public inline fun WithUser.inlineMessageIdDataCallbackQueryOrThrow(): + InlineMessageIdDataCallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdDataCallbackQuery -@PreviewFeature -inline fun PassportElementError.unknownPassportElementErrorOrThrow(): UnknownPassportElementError = - this as UnknownPassportElementError +public inline fun + WithUser.ifInlineMessageIdDataCallbackQuery(block: (InlineMessageIdDataCallbackQuery) -> T): T? + = inlineMessageIdDataCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifBankStatement(block: (BankStatement) -> T) = bankStatementOrNull() ?.let(block) +public inline fun WithUser.inlineMessageIdGameShortNameCallbackQueryOrNull(): + InlineMessageIdGameShortNameCallbackQuery? = this as? + dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdGameShortNameCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.bankStatementOrNull(): BankStatement? = this as? BankStatement +public inline fun WithUser.inlineMessageIdGameShortNameCallbackQueryOrThrow(): + InlineMessageIdGameShortNameCallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.InlineMessageIdGameShortNameCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.bankStatementOrThrow(): BankStatement = this as BankStatement +public inline fun + WithUser.ifInlineMessageIdGameShortNameCallbackQuery(block: (InlineMessageIdGameShortNameCallbackQuery) -> T): + T? = inlineMessageIdGameShortNameCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifCommonPassport(block: (CommonPassport) -> T) = commonPassportOrNull() ?.let(block) +public inline fun WithUser.messageCallbackQueryOrNull(): MessageCallbackQuery? = this as? + dev.inmo.tgbotapi.types.queries.callback.MessageCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.commonPassportOrNull(): CommonPassport? = this as? CommonPassport +public inline fun WithUser.messageCallbackQueryOrThrow(): MessageCallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.MessageCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.commonPassportOrThrow(): CommonPassport = this as CommonPassport +public inline fun WithUser.ifMessageCallbackQuery(block: (MessageCallbackQuery) -> T): T? = + messageCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifDriverLicense(block: (DriverLicense) -> T) = driverLicenseOrNull() ?.let(block) +public inline fun WithUser.messageDataCallbackQueryOrNull(): MessageDataCallbackQuery? = this as? + dev.inmo.tgbotapi.types.queries.callback.MessageDataCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.driverLicenseOrNull(): DriverLicense? = this as? DriverLicense +public inline fun WithUser.messageDataCallbackQueryOrThrow(): MessageDataCallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.MessageDataCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.driverLicenseOrThrow(): DriverLicense = this as DriverLicense +public inline fun WithUser.ifMessageDataCallbackQuery(block: (MessageDataCallbackQuery) -> T): + T? = messageDataCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEmail(block: (Email) -> T) = emailOrNull() ?.let(block) +public inline fun WithUser.messageGameShortNameCallbackQueryOrNull(): + MessageGameShortNameCallbackQuery? = this as? + dev.inmo.tgbotapi.types.queries.callback.MessageGameShortNameCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.emailOrNull(): Email? = this as? Email +public inline fun WithUser.messageGameShortNameCallbackQueryOrThrow(): + MessageGameShortNameCallbackQuery = this as + dev.inmo.tgbotapi.types.queries.callback.MessageGameShortNameCallbackQuery -@PreviewFeature -inline fun EncryptedPassportElement.emailOrThrow(): Email = this as Email +public inline fun + WithUser.ifMessageGameShortNameCallbackQuery(block: (MessageGameShortNameCallbackQuery) -> T): + T? = messageGameShortNameCallbackQueryOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedAddress(block: (EncryptedAddress) -> T) = encryptedAddressOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultArticleOrNull(): InlineQueryResultArticle? = + this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultArticle -@PreviewFeature -inline fun EncryptedPassportElement.encryptedAddressOrNull(): EncryptedAddress? = this as? EncryptedAddress +public inline fun InlineQueryResult.inlineQueryResultArticleOrThrow(): InlineQueryResultArticle = + this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultArticle -@PreviewFeature -inline fun EncryptedPassportElement.encryptedAddressOrThrow(): EncryptedAddress = this as EncryptedAddress +public inline fun + InlineQueryResult.ifInlineQueryResultArticle(block: (InlineQueryResultArticle) -> T): T? = + inlineQueryResultArticleOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPersonalDetails(block: (EncryptedPersonalDetails) -> T) = encryptedPersonalDetailsOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultAudioCachedImplOrNull(): + InlineQueryResultAudioCachedImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultAudioCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPersonalDetailsOrNull(): EncryptedPersonalDetails? = - this as? EncryptedPersonalDetails +public inline fun InlineQueryResult.inlineQueryResultAudioCachedImplOrThrow(): + InlineQueryResultAudioCachedImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultAudioCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPersonalDetailsOrThrow(): EncryptedPersonalDetails = - this as EncryptedPersonalDetails +public inline fun + InlineQueryResult.ifInlineQueryResultAudioCachedImpl(block: (InlineQueryResultAudioCachedImpl) -> T): + T? = inlineQueryResultAudioCachedImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifIdentityCard(block: (IdentityCard) -> T) = identityCardOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultAudioImplOrNull(): InlineQueryResultAudioImpl? + = this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultAudioImpl -@PreviewFeature -inline fun EncryptedPassportElement.identityCardOrNull(): IdentityCard? = this as? IdentityCard +public inline fun InlineQueryResult.inlineQueryResultAudioImplOrThrow(): InlineQueryResultAudioImpl + = this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultAudioImpl -@PreviewFeature -inline fun EncryptedPassportElement.identityCardOrThrow(): IdentityCard = this as IdentityCard +public inline fun + InlineQueryResult.ifInlineQueryResultAudioImpl(block: (InlineQueryResultAudioImpl) -> T): T? = + inlineQueryResultAudioImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifInternalPassport(block: (InternalPassport) -> T) = internalPassportOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultContactOrNull(): InlineQueryResultContact? = + this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultContact -@PreviewFeature -inline fun EncryptedPassportElement.internalPassportOrNull(): InternalPassport? = this as? InternalPassport +public inline fun InlineQueryResult.inlineQueryResultContactOrThrow(): InlineQueryResultContact = + this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultContact -@PreviewFeature -inline fun EncryptedPassportElement.internalPassportOrThrow(): InternalPassport = this as InternalPassport +public inline fun + InlineQueryResult.ifInlineQueryResultContact(block: (InlineQueryResultContact) -> T): T? = + inlineQueryResultContactOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifPassport(block: (Passport) -> T) = passportOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultDocumentCachedImplOrNull(): + InlineQueryResultDocumentCachedImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultDocumentCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.passportOrNull(): Passport? = this as? Passport +public inline fun InlineQueryResult.inlineQueryResultDocumentCachedImplOrThrow(): + InlineQueryResultDocumentCachedImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultDocumentCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.passportOrThrow(): Passport = this as Passport +public inline fun + InlineQueryResult.ifInlineQueryResultDocumentCachedImpl(block: (InlineQueryResultDocumentCachedImpl) -> T): + T? = inlineQueryResultDocumentCachedImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifPassportRegistration(block: (PassportRegistration) -> T) = passportRegistrationOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultDocumentImplOrNull(): + InlineQueryResultDocumentImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultDocumentImpl -@PreviewFeature -inline fun EncryptedPassportElement.passportRegistrationOrNull(): PassportRegistration? = this as? PassportRegistration +public inline fun InlineQueryResult.inlineQueryResultDocumentImplOrThrow(): + InlineQueryResultDocumentImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultDocumentImpl -@PreviewFeature -inline fun EncryptedPassportElement.passportRegistrationOrThrow(): PassportRegistration = this as PassportRegistration +public inline fun + InlineQueryResult.ifInlineQueryResultDocumentImpl(block: (InlineQueryResultDocumentImpl) -> T): + T? = inlineQueryResultDocumentImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifPhoneNumber(block: (PhoneNumber) -> T) = phoneNumberOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultGameOrNull(): InlineQueryResultGame? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGame -@PreviewFeature -inline fun EncryptedPassportElement.phoneNumberOrNull(): PhoneNumber? = this as? PhoneNumber +public inline fun InlineQueryResult.inlineQueryResultGameOrThrow(): InlineQueryResultGame = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGame -@PreviewFeature -inline fun EncryptedPassportElement.phoneNumberOrThrow(): PhoneNumber = this as PhoneNumber +public inline fun + InlineQueryResult.ifInlineQueryResultGame(block: (InlineQueryResultGame) -> T): T? = + inlineQueryResultGameOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifRentalAgreement(block: (RentalAgreement) -> T) = rentalAgreementOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultGifCachedImplOrNull(): + InlineQueryResultGifCachedImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGifCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.rentalAgreementOrNull(): RentalAgreement? = this as? RentalAgreement +public inline fun InlineQueryResult.inlineQueryResultGifCachedImplOrThrow(): + InlineQueryResultGifCachedImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGifCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.rentalAgreementOrThrow(): RentalAgreement = this as RentalAgreement +public inline fun + InlineQueryResult.ifInlineQueryResultGifCachedImpl(block: (InlineQueryResultGifCachedImpl) -> T): + T? = inlineQueryResultGifCachedImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifTemporaryRegistration(block: (TemporaryRegistration) -> T) = temporaryRegistrationOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultGifImplOrNull(): InlineQueryResultGifImpl? = + this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGifImpl -@PreviewFeature -inline fun EncryptedPassportElement.temporaryRegistrationOrNull(): TemporaryRegistration? = this as? TemporaryRegistration +public inline fun InlineQueryResult.inlineQueryResultGifImplOrThrow(): InlineQueryResultGifImpl = + this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultGifImpl -@PreviewFeature -inline fun EncryptedPassportElement.temporaryRegistrationOrThrow(): TemporaryRegistration = - this as TemporaryRegistration +public inline fun + InlineQueryResult.ifInlineQueryResultGifImpl(block: (InlineQueryResultGifImpl) -> T): T? = + inlineQueryResultGifImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithTranslatableFilesCollection(block: (EncryptedPassportElementWithTranslatableFilesCollection) -> T) = encryptedPassportElementWithTranslatableFilesCollectionOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultLocationOrNull(): InlineQueryResultLocation? = + this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultLocation -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithTranslatableFilesCollectionOrNull(): EncryptedPassportElementWithTranslatableFilesCollection? = - this as? EncryptedPassportElementWithTranslatableFilesCollection +public inline fun InlineQueryResult.inlineQueryResultLocationOrThrow(): InlineQueryResultLocation = + this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultLocation -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithTranslatableFilesCollectionOrThrow(): EncryptedPassportElementWithTranslatableFilesCollection = - this as EncryptedPassportElementWithTranslatableFilesCollection +public inline fun + InlineQueryResult.ifInlineQueryResultLocation(block: (InlineQueryResultLocation) -> T): T? = + inlineQueryResultLocationOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithTranslatableIDDocument(block: (EncryptedPassportElementWithTranslatableIDDocument) -> T) = encryptedPassportElementWithTranslatableIDDocumentOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifCachedImplOrNull(): + InlineQueryResultMpeg4GifCachedImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultMpeg4GifCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithTranslatableIDDocumentOrNull(): EncryptedPassportElementWithTranslatableIDDocument? = - this as? EncryptedPassportElementWithTranslatableIDDocument +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifCachedImplOrThrow(): + InlineQueryResultMpeg4GifCachedImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultMpeg4GifCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithTranslatableIDDocumentOrThrow(): EncryptedPassportElementWithTranslatableIDDocument = - this as EncryptedPassportElementWithTranslatableIDDocument +public inline fun + InlineQueryResult.ifInlineQueryResultMpeg4GifCachedImpl(block: (InlineQueryResultMpeg4GifCachedImpl) -> T): + T? = inlineQueryResultMpeg4GifCachedImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifUtilityBill(block: (UtilityBill) -> T) = utilityBillOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifImplOrNull(): + InlineQueryResultMpeg4GifImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultMpeg4GifImpl -@PreviewFeature -inline fun EncryptedPassportElement.utilityBillOrNull(): UtilityBill? = this as? UtilityBill +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifImplOrThrow(): + InlineQueryResultMpeg4GifImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultMpeg4GifImpl -@PreviewFeature -inline fun EncryptedPassportElement.utilityBillOrThrow(): UtilityBill = this as UtilityBill +public inline fun + InlineQueryResult.ifInlineQueryResultMpeg4GifImpl(block: (InlineQueryResultMpeg4GifImpl) -> T): + T? = inlineQueryResultMpeg4GifImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithFilesCollection(block: (EncryptedPassportElementWithFilesCollection) -> T) = encryptedPassportElementWithFilesCollectionOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultPhotoCachedImplOrNull(): + InlineQueryResultPhotoCachedImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultPhotoCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithFilesCollectionOrNull(): EncryptedPassportElementWithFilesCollection? = - this as? EncryptedPassportElementWithFilesCollection +public inline fun InlineQueryResult.inlineQueryResultPhotoCachedImplOrThrow(): + InlineQueryResultPhotoCachedImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultPhotoCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithFilesCollectionOrThrow(): EncryptedPassportElementWithFilesCollection = - this as EncryptedPassportElementWithFilesCollection +public inline fun + InlineQueryResult.ifInlineQueryResultPhotoCachedImpl(block: (InlineQueryResultPhotoCachedImpl) -> T): + T? = inlineQueryResultPhotoCachedImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementTranslatable(block: (EncryptedPassportElementTranslatable) -> T) = encryptedPassportElementTranslatableOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultPhotoImplOrNull(): InlineQueryResultPhotoImpl? + = this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultPhotoImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementTranslatableOrNull(): EncryptedPassportElementTranslatable? = - this as? EncryptedPassportElementTranslatable +public inline fun InlineQueryResult.inlineQueryResultPhotoImplOrThrow(): InlineQueryResultPhotoImpl + = this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultPhotoImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementTranslatableOrThrow(): EncryptedPassportElementTranslatable = - this as EncryptedPassportElementTranslatable +public inline fun + InlineQueryResult.ifInlineQueryResultPhotoImpl(block: (InlineQueryResultPhotoImpl) -> T): T? = + inlineQueryResultPhotoImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifUnknownEncryptedPassportElement(block: (UnknownEncryptedPassportElement) -> T) = unknownEncryptedPassportElementOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultStickerCachedOrNull(): + InlineQueryResultStickerCached? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultStickerCached -@PreviewFeature -inline fun EncryptedPassportElement.unknownEncryptedPassportElementOrNull(): UnknownEncryptedPassportElement? = - this as? UnknownEncryptedPassportElement +public inline fun InlineQueryResult.inlineQueryResultStickerCachedOrThrow(): + InlineQueryResultStickerCached = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultStickerCached -@PreviewFeature -inline fun EncryptedPassportElement.unknownEncryptedPassportElementOrThrow(): UnknownEncryptedPassportElement = - this as UnknownEncryptedPassportElement +public inline fun + InlineQueryResult.ifInlineQueryResultStickerCached(block: (InlineQueryResultStickerCached) -> T): + T? = inlineQueryResultStickerCachedOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithData(block: (EncryptedPassportElementWithData) -> T) = encryptedPassportElementWithDataOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVenueOrNull(): InlineQueryResultVenue? = this + as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVenue -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithDataOrNull(): EncryptedPassportElementWithData? = - this as? EncryptedPassportElementWithData +public inline fun InlineQueryResult.inlineQueryResultVenueOrThrow(): InlineQueryResultVenue = this + as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVenue -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithDataOrThrow(): EncryptedPassportElementWithData = - this as EncryptedPassportElementWithData +public inline fun + InlineQueryResult.ifInlineQueryResultVenue(block: (InlineQueryResultVenue) -> T): T? = + inlineQueryResultVenueOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithEmail(block: (EncryptedPassportElementWithEmail) -> T) = encryptedPassportElementWithEmailOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVideoCachedImplOrNull(): + InlineQueryResultVideoCachedImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVideoCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithEmailOrNull(): EncryptedPassportElementWithEmail? = - this as? EncryptedPassportElementWithEmail +public inline fun InlineQueryResult.inlineQueryResultVideoCachedImplOrThrow(): + InlineQueryResultVideoCachedImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVideoCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithEmailOrThrow(): EncryptedPassportElementWithEmail = - this as EncryptedPassportElementWithEmail +public inline fun + InlineQueryResult.ifInlineQueryResultVideoCachedImpl(block: (InlineQueryResultVideoCachedImpl) -> T): + T? = inlineQueryResultVideoCachedImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithFrontSide(block: (EncryptedPassportElementWithFrontSide) -> T) = encryptedPassportElementWithFrontSideOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVideoImplOrNull(): InlineQueryResultVideoImpl? + = this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVideoImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithFrontSideOrNull(): EncryptedPassportElementWithFrontSide? = - this as? EncryptedPassportElementWithFrontSide +public inline fun InlineQueryResult.inlineQueryResultVideoImplOrThrow(): InlineQueryResultVideoImpl + = this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVideoImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithFrontSideOrThrow(): EncryptedPassportElementWithFrontSide = - this as EncryptedPassportElementWithFrontSide +public inline fun + InlineQueryResult.ifInlineQueryResultVideoImpl(block: (InlineQueryResultVideoImpl) -> T): T? = + inlineQueryResultVideoImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithPhoneNumber(block: (EncryptedPassportElementWithPhoneNumber) -> T) = encryptedPassportElementWithPhoneNumberOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVoiceCachedImplOrNull(): + InlineQueryResultVoiceCachedImpl? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVoiceCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithPhoneNumberOrNull(): EncryptedPassportElementWithPhoneNumber? = - this as? EncryptedPassportElementWithPhoneNumber +public inline fun InlineQueryResult.inlineQueryResultVoiceCachedImplOrThrow(): + InlineQueryResultVoiceCachedImpl = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVoiceCachedImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithPhoneNumberOrThrow(): EncryptedPassportElementWithPhoneNumber = - this as EncryptedPassportElementWithPhoneNumber +public inline fun + InlineQueryResult.ifInlineQueryResultVoiceCachedImpl(block: (InlineQueryResultVoiceCachedImpl) -> T): + T? = inlineQueryResultVoiceCachedImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithReverseSide(block: (EncryptedPassportElementWithReverseSide) -> T) = encryptedPassportElementWithReverseSideOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVoiceImplOrNull(): InlineQueryResultVoiceImpl? + = this as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVoiceImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithReverseSideOrNull(): EncryptedPassportElementWithReverseSide? = - this as? EncryptedPassportElementWithReverseSide +public inline fun InlineQueryResult.inlineQueryResultVoiceImplOrThrow(): InlineQueryResultVoiceImpl + = this as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultVoiceImpl -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithReverseSideOrThrow(): EncryptedPassportElementWithReverseSide = - this as EncryptedPassportElementWithReverseSide +public inline fun + InlineQueryResult.ifInlineQueryResultVoiceImpl(block: (InlineQueryResultVoiceImpl) -> T): T? = + inlineQueryResultVoiceImplOrNull() ?.let(block) -@PreviewFeature -inline fun EncryptedPassportElement.ifEncryptedPassportElementWithSelfie(block: (EncryptedPassportElementWithSelfie) -> T) = encryptedPassportElementWithSelfieOrNull() ?.let(block) +public inline fun InlineQueryResult.describedInlineQueryResultOrNull(): DescribedInlineQueryResult? + = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.DescribedInlineQueryResult -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithSelfieOrNull(): EncryptedPassportElementWithSelfie? = - this as? EncryptedPassportElementWithSelfie +public inline fun InlineQueryResult.describedInlineQueryResultOrThrow(): DescribedInlineQueryResult + = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.DescribedInlineQueryResult -@PreviewFeature -inline fun EncryptedPassportElement.encryptedPassportElementWithSelfieOrThrow(): EncryptedPassportElementWithSelfie = - this as EncryptedPassportElementWithSelfie +public inline fun + InlineQueryResult.ifDescribedInlineQueryResult(block: (DescribedInlineQueryResult) -> T): T? = + describedInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifAddressSecureValue(block: (AddressSecureValue) -> T) = addressSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.fileInlineQueryResultOrNull(): FileInlineQueryResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.FileInlineQueryResult -@PreviewFeature -inline fun SecureValue.addressSecureValueOrNull(): AddressSecureValue? = this as? AddressSecureValue +public inline fun InlineQueryResult.fileInlineQueryResultOrThrow(): FileInlineQueryResult = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.FileInlineQueryResult -@PreviewFeature -inline fun SecureValue.addressSecureValueOrThrow(): AddressSecureValue = this as AddressSecureValue +public inline fun + InlineQueryResult.ifFileInlineQueryResult(block: (FileInlineQueryResult) -> T): T? = + fileInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifBankStatementSecureValue(block: (BankStatementSecureValue) -> T) = bankStatementSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.optionallyTitledInlineQueryResultOrNull(): + OptionallyTitledInlineQueryResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.OptionallyTitledInlineQueryResult -@PreviewFeature -inline fun SecureValue.bankStatementSecureValueOrNull(): BankStatementSecureValue? = this as? BankStatementSecureValue +public inline fun InlineQueryResult.optionallyTitledInlineQueryResultOrThrow(): + OptionallyTitledInlineQueryResult = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.OptionallyTitledInlineQueryResult -@PreviewFeature -inline fun SecureValue.bankStatementSecureValueOrThrow(): BankStatementSecureValue = this as BankStatementSecureValue +public inline fun + InlineQueryResult.ifOptionallyTitledInlineQueryResult(block: (OptionallyTitledInlineQueryResult) -> T): + T? = optionallyTitledInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifCommonPassportSecureValue(block: (CommonPassportSecureValue) -> T) = commonPassportSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.sizedInlineQueryResultOrNull(): SizedInlineQueryResult? = this + as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.SizedInlineQueryResult -@PreviewFeature -inline fun SecureValue.commonPassportSecureValueOrNull(): CommonPassportSecureValue? = this as? CommonPassportSecureValue +public inline fun InlineQueryResult.sizedInlineQueryResultOrThrow(): SizedInlineQueryResult = this + as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.SizedInlineQueryResult -@PreviewFeature -inline fun SecureValue.commonPassportSecureValueOrThrow(): CommonPassportSecureValue = this as CommonPassportSecureValue +public inline fun + InlineQueryResult.ifSizedInlineQueryResult(block: (SizedInlineQueryResult) -> T): T? = + sizedInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifDriverLicenseSecureValue(block: (DriverLicenseSecureValue) -> T) = driverLicenseSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.thumbSizedInlineQueryResultOrNull(): + ThumbSizedInlineQueryResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbSizedInlineQueryResult -@PreviewFeature -inline fun SecureValue.driverLicenseSecureValueOrNull(): DriverLicenseSecureValue? = this as? DriverLicenseSecureValue +public inline fun InlineQueryResult.thumbSizedInlineQueryResultOrThrow(): + ThumbSizedInlineQueryResult = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbSizedInlineQueryResult -@PreviewFeature -inline fun SecureValue.driverLicenseSecureValueOrThrow(): DriverLicenseSecureValue = this as DriverLicenseSecureValue +public inline fun + InlineQueryResult.ifThumbSizedInlineQueryResult(block: (ThumbSizedInlineQueryResult) -> T): T? = + thumbSizedInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifIdentityCardSecureValue(block: (IdentityCardSecureValue) -> T) = identityCardSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.thumbedInlineQueryResultOrNull(): ThumbedInlineQueryResult? = + this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbedInlineQueryResult -@PreviewFeature -inline fun SecureValue.identityCardSecureValueOrNull(): IdentityCardSecureValue? = this as? IdentityCardSecureValue +public inline fun InlineQueryResult.thumbedInlineQueryResultOrThrow(): ThumbedInlineQueryResult = + this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbedInlineQueryResult -@PreviewFeature -inline fun SecureValue.identityCardSecureValueOrThrow(): IdentityCardSecureValue = this as IdentityCardSecureValue +public inline fun + InlineQueryResult.ifThumbedInlineQueryResult(block: (ThumbedInlineQueryResult) -> T): T? = + thumbedInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifIdentityWithReverseSideSecureValue(block: (IdentityWithReverseSideSecureValue) -> T) = identityWithReverseSideSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.thumbedWithMimeTypeInlineQueryResultOrNull(): + ThumbedWithMimeTypeInlineQueryResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbedWithMimeTypeInlineQueryResult -@PreviewFeature -inline fun SecureValue.identityWithReverseSideSecureValueOrNull(): IdentityWithReverseSideSecureValue? = - this as? IdentityWithReverseSideSecureValue +public inline fun InlineQueryResult.thumbedWithMimeTypeInlineQueryResultOrThrow(): + ThumbedWithMimeTypeInlineQueryResult = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.ThumbedWithMimeTypeInlineQueryResult -@PreviewFeature -inline fun SecureValue.identityWithReverseSideSecureValueOrThrow(): IdentityWithReverseSideSecureValue = - this as IdentityWithReverseSideSecureValue +public inline fun + InlineQueryResult.ifThumbedWithMimeTypeInlineQueryResult(block: (ThumbedWithMimeTypeInlineQueryResult) -> T): + T? = thumbedWithMimeTypeInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifInternalPassportSecureValue(block: (InternalPassportSecureValue) -> T) = internalPassportSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.titledInlineQueryResultOrNull(): TitledInlineQueryResult? = this + as? dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.TitledInlineQueryResult -@PreviewFeature -inline fun SecureValue.internalPassportSecureValueOrNull(): InternalPassportSecureValue? = - this as? InternalPassportSecureValue +public inline fun InlineQueryResult.titledInlineQueryResultOrThrow(): TitledInlineQueryResult = this + as dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.TitledInlineQueryResult -@PreviewFeature -inline fun SecureValue.internalPassportSecureValueOrThrow(): InternalPassportSecureValue = - this as InternalPassportSecureValue +public inline fun + InlineQueryResult.ifTitledInlineQueryResult(block: (TitledInlineQueryResult) -> T): T? = + titledInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifOtherDocumentsSecureValue(block: (OtherDocumentsSecureValue) -> T) = otherDocumentsSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.urlInlineQueryResultOrNull(): UrlInlineQueryResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.UrlInlineQueryResult -@PreviewFeature -inline fun SecureValue.otherDocumentsSecureValueOrNull(): OtherDocumentsSecureValue? = this as? OtherDocumentsSecureValue +public inline fun InlineQueryResult.urlInlineQueryResultOrThrow(): UrlInlineQueryResult = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.UrlInlineQueryResult -@PreviewFeature -inline fun SecureValue.otherDocumentsSecureValueOrThrow(): OtherDocumentsSecureValue = this as OtherDocumentsSecureValue +public inline fun InlineQueryResult.ifUrlInlineQueryResult(block: (UrlInlineQueryResult) -> T): + T? = urlInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifPassportRegistrationSecureValue(block: (PassportRegistrationSecureValue) -> T) = passportRegistrationSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.withInputMessageContentInlineQueryResultOrNull(): + WithInputMessageContentInlineQueryResult? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.WithInputMessageContentInlineQueryResult -@PreviewFeature -inline fun SecureValue.passportRegistrationSecureValueOrNull(): PassportRegistrationSecureValue? = - this as? PassportRegistrationSecureValue +public inline fun InlineQueryResult.withInputMessageContentInlineQueryResultOrThrow(): + WithInputMessageContentInlineQueryResult = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.WithInputMessageContentInlineQueryResult -@PreviewFeature -inline fun SecureValue.passportRegistrationSecureValueOrThrow(): PassportRegistrationSecureValue = - this as PassportRegistrationSecureValue +public inline fun + InlineQueryResult.ifWithInputMessageContentInlineQueryResult(block: (WithInputMessageContentInlineQueryResult) -> T): + T? = withInputMessageContentInlineQueryResultOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifPassportSecureValue(block: (PassportSecureValue) -> T) = passportSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultAudioOrNull(): InlineQueryResultAudio? = this + as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudio -@PreviewFeature -inline fun SecureValue.passportSecureValueOrNull(): PassportSecureValue? = this as? PassportSecureValue +public inline fun InlineQueryResult.inlineQueryResultAudioOrThrow(): InlineQueryResultAudio = this + as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudio -@PreviewFeature -inline fun SecureValue.passportSecureValueOrThrow(): PassportSecureValue = this as PassportSecureValue +public inline fun + InlineQueryResult.ifInlineQueryResultAudio(block: (InlineQueryResultAudio) -> T): T? = + inlineQueryResultAudioOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifPersonalDetailsSecureValue(block: (PersonalDetailsSecureValue) -> T) = personalDetailsSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultAudioCachedOrNull(): + InlineQueryResultAudioCached? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCached -@PreviewFeature -inline fun SecureValue.personalDetailsSecureValueOrNull(): PersonalDetailsSecureValue? = this as? PersonalDetailsSecureValue +public inline fun InlineQueryResult.inlineQueryResultAudioCachedOrThrow(): + InlineQueryResultAudioCached = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCached -@PreviewFeature -inline fun SecureValue.personalDetailsSecureValueOrThrow(): PersonalDetailsSecureValue = - this as PersonalDetailsSecureValue +public inline fun + InlineQueryResult.ifInlineQueryResultAudioCached(block: (InlineQueryResultAudioCached) -> T): T? + = inlineQueryResultAudioCachedOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifRentalAgreementSecureValue(block: (RentalAgreementSecureValue) -> T) = rentalAgreementSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultAudioCommonOrNull(): + InlineQueryResultAudioCommon? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCommon -@PreviewFeature -inline fun SecureValue.rentalAgreementSecureValueOrNull(): RentalAgreementSecureValue? = this as? RentalAgreementSecureValue +public inline fun InlineQueryResult.inlineQueryResultAudioCommonOrThrow(): + InlineQueryResultAudioCommon = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCommon -@PreviewFeature -inline fun SecureValue.rentalAgreementSecureValueOrThrow(): RentalAgreementSecureValue = - this as RentalAgreementSecureValue +public inline fun + InlineQueryResult.ifInlineQueryResultAudioCommon(block: (InlineQueryResultAudioCommon) -> T): T? + = inlineQueryResultAudioCommonOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifTemporalRegistrationSecureValue(block: (TemporalRegistrationSecureValue) -> T) = temporalRegistrationSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultDocumentOrNull(): InlineQueryResultDocument? = + this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocument -@PreviewFeature -inline fun SecureValue.temporalRegistrationSecureValueOrNull(): TemporalRegistrationSecureValue? = - this as? TemporalRegistrationSecureValue +public inline fun InlineQueryResult.inlineQueryResultDocumentOrThrow(): InlineQueryResultDocument = + this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocument -@PreviewFeature -inline fun SecureValue.temporalRegistrationSecureValueOrThrow(): TemporalRegistrationSecureValue = - this as TemporalRegistrationSecureValue +public inline fun + InlineQueryResult.ifInlineQueryResultDocument(block: (InlineQueryResultDocument) -> T): T? = + inlineQueryResultDocumentOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifUtilityBillSecureValue(block: (UtilityBillSecureValue) -> T) = utilityBillSecureValueOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultDocumentCachedOrNull(): + InlineQueryResultDocumentCached? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCached -@PreviewFeature -inline fun SecureValue.utilityBillSecureValueOrNull(): UtilityBillSecureValue? = this as? UtilityBillSecureValue +public inline fun InlineQueryResult.inlineQueryResultDocumentCachedOrThrow(): + InlineQueryResultDocumentCached = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCached -@PreviewFeature -inline fun SecureValue.utilityBillSecureValueOrThrow(): UtilityBillSecureValue = this as UtilityBillSecureValue +public inline fun + InlineQueryResult.ifInlineQueryResultDocumentCached(block: (InlineQueryResultDocumentCached) -> T): + T? = inlineQueryResultDocumentCachedOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifSecureValueIdentity(block: (SecureValueIdentity) -> T) = secureValueIdentityOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultDocumentCommonOrNull(): + InlineQueryResultDocumentCommon? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCommon -@PreviewFeature -inline fun SecureValue.secureValueIdentityOrNull(): SecureValueIdentity? = this as? SecureValueIdentity +public inline fun InlineQueryResult.inlineQueryResultDocumentCommonOrThrow(): + InlineQueryResultDocumentCommon = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCommon -@PreviewFeature -inline fun SecureValue.secureValueIdentityOrThrow(): SecureValueIdentity = this as SecureValueIdentity +public inline fun + InlineQueryResult.ifInlineQueryResultDocumentCommon(block: (InlineQueryResultDocumentCommon) -> T): + T? = inlineQueryResultDocumentCommonOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifSecureValueWithData(block: (SecureValueWithData) -> T) = secureValueWithDataOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultGifOrNull(): InlineQueryResultGif? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGif -@PreviewFeature -inline fun SecureValue.secureValueWithDataOrNull(): SecureValueWithData? = this as? SecureValueWithData +public inline fun InlineQueryResult.inlineQueryResultGifOrThrow(): InlineQueryResultGif = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGif -@PreviewFeature -inline fun SecureValue.secureValueWithDataOrThrow(): SecureValueWithData = this as SecureValueWithData +public inline fun InlineQueryResult.ifInlineQueryResultGif(block: (InlineQueryResultGif) -> T): + T? = inlineQueryResultGifOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifSecureValueWithFiles(block: (SecureValueWithFiles) -> T) = secureValueWithFilesOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultGifCachedOrNull(): InlineQueryResultGifCached? + = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCached -@PreviewFeature -inline fun SecureValue.secureValueWithFilesOrNull(): SecureValueWithFiles? = this as? SecureValueWithFiles +public inline fun InlineQueryResult.inlineQueryResultGifCachedOrThrow(): InlineQueryResultGifCached + = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCached -@PreviewFeature -inline fun SecureValue.secureValueWithFilesOrThrow(): SecureValueWithFiles = this as SecureValueWithFiles +public inline fun + InlineQueryResult.ifInlineQueryResultGifCached(block: (InlineQueryResultGifCached) -> T): T? = + inlineQueryResultGifCachedOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifSecureValueWithReverseSide(block: (SecureValueWithReverseSide) -> T) = secureValueWithReverseSideOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultGifCommonOrNull(): InlineQueryResultGifCommon? + = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCommon -@PreviewFeature -inline fun SecureValue.secureValueWithReverseSideOrNull(): SecureValueWithReverseSide? = this as? SecureValueWithReverseSide +public inline fun InlineQueryResult.inlineQueryResultGifCommonOrThrow(): InlineQueryResultGifCommon + = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCommon -@PreviewFeature -inline fun SecureValue.secureValueWithReverseSideOrThrow(): SecureValueWithReverseSide = - this as SecureValueWithReverseSide +public inline fun + InlineQueryResult.ifInlineQueryResultGifCommon(block: (InlineQueryResultGifCommon) -> T): T? = + inlineQueryResultGifCommonOrNull() ?.let(block) -@PreviewFeature -inline fun SecureValue.ifSecureValueWithTranslations(block: (SecureValueWithTranslations) -> T) = secureValueWithTranslationsOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifOrNull(): InlineQueryResultMpeg4Gif? = + this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4Gif -@PreviewFeature -inline fun SecureValue.secureValueWithTranslationsOrNull(): SecureValueWithTranslations? = - this as? SecureValueWithTranslations +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifOrThrow(): InlineQueryResultMpeg4Gif = + this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4Gif -@PreviewFeature -inline fun SecureValue.secureValueWithTranslationsOrThrow(): SecureValueWithTranslations = - this as SecureValueWithTranslations +public inline fun + InlineQueryResult.ifInlineQueryResultMpeg4Gif(block: (InlineQueryResultMpeg4Gif) -> T): T? = + inlineQueryResultMpeg4GifOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifAnonymousGroupContentMessageImpl(block: (AnonymousGroupContentMessageImpl) -> T) = anonymousGroupContentMessageImplOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifCachedOrNull(): + InlineQueryResultMpeg4GifCached? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCached -@PreviewFeature -inline fun Message.anonymousGroupContentMessageImplOrNull(): AnonymousGroupContentMessageImpl? = - this as? AnonymousGroupContentMessageImpl +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifCachedOrThrow(): + InlineQueryResultMpeg4GifCached = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCached -@PreviewFeature -inline fun Message.anonymousGroupContentMessageImplOrThrow(): AnonymousGroupContentMessageImpl = - this as AnonymousGroupContentMessageImpl +public inline fun + InlineQueryResult.ifInlineQueryResultMpeg4GifCached(block: (InlineQueryResultMpeg4GifCached) -> T): + T? = inlineQueryResultMpeg4GifCachedOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifChannelContentMessageImpl(block: (UnconnectedFromChannelGroupContentMessageImpl) -> T) = channelContentMessageImplOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifCommonOrNull(): + InlineQueryResultMpeg4GifCommon? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCommon -@PreviewFeature -inline fun Message.channelContentMessageImplOrNull(): UnconnectedFromChannelGroupContentMessageImpl? = - this as? UnconnectedFromChannelGroupContentMessageImpl +public inline fun InlineQueryResult.inlineQueryResultMpeg4GifCommonOrThrow(): + InlineQueryResultMpeg4GifCommon = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCommon -@PreviewFeature -inline fun Message.channelContentMessageImplOrThrow(): UnconnectedFromChannelGroupContentMessageImpl = - this as UnconnectedFromChannelGroupContentMessageImpl +public inline fun + InlineQueryResult.ifInlineQueryResultMpeg4GifCommon(block: (InlineQueryResultMpeg4GifCommon) -> T): + T? = inlineQueryResultMpeg4GifCommonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPassportMessage(block: (PassportMessage) -> T) = passportMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultPhotoOrNull(): InlineQueryResultPhoto? = this + as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhoto -@PreviewFeature -inline fun Message.passportMessageOrNull(): PassportMessage? = this as? PassportMessage +public inline fun InlineQueryResult.inlineQueryResultPhotoOrThrow(): InlineQueryResultPhoto = this + as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhoto -@PreviewFeature -inline fun Message.passportMessageOrThrow(): PassportMessage = this as PassportMessage +public inline fun + InlineQueryResult.ifInlineQueryResultPhoto(block: (InlineQueryResultPhoto) -> T): T? = + inlineQueryResultPhotoOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPrivateContentMessageImpl(block: (PrivateContentMessageImpl) -> T) = privateContentMessageImplOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultPhotoCachedOrNull(): + InlineQueryResultPhotoCached? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCached -@PreviewFeature -inline fun Message.privateContentMessageImplOrNull(): PrivateContentMessageImpl? = - this as? PrivateContentMessageImpl +public inline fun InlineQueryResult.inlineQueryResultPhotoCachedOrThrow(): + InlineQueryResultPhotoCached = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCached -@PreviewFeature -inline fun Message.privateContentMessageImplOrThrow(): PrivateContentMessageImpl = - this as PrivateContentMessageImpl +public inline fun + InlineQueryResult.ifInlineQueryResultPhotoCached(block: (InlineQueryResultPhotoCached) -> T): T? + = inlineQueryResultPhotoCachedOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifChannelEventMessage(block: (ChannelEventMessage) -> T) = channelEventMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultPhotoCommonOrNull(): + InlineQueryResultPhotoCommon? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCommon -@PreviewFeature -inline fun Message.channelEventMessageOrNull(): ChannelEventMessage? = - this as? ChannelEventMessage +public inline fun InlineQueryResult.inlineQueryResultPhotoCommonOrThrow(): + InlineQueryResultPhotoCommon = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCommon -@PreviewFeature -inline fun Message.channelEventMessageOrThrow(): ChannelEventMessage = - this as ChannelEventMessage +public inline fun + InlineQueryResult.ifInlineQueryResultPhotoCommon(block: (InlineQueryResultPhotoCommon) -> T): T? + = inlineQueryResultPhotoCommonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifChannelMediaGroupMessage(block: (ChannelMediaGroupMessage) -> T) = channelMediaGroupMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVideoOrNull(): InlineQueryResultVideo? = this + as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideo -@PreviewFeature -inline fun Message.channelMediaGroupMessageOrNull(): ChannelMediaGroupMessage? = - this as? ChannelMediaGroupMessage +public inline fun InlineQueryResult.inlineQueryResultVideoOrThrow(): InlineQueryResultVideo = this + as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideo -@PreviewFeature -inline fun Message.channelMediaGroupMessageOrThrow(): ChannelMediaGroupMessage = - this as ChannelMediaGroupMessage +public inline fun + InlineQueryResult.ifInlineQueryResultVideo(block: (InlineQueryResultVideo) -> T): T? = + inlineQueryResultVideoOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifCommonGroupEventMessage(block: (CommonGroupEventMessage) -> T) = commonGroupEventMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVideoCachedOrNull(): + InlineQueryResultVideoCached? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCached -@PreviewFeature -inline fun Message.commonGroupEventMessageOrNull(): CommonGroupEventMessage? = - this as? CommonGroupEventMessage +public inline fun InlineQueryResult.inlineQueryResultVideoCachedOrThrow(): + InlineQueryResultVideoCached = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCached -@PreviewFeature -inline fun Message.commonGroupEventMessageOrThrow(): CommonGroupEventMessage = - this as CommonGroupEventMessage +public inline fun + InlineQueryResult.ifInlineQueryResultVideoCached(block: (InlineQueryResultVideoCached) -> T): T? + = inlineQueryResultVideoCachedOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifCommonMediaGroupMessage(block: (CommonMediaGroupMessage) -> T) = commonMediaGroupMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVideoCommonOrNull(): + InlineQueryResultVideoCommon? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCommon -@PreviewFeature -inline fun Message.commonMediaGroupMessageOrNull(): CommonMediaGroupMessage? = - this as? CommonMediaGroupMessage +public inline fun InlineQueryResult.inlineQueryResultVideoCommonOrThrow(): + InlineQueryResultVideoCommon = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCommon -@PreviewFeature -inline fun Message.commonMediaGroupMessageOrThrow(): CommonMediaGroupMessage = - this as CommonMediaGroupMessage +public inline fun + InlineQueryResult.ifInlineQueryResultVideoCommon(block: (InlineQueryResultVideoCommon) -> T): T? + = inlineQueryResultVideoCommonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifCommonSupergroupEventMessage(block: (CommonSupergroupEventMessage) -> T) = commonSupergroupEventMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVoiceOrNull(): InlineQueryResultVoice? = this + as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoice -@PreviewFeature -inline fun Message.commonSupergroupEventMessageOrNull(): CommonSupergroupEventMessage? = - this as? CommonSupergroupEventMessage +public inline fun InlineQueryResult.inlineQueryResultVoiceOrThrow(): InlineQueryResultVoice = this + as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoice -@PreviewFeature -inline fun Message.commonSupergroupEventMessageOrThrow(): CommonSupergroupEventMessage = - this as CommonSupergroupEventMessage +public inline fun + InlineQueryResult.ifInlineQueryResultVoice(block: (InlineQueryResultVoice) -> T): T? = + inlineQueryResultVoiceOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifAnonymousGroupContentMessage(block: (AnonymousGroupContentMessage) -> T) = anonymousGroupContentMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVoiceCachedOrNull(): + InlineQueryResultVoiceCached? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCached -@PreviewFeature -inline fun Message.anonymousGroupContentMessageOrNull(): AnonymousGroupContentMessage? = - this as? AnonymousGroupContentMessage +public inline fun InlineQueryResult.inlineQueryResultVoiceCachedOrThrow(): + InlineQueryResultVoiceCached = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCached -@PreviewFeature -inline fun Message.anonymousGroupContentMessageOrThrow(): AnonymousGroupContentMessage = - this as AnonymousGroupContentMessage +public inline fun + InlineQueryResult.ifInlineQueryResultVoiceCached(block: (InlineQueryResultVoiceCached) -> T): T? + = inlineQueryResultVoiceCachedOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifChannelContentMessage(block: (ChannelContentMessage) -> T) = channelContentMessageOrNull() ?.let(block) +public inline fun InlineQueryResult.inlineQueryResultVoiceCommonOrNull(): + InlineQueryResultVoiceCommon? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCommon -@PreviewFeature -inline fun Message.channelContentMessageOrNull(): ChannelContentMessage? = - this as? ChannelContentMessage +public inline fun InlineQueryResult.inlineQueryResultVoiceCommonOrThrow(): + InlineQueryResultVoiceCommon = this as + dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCommon -@PreviewFeature -inline fun Message.channelContentMessageOrThrow(): ChannelContentMessage = - this as ChannelContentMessage +public inline fun + InlineQueryResult.ifInlineQueryResultVoiceCommon(block: (InlineQueryResultVoiceCommon) -> T): T? + = inlineQueryResultVoiceCommonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifConnectedFromChannelGroupContentMessage(block: (ConnectedFromChannelGroupContentMessage) -> T) = connectedFromChannelGroupContentMessageOrNull() ?.let(block) +public inline fun InputMessageContent.inputContactMessageContentOrNull(): + InputContactMessageContent? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputContactMessageContent -@PreviewFeature -inline fun Message.connectedFromChannelGroupContentMessageOrNull(): ConnectedFromChannelGroupContentMessage? = - this as? ConnectedFromChannelGroupContentMessage +public inline fun InputMessageContent.inputContactMessageContentOrThrow(): + InputContactMessageContent = this as + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputContactMessageContent -@PreviewFeature -inline fun Message.connectedFromChannelGroupContentMessageOrThrow(): ConnectedFromChannelGroupContentMessage = - this as ConnectedFromChannelGroupContentMessage +public inline fun + InputMessageContent.ifInputContactMessageContent(block: (InputContactMessageContent) -> T): T? = + inputContactMessageContentOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifUnconnectedFromChannelGroupContentMessage(block: (UnconnectedFromChannelGroupContentMessage) -> T) = unconnectedFromChannelGroupContentMessageOrNull() ?.let(block) +public inline fun InputMessageContent.inputInvoiceMessageContentOrNull(): + InputInvoiceMessageContent? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputInvoiceMessageContent -@PreviewFeature -inline fun Message.unconnectedFromChannelGroupContentMessageOrNull(): UnconnectedFromChannelGroupContentMessage? = - this as? UnconnectedFromChannelGroupContentMessage +public inline fun InputMessageContent.inputInvoiceMessageContentOrThrow(): + InputInvoiceMessageContent = this as + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputInvoiceMessageContent -@PreviewFeature -inline fun Message.unconnectedFromChannelGroupContentMessageOrThrow(): UnconnectedFromChannelGroupContentMessage = - this as UnconnectedFromChannelGroupContentMessage +public inline fun + InputMessageContent.ifInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T): T? = + inputInvoiceMessageContentOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifChatEventMessage(block: (ChatEventMessage) -> T) = chatEventMessageOrNull() ?.let(block) +public inline fun InputMessageContent.inputLocationMessageContentOrNull(): + InputLocationMessageContent? = this as? + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputLocationMessageContent -@PreviewFeature -inline fun Message.chatEventMessageOrNull(): ChatEventMessage? = this as? ChatEventMessage +public inline fun InputMessageContent.inputLocationMessageContentOrThrow(): + InputLocationMessageContent = this as + dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputLocationMessageContent -@PreviewFeature -inline fun Message.chatEventMessageOrThrow(): ChatEventMessage = this as ChatEventMessage +public inline fun + InputMessageContent.ifInputLocationMessageContent(block: (InputLocationMessageContent) -> T): T? + = inputLocationMessageContentOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifCommonGroupContentMessage(block: (CommonGroupContentMessage) -> T) = commonGroupContentMessageOrNull() ?.let(block) +public inline fun InputMessageContent.inputTextMessageContentOrNull(): InputTextMessageContent? = + this as? dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputTextMessageContent -@PreviewFeature -inline fun Message.commonGroupContentMessageOrNull(): CommonGroupContentMessage? = - this as? CommonGroupContentMessage +public inline fun InputMessageContent.inputTextMessageContentOrThrow(): InputTextMessageContent = + this as dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputTextMessageContent -@PreviewFeature -inline fun Message.commonGroupContentMessageOrThrow(): CommonGroupContentMessage = - this as CommonGroupContentMessage +public inline fun + InputMessageContent.ifInputTextMessageContent(block: (InputTextMessageContent) -> T): T? = + inputTextMessageContentOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifCommonMessage(block: (CommonMessage) -> T) = commonMessageOrNull() ?.let(block) +public inline fun InputMessageContent.inputVenueMessageContentOrNull(): InputVenueMessageContent? = + this as? dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputVenueMessageContent -@PreviewFeature -inline fun Message.commonMessageOrNull(): CommonMessage? = this as? CommonMessage +public inline fun InputMessageContent.inputVenueMessageContentOrThrow(): InputVenueMessageContent = + this as dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputVenueMessageContent -@PreviewFeature -inline fun Message.commonMessageOrThrow(): CommonMessage = this as CommonMessage +public inline fun + InputMessageContent.ifInputVenueMessageContent(block: (InputVenueMessageContent) -> T): T? = + inputVenueMessageContentOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifContentMessage(block: (ContentMessage) -> T) = contentMessageOrNull() ?.let(block) +public inline fun BotAction.typingActionOrNull(): TypingAction? = this as? + dev.inmo.tgbotapi.types.actions.TypingAction -@PreviewFeature -inline fun Message.contentMessageOrNull(): ContentMessage? = this as? ContentMessage +public inline fun BotAction.typingActionOrThrow(): TypingAction = this as + dev.inmo.tgbotapi.types.actions.TypingAction -@PreviewFeature -inline fun Message.contentMessageOrThrow(): ContentMessage = this as ContentMessage +public inline fun BotAction.ifTypingAction(block: (TypingAction) -> T): T? = + typingActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifFromChannelGroupContentMessage(block: (FromChannelGroupContentMessage) -> T) = fromChannelGroupContentMessageOrNull() ?.let(block) +public inline fun BotAction.uploadPhotoActionOrNull(): UploadPhotoAction? = this as? + dev.inmo.tgbotapi.types.actions.UploadPhotoAction -@PreviewFeature -inline fun Message.fromChannelGroupContentMessageOrNull(): FromChannelGroupContentMessage? = - this as? FromChannelGroupContentMessage +public inline fun BotAction.uploadPhotoActionOrThrow(): UploadPhotoAction = this as + dev.inmo.tgbotapi.types.actions.UploadPhotoAction -@PreviewFeature -inline fun Message.fromChannelGroupContentMessageOrThrow(): FromChannelGroupContentMessage = - this as FromChannelGroupContentMessage +public inline fun BotAction.ifUploadPhotoAction(block: (UploadPhotoAction) -> T): T? = + uploadPhotoActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifGroupEventMessage(block: (GroupEventMessage) -> T) = groupEventMessageOrNull() ?.let(block) +public inline fun BotAction.recordVideoActionOrNull(): RecordVideoAction? = this as? + dev.inmo.tgbotapi.types.actions.RecordVideoAction -@PreviewFeature -inline fun Message.groupEventMessageOrNull(): GroupEventMessage? = this as? GroupEventMessage +public inline fun BotAction.recordVideoActionOrThrow(): RecordVideoAction = this as + dev.inmo.tgbotapi.types.actions.RecordVideoAction -@PreviewFeature -inline fun Message.groupEventMessageOrThrow(): GroupEventMessage = this as GroupEventMessage +public inline fun BotAction.ifRecordVideoAction(block: (RecordVideoAction) -> T): T? = + recordVideoActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPrivateEventMessage(block: (PrivateEventMessage) -> T) = privateEventMessageOrNull() ?.let(block) +public inline fun BotAction.uploadVideoActionOrNull(): UploadVideoAction? = this as? + dev.inmo.tgbotapi.types.actions.UploadVideoAction -@PreviewFeature -inline fun Message.privateEventMessageOrNull(): PrivateEventMessage? = this as? PrivateEventMessage +public inline fun BotAction.uploadVideoActionOrThrow(): UploadVideoAction = this as + dev.inmo.tgbotapi.types.actions.UploadVideoAction -@PreviewFeature -inline fun Message.privateEventMessageOrThrow(): PrivateEventMessage = this as PrivateEventMessage +public inline fun BotAction.ifUploadVideoAction(block: (UploadVideoAction) -> T): T? = + uploadVideoActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifGroupContentMessage(block: (GroupContentMessage) -> T) = groupContentMessageOrNull() ?.let(block) +public inline fun BotAction.recordVoiceActionOrNull(): RecordVoiceAction? = this as? + dev.inmo.tgbotapi.types.actions.RecordVoiceAction -@PreviewFeature -inline fun Message.groupContentMessageOrNull(): GroupContentMessage? = - this as? GroupContentMessage +public inline fun BotAction.recordVoiceActionOrThrow(): RecordVoiceAction = this as + dev.inmo.tgbotapi.types.actions.RecordVoiceAction -@PreviewFeature -inline fun Message.groupContentMessageOrThrow(): GroupContentMessage = - this as GroupContentMessage +public inline fun BotAction.ifRecordVoiceAction(block: (RecordVoiceAction) -> T): T? = + recordVoiceActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifMediaGroupMessage(block: (MediaGroupMessage) -> T) = mediaGroupMessageOrNull() ?.let(block) +public inline fun BotAction.uploadVoiceActionOrNull(): UploadVoiceAction? = this as? + dev.inmo.tgbotapi.types.actions.UploadVoiceAction -@PreviewFeature -inline fun Message.mediaGroupMessageOrNull(): MediaGroupMessage? = - this as? MediaGroupMessage +public inline fun BotAction.uploadVoiceActionOrThrow(): UploadVoiceAction = this as + dev.inmo.tgbotapi.types.actions.UploadVoiceAction -@PreviewFeature -inline fun Message.mediaGroupMessageOrThrow(): MediaGroupMessage = - this as MediaGroupMessage +public inline fun BotAction.ifUploadVoiceAction(block: (UploadVoiceAction) -> T): T? = + uploadVoiceActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPossiblyEditedMessage(block: (PossiblyEditedMessage) -> T) = possiblyEditedMessageOrNull() ?.let(block) +public inline fun BotAction.uploadDocumentActionOrNull(): UploadDocumentAction? = this as? + dev.inmo.tgbotapi.types.actions.UploadDocumentAction -@PreviewFeature -inline fun Message.possiblyEditedMessageOrNull(): PossiblyEditedMessage? = this as? PossiblyEditedMessage +public inline fun BotAction.uploadDocumentActionOrThrow(): UploadDocumentAction = this as + dev.inmo.tgbotapi.types.actions.UploadDocumentAction -@PreviewFeature -inline fun Message.possiblyEditedMessageOrThrow(): PossiblyEditedMessage = this as PossiblyEditedMessage +public inline fun BotAction.ifUploadDocumentAction(block: (UploadDocumentAction) -> T): T? = + uploadDocumentActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPossiblyReplyMessage(block: (PossiblyReplyMessage) -> T) = possiblyReplyMessageOrNull() ?.let(block) +public inline fun BotAction.findLocationActionOrNull(): FindLocationAction? = this as? + dev.inmo.tgbotapi.types.actions.FindLocationAction -@PreviewFeature -inline fun Message.possiblyReplyMessageOrNull(): PossiblyReplyMessage? = this as? PossiblyReplyMessage +public inline fun BotAction.findLocationActionOrThrow(): FindLocationAction = this as + dev.inmo.tgbotapi.types.actions.FindLocationAction -@PreviewFeature -inline fun Message.possiblyReplyMessageOrThrow(): PossiblyReplyMessage = this as PossiblyReplyMessage +public inline fun BotAction.ifFindLocationAction(block: (FindLocationAction) -> T): T? = + findLocationActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPossiblyForwardedMessage(block: (PossiblyForwardedMessage) -> T) = possiblyForwardedMessageOrNull() ?.let(block) +public inline fun BotAction.recordVideoNoteActionOrNull(): RecordVideoNoteAction? = this as? + dev.inmo.tgbotapi.types.actions.RecordVideoNoteAction -@PreviewFeature -inline fun Message.possiblyForwardedMessageOrNull(): PossiblyForwardedMessage? = this as? PossiblyForwardedMessage +public inline fun BotAction.recordVideoNoteActionOrThrow(): RecordVideoNoteAction = this as + dev.inmo.tgbotapi.types.actions.RecordVideoNoteAction -@PreviewFeature -inline fun Message.possiblyForwardedMessageOrThrow(): PossiblyForwardedMessage = this as PossiblyForwardedMessage +public inline fun BotAction.ifRecordVideoNoteAction(block: (RecordVideoNoteAction) -> T): T? = + recordVideoNoteActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPossiblyPaymentMessage(block: (PossiblyPaymentMessage) -> T) = possiblyPaymentMessageOrNull() ?.let(block) +public inline fun BotAction.uploadVideoNoteActionOrNull(): UploadVideoNoteAction? = this as? + dev.inmo.tgbotapi.types.actions.UploadVideoNoteAction -@PreviewFeature -inline fun Message.possiblyPaymentMessageOrNull(): PossiblyPaymentMessage? = this as? PossiblyPaymentMessage +public inline fun BotAction.uploadVideoNoteActionOrThrow(): UploadVideoNoteAction = this as + dev.inmo.tgbotapi.types.actions.UploadVideoNoteAction -@PreviewFeature -inline fun Message.possiblyPaymentMessageOrThrow(): PossiblyPaymentMessage = this as PossiblyPaymentMessage +public inline fun BotAction.ifUploadVideoNoteAction(block: (UploadVideoNoteAction) -> T): T? = + uploadVideoNoteActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPrivateContentMessage(block: (PrivateContentMessage) -> T) = privateContentMessageOrNull() ?.let(block) +public inline fun BotAction.chooseStickerActionOrNull(): ChooseStickerAction? = this as? + dev.inmo.tgbotapi.types.actions.ChooseStickerAction -@PreviewFeature -inline fun Message.privateContentMessageOrNull(): PrivateContentMessage? = - this as? PrivateContentMessage +public inline fun BotAction.chooseStickerActionOrThrow(): ChooseStickerAction = this as + dev.inmo.tgbotapi.types.actions.ChooseStickerAction -@PreviewFeature -inline fun Message.privateContentMessageOrThrow(): PrivateContentMessage = - this as PrivateContentMessage +public inline fun BotAction.ifChooseStickerAction(block: (ChooseStickerAction) -> T): T? = + chooseStickerActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPublicContentMessage(block: (PublicContentMessage) -> T) = publicContentMessageOrNull() ?.let(block) +public inline fun BotAction.customBotActionOrNull(): CustomBotAction? = this as? + dev.inmo.tgbotapi.types.actions.CustomBotAction -@PreviewFeature -inline fun Message.publicContentMessageOrNull(): PublicContentMessage? = - this as? PublicContentMessage +public inline fun BotAction.customBotActionOrThrow(): CustomBotAction = this as + dev.inmo.tgbotapi.types.actions.CustomBotAction -@PreviewFeature -inline fun Message.publicContentMessageOrThrow(): PublicContentMessage = - this as PublicContentMessage +public inline fun BotAction.ifCustomBotAction(block: (CustomBotAction) -> T): T? = + customBotActionOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifSignedMessage(block: (SignedMessage) -> T) = signedMessageOrNull() ?.let(block) +public inline fun InlineKeyboardButton.unknownInlineKeyboardButtonOrNull(): + UnknownInlineKeyboardButton? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.UnknownInlineKeyboardButton -@PreviewFeature -inline fun Message.signedMessageOrNull(): SignedMessage? = this as? SignedMessage +public inline fun InlineKeyboardButton.unknownInlineKeyboardButtonOrThrow(): + UnknownInlineKeyboardButton = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.UnknownInlineKeyboardButton -@PreviewFeature -inline fun Message.signedMessageOrThrow(): SignedMessage = this as SignedMessage +public inline fun + InlineKeyboardButton.ifUnknownInlineKeyboardButton(block: (UnknownInlineKeyboardButton) -> T): + T? = unknownInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifSupergroupEventMessage(block: (SupergroupEventMessage) -> T) = supergroupEventMessageOrNull() ?.let(block) +public inline fun InlineKeyboardButton.payInlineKeyboardButtonOrNull(): PayInlineKeyboardButton? = + this as? dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.PayInlineKeyboardButton -@PreviewFeature -inline fun Message.supergroupEventMessageOrNull(): SupergroupEventMessage? = - this as? SupergroupEventMessage +public inline fun InlineKeyboardButton.payInlineKeyboardButtonOrThrow(): PayInlineKeyboardButton = + this as dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.PayInlineKeyboardButton -@PreviewFeature -inline fun Message.supergroupEventMessageOrThrow(): SupergroupEventMessage = - this as SupergroupEventMessage +public inline fun + InlineKeyboardButton.ifPayInlineKeyboardButton(block: (PayInlineKeyboardButton) -> T): T? = + payInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifUnknownMessageType(block: (UnknownMessageType) -> T) = unknownMessageTypeOrNull() ?.let(block) +public inline fun InlineKeyboardButton.callbackDataInlineKeyboardButtonOrNull(): + CallbackDataInlineKeyboardButton? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton -@PreviewFeature -inline fun Message.unknownMessageTypeOrNull(): UnknownMessageType? = this as? UnknownMessageType +public inline fun InlineKeyboardButton.callbackDataInlineKeyboardButtonOrThrow(): + CallbackDataInlineKeyboardButton = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton -@PreviewFeature -inline fun Message.unknownMessageTypeOrThrow(): UnknownMessageType = this as UnknownMessageType +public inline fun + InlineKeyboardButton.ifCallbackDataInlineKeyboardButton(block: (CallbackDataInlineKeyboardButton) -> T): + T? = callbackDataInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifPossiblySentViaBotCommonMessage(block: (PossiblySentViaBotCommonMessage) -> T) = possiblySentViaBotCommonMessageOrNull() ?.let(block) +public inline fun InlineKeyboardButton.callbackGameInlineKeyboardButtonOrNull(): + CallbackGameInlineKeyboardButton? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackGameInlineKeyboardButton -@PreviewFeature -inline fun Message.possiblySentViaBotCommonMessageOrNull(): PossiblySentViaBotCommonMessage? = - this as? PossiblySentViaBotCommonMessage +public inline fun InlineKeyboardButton.callbackGameInlineKeyboardButtonOrThrow(): + CallbackGameInlineKeyboardButton = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackGameInlineKeyboardButton -@PreviewFeature -inline fun Message.possiblySentViaBotCommonMessageOrThrow(): PossiblySentViaBotCommonMessage = - this as PossiblySentViaBotCommonMessage +public inline fun + InlineKeyboardButton.ifCallbackGameInlineKeyboardButton(block: (CallbackGameInlineKeyboardButton) -> T): + T? = callbackGameInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun Message.ifFromUserMessage(block: (FromUserMessage) -> T) = fromUserMessageOrNull() ?.let(block) +public inline fun InlineKeyboardButton.loginURLInlineKeyboardButtonOrNull(): + LoginURLInlineKeyboardButton? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.LoginURLInlineKeyboardButton -@PreviewFeature -inline fun Message.fromUserMessageOrNull(): FromUserMessage? = this as? FromUserMessage +public inline fun InlineKeyboardButton.loginURLInlineKeyboardButtonOrThrow(): + LoginURLInlineKeyboardButton = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.LoginURLInlineKeyboardButton -@PreviewFeature -inline fun Message.fromUserMessageOrThrow(): FromUserMessage = this as FromUserMessage +public inline fun + InlineKeyboardButton.ifLoginURLInlineKeyboardButton(block: (LoginURLInlineKeyboardButton) -> T): + T? = loginURLInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifFindLocationAction(block: (FindLocationAction) -> T) = findLocationActionOrNull() ?.let(block) +public inline fun InlineKeyboardButton.switchInlineQueryCurrentChatInlineKeyboardButtonOrNull(): + SwitchInlineQueryCurrentChatInlineKeyboardButton? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryCurrentChatInlineKeyboardButton -@PreviewFeature -inline fun BotAction.findLocationActionOrNull(): FindLocationAction? = this as? FindLocationAction +public inline fun InlineKeyboardButton.switchInlineQueryCurrentChatInlineKeyboardButtonOrThrow(): + SwitchInlineQueryCurrentChatInlineKeyboardButton = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryCurrentChatInlineKeyboardButton -@PreviewFeature -inline fun BotAction.findLocationActionOrThrow(): FindLocationAction = this as FindLocationAction +public inline fun + InlineKeyboardButton.ifSwitchInlineQueryCurrentChatInlineKeyboardButton(block: (SwitchInlineQueryCurrentChatInlineKeyboardButton) -> T): + T? = switchInlineQueryCurrentChatInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifRecordVoiceAction(block: (RecordVoiceAction) -> T) = recordVoiceActionOrNull() ?.let(block) +public inline fun InlineKeyboardButton.switchInlineQueryInlineKeyboardButtonOrNull(): + SwitchInlineQueryInlineKeyboardButton? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryInlineKeyboardButton -@PreviewFeature -inline fun BotAction.recordVoiceActionOrNull(): RecordVoiceAction? = this as? RecordVoiceAction +public inline fun InlineKeyboardButton.switchInlineQueryInlineKeyboardButtonOrThrow(): + SwitchInlineQueryInlineKeyboardButton = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryInlineKeyboardButton -@PreviewFeature -inline fun BotAction.recordVoiceActionOrThrow(): RecordVoiceAction = this as RecordVoiceAction +public inline fun + InlineKeyboardButton.ifSwitchInlineQueryInlineKeyboardButton(block: (SwitchInlineQueryInlineKeyboardButton) -> T): + T? = switchInlineQueryInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifRecordVideoAction(block: (RecordVideoAction) -> T) = recordVideoActionOrNull() ?.let(block) +public inline fun InlineKeyboardButton.uRLInlineKeyboardButtonOrNull(): URLInlineKeyboardButton? = + this as? dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.URLInlineKeyboardButton -@PreviewFeature -inline fun BotAction.recordVideoActionOrNull(): RecordVideoAction? = this as? RecordVideoAction +public inline fun InlineKeyboardButton.uRLInlineKeyboardButtonOrThrow(): URLInlineKeyboardButton = + this as dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.URLInlineKeyboardButton -@PreviewFeature -inline fun BotAction.recordVideoActionOrThrow(): RecordVideoAction = this as RecordVideoAction +public inline fun + InlineKeyboardButton.ifURLInlineKeyboardButton(block: (URLInlineKeyboardButton) -> T): T? = + uRLInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifRecordVideoNoteAction(block: (RecordVideoNoteAction) -> T) = recordVideoNoteActionOrNull() ?.let(block) +public inline fun InlineKeyboardButton.webAppInlineKeyboardButtonOrNull(): + WebAppInlineKeyboardButton? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.WebAppInlineKeyboardButton -@PreviewFeature -inline fun BotAction.recordVideoNoteActionOrNull(): RecordVideoNoteAction? = this as? RecordVideoNoteAction +public inline fun InlineKeyboardButton.webAppInlineKeyboardButtonOrThrow(): + WebAppInlineKeyboardButton = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.WebAppInlineKeyboardButton -@PreviewFeature -inline fun BotAction.recordVideoNoteActionOrThrow(): RecordVideoNoteAction = this as RecordVideoNoteAction +public inline fun + InlineKeyboardButton.ifWebAppInlineKeyboardButton(block: (WebAppInlineKeyboardButton) -> T): T? + = webAppInlineKeyboardButtonOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifTypingAction(block: (TypingAction) -> T) = typingActionOrNull() ?.let(block) +public inline fun KeyboardMarkup.inlineKeyboardMarkupOrNull(): InlineKeyboardMarkup? = this as? + dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -@PreviewFeature -inline fun BotAction.typingActionOrNull(): TypingAction? = this as? TypingAction +public inline fun KeyboardMarkup.inlineKeyboardMarkupOrThrow(): InlineKeyboardMarkup = this as + dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -@PreviewFeature -inline fun BotAction.typingActionOrThrow(): TypingAction = this as TypingAction +public inline fun KeyboardMarkup.ifInlineKeyboardMarkup(block: (InlineKeyboardMarkup) -> T): T? + = inlineKeyboardMarkupOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifChooseStickerAction(block: (ChooseStickerAction) -> T) = chooseStickerActionOrNull() ?.let(block) +public inline fun KeyboardMarkup.replyForceOrNull(): ReplyForce? = this as? + dev.inmo.tgbotapi.types.buttons.ReplyForce -@PreviewFeature -inline fun BotAction.chooseStickerActionOrNull(): ChooseStickerAction? = this as? ChooseStickerAction +public inline fun KeyboardMarkup.replyForceOrThrow(): ReplyForce = this as + dev.inmo.tgbotapi.types.buttons.ReplyForce -@PreviewFeature -inline fun BotAction.chooseStickerActionOrThrow(): ChooseStickerAction = this as ChooseStickerAction +public inline fun KeyboardMarkup.ifReplyForce(block: (ReplyForce) -> T): T? = replyForceOrNull() + ?.let(block) -@PreviewFeature -inline fun BotAction.ifUploadVoiceAction(block: (UploadVoiceAction) -> T) = uploadVoiceActionOrNull() ?.let(block) +public inline fun KeyboardMarkup.replyKeyboardMarkupOrNull(): ReplyKeyboardMarkup? = this as? + dev.inmo.tgbotapi.types.buttons.ReplyKeyboardMarkup -@PreviewFeature -inline fun BotAction.uploadVoiceActionOrNull(): UploadVoiceAction? = this as? UploadVoiceAction +public inline fun KeyboardMarkup.replyKeyboardMarkupOrThrow(): ReplyKeyboardMarkup = this as + dev.inmo.tgbotapi.types.buttons.ReplyKeyboardMarkup -@PreviewFeature -inline fun BotAction.uploadVoiceActionOrThrow(): UploadVoiceAction = this as UploadVoiceAction +public inline fun KeyboardMarkup.ifReplyKeyboardMarkup(block: (ReplyKeyboardMarkup) -> T): T? = + replyKeyboardMarkupOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifUploadDocumentAction(block: (UploadDocumentAction) -> T) = uploadDocumentActionOrNull() ?.let(block) +public inline fun KeyboardMarkup.replyKeyboardRemoveOrNull(): ReplyKeyboardRemove? = this as? + dev.inmo.tgbotapi.types.buttons.ReplyKeyboardRemove -@PreviewFeature -inline fun BotAction.uploadDocumentActionOrNull(): UploadDocumentAction? = this as? UploadDocumentAction +public inline fun KeyboardMarkup.replyKeyboardRemoveOrThrow(): ReplyKeyboardRemove = this as + dev.inmo.tgbotapi.types.buttons.ReplyKeyboardRemove -@PreviewFeature -inline fun BotAction.uploadDocumentActionOrThrow(): UploadDocumentAction = this as UploadDocumentAction +public inline fun KeyboardMarkup.ifReplyKeyboardRemove(block: (ReplyKeyboardRemove) -> T): T? = + replyKeyboardRemoveOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifUploadPhotoAction(block: (UploadPhotoAction) -> T) = uploadPhotoActionOrNull() ?.let(block) +public inline fun Chat.channelChatOrNull(): ChannelChat? = this as? + dev.inmo.tgbotapi.types.chat.ChannelChat -@PreviewFeature -inline fun BotAction.uploadPhotoActionOrNull(): UploadPhotoAction? = this as? UploadPhotoAction +public inline fun Chat.channelChatOrThrow(): ChannelChat = this as + dev.inmo.tgbotapi.types.chat.ChannelChat -@PreviewFeature -inline fun BotAction.uploadPhotoActionOrThrow(): UploadPhotoAction = this as UploadPhotoAction +public inline fun Chat.ifChannelChat(block: (ChannelChat) -> T): T? = channelChatOrNull() + ?.let(block) -@PreviewFeature -inline fun BotAction.ifUploadVideoAction(block: (UploadVideoAction) -> T) = uploadVideoActionOrNull() ?.let(block) +public inline fun Chat.groupChatOrNull(): GroupChat? = this as? + dev.inmo.tgbotapi.types.chat.GroupChat -@PreviewFeature -inline fun BotAction.uploadVideoActionOrNull(): UploadVideoAction? = this as? UploadVideoAction +public inline fun Chat.groupChatOrThrow(): GroupChat = this as + dev.inmo.tgbotapi.types.chat.GroupChat -@PreviewFeature -inline fun BotAction.uploadVideoActionOrThrow(): UploadVideoAction = this as UploadVideoAction +public inline fun Chat.ifGroupChat(block: (GroupChat) -> T): T? = groupChatOrNull() ?.let(block) -@PreviewFeature -inline fun BotAction.ifUploadVideoNoteAction(block: (UploadVideoNoteAction) -> T) = uploadVideoNoteActionOrNull() ?.let(block) +public inline fun Chat.privateChatOrNull(): PrivateChat? = this as? + dev.inmo.tgbotapi.types.chat.PrivateChat -@PreviewFeature -inline fun BotAction.uploadVideoNoteActionOrNull(): UploadVideoNoteAction? = this as? UploadVideoNoteAction +public inline fun Chat.privateChatOrThrow(): PrivateChat = this as + dev.inmo.tgbotapi.types.chat.PrivateChat -@PreviewFeature -inline fun BotAction.uploadVideoNoteActionOrThrow(): UploadVideoNoteAction = this as UploadVideoNoteAction +public inline fun Chat.ifPrivateChat(block: (PrivateChat) -> T): T? = privateChatOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQuery.ifBaseInlineQuery(block: (BaseInlineQuery) -> T) = baseInlineQueryOrNull() ?.let(block) +public inline fun Chat.publicChatOrNull(): PublicChat? = this as? + dev.inmo.tgbotapi.types.chat.PublicChat -@PreviewFeature -inline fun InlineQuery.baseInlineQueryOrNull(): BaseInlineQuery? = - this as? BaseInlineQuery +public inline fun Chat.publicChatOrThrow(): PublicChat = this as + dev.inmo.tgbotapi.types.chat.PublicChat -@PreviewFeature -inline fun InlineQuery.baseInlineQueryOrThrow(): BaseInlineQuery = - this as BaseInlineQuery +public inline fun Chat.ifPublicChat(block: (PublicChat) -> T): T? = publicChatOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQuery.ifLocationInlineQuery(block: (LocationInlineQuery) -> T) = locationInlineQueryOrNull() ?.let(block) +public inline fun Chat.supergroupChatOrNull(): SupergroupChat? = this as? + dev.inmo.tgbotapi.types.chat.SupergroupChat -@PreviewFeature -inline fun InlineQuery.locationInlineQueryOrNull(): LocationInlineQuery? = - this as? LocationInlineQuery +public inline fun Chat.supergroupChatOrThrow(): SupergroupChat = this as + dev.inmo.tgbotapi.types.chat.SupergroupChat -@PreviewFeature -inline fun InlineQuery.locationInlineQueryOrThrow(): LocationInlineQuery = - this as LocationInlineQuery +public inline fun Chat.ifSupergroupChat(block: (SupergroupChat) -> T): T? = + supergroupChatOrNull() ?.let(block) -@PreviewFeature -inline fun InputMessageContent.ifInputContactMessageContent(block: (InputContactMessageContent) -> T) = inputContactMessageContentOrNull() ?.let(block) +public inline fun Chat.superPublicChatOrNull(): SuperPublicChat? = this as? + dev.inmo.tgbotapi.types.chat.SuperPublicChat -@PreviewFeature -inline fun InputMessageContent.inputContactMessageContentOrNull(): InputContactMessageContent? = - this as? InputContactMessageContent +public inline fun Chat.superPublicChatOrThrow(): SuperPublicChat = this as + dev.inmo.tgbotapi.types.chat.SuperPublicChat -@PreviewFeature -inline fun InputMessageContent.inputContactMessageContentOrThrow(): InputContactMessageContent = - this as InputContactMessageContent +public inline fun Chat.ifSuperPublicChat(block: (SuperPublicChat) -> T): T? = + superPublicChatOrNull() ?.let(block) -@PreviewFeature -inline fun InputMessageContent.ifInputLocationMessageContent(block: (InputLocationMessageContent) -> T) = inputLocationMessageContentOrNull() ?.let(block) +public inline fun Chat.usernameChatOrNull(): UsernameChat? = this as? + dev.inmo.tgbotapi.types.chat.UsernameChat -@PreviewFeature -inline fun InputMessageContent.inputLocationMessageContentOrNull(): InputLocationMessageContent? = - this as? InputLocationMessageContent +public inline fun Chat.usernameChatOrThrow(): UsernameChat = this as + dev.inmo.tgbotapi.types.chat.UsernameChat -@PreviewFeature -inline fun InputMessageContent.inputLocationMessageContentOrThrow(): InputLocationMessageContent = - this as InputLocationMessageContent +public inline fun Chat.ifUsernameChat(block: (UsernameChat) -> T): T? = usernameChatOrNull() + ?.let(block) -@PreviewFeature -inline fun InputMessageContent.ifInputTextMessageContent(block: (InputTextMessageContent) -> T) = inputTextMessageContentOrNull() ?.let(block) +public inline fun Chat.possiblyPremiumChatOrNull(): PossiblyPremiumChat? = this as? + dev.inmo.tgbotapi.types.chat.PossiblyPremiumChat -@PreviewFeature -inline fun InputMessageContent.inputTextMessageContentOrNull(): InputTextMessageContent? = this as? InputTextMessageContent +public inline fun Chat.possiblyPremiumChatOrThrow(): PossiblyPremiumChat = this as + dev.inmo.tgbotapi.types.chat.PossiblyPremiumChat -@PreviewFeature -inline fun InputMessageContent.inputTextMessageContentOrThrow(): InputTextMessageContent = - this as InputTextMessageContent +public inline fun Chat.ifPossiblyPremiumChat(block: (PossiblyPremiumChat) -> T): T? = + possiblyPremiumChatOrNull() ?.let(block) -@PreviewFeature -inline fun InputMessageContent.ifInputVenueMessageContent(block: (InputVenueMessageContent) -> T) = inputVenueMessageContentOrNull() ?.let(block) +public inline fun Chat.ableToAddInAttachmentMenuChatOrNull(): AbleToAddInAttachmentMenuChat? = this + as? dev.inmo.tgbotapi.types.chat.AbleToAddInAttachmentMenuChat -@PreviewFeature -inline fun InputMessageContent.inputVenueMessageContentOrNull(): InputVenueMessageContent? = - this as? InputVenueMessageContent +public inline fun Chat.ableToAddInAttachmentMenuChatOrThrow(): AbleToAddInAttachmentMenuChat = this + as dev.inmo.tgbotapi.types.chat.AbleToAddInAttachmentMenuChat -@PreviewFeature -inline fun InputMessageContent.inputVenueMessageContentOrThrow(): InputVenueMessageContent = - this as InputVenueMessageContent +public inline fun + Chat.ifAbleToAddInAttachmentMenuChat(block: (AbleToAddInAttachmentMenuChat) -> T): T? = + ableToAddInAttachmentMenuChatOrNull() ?.let(block) -@PreviewFeature -inline fun InputMessageContent.ifInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T) = inputInvoiceMessageContentOrNull() ?.let(block) +public inline fun Chat.extendedChannelChatImplOrNull(): ExtendedChannelChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedChannelChatImpl -@PreviewFeature -inline fun InputMessageContent.inputInvoiceMessageContentOrNull(): InputInvoiceMessageContent? = - this as? InputInvoiceMessageContent +public inline fun Chat.extendedChannelChatImplOrThrow(): ExtendedChannelChatImpl = this as + dev.inmo.tgbotapi.types.chat.ExtendedChannelChatImpl -@PreviewFeature -inline fun InputMessageContent.inputInvoiceMessageContentOrThrow(): InputInvoiceMessageContent = - this as InputInvoiceMessageContent +public inline fun Chat.ifExtendedChannelChatImpl(block: (ExtendedChannelChatImpl) -> T): T? = + extendedChannelChatImplOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultArticle(block: (InlineQueryResultArticle) -> T) = inlineQueryResultArticleOrNull() ?.let(block) +public inline fun Chat.extendedGroupChatImplOrNull(): ExtendedGroupChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedGroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultArticleOrNull(): InlineQueryResultArticle? = this as? InlineQueryResultArticle +public inline fun Chat.extendedGroupChatImplOrThrow(): ExtendedGroupChatImpl = this as + dev.inmo.tgbotapi.types.chat.ExtendedGroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultArticleOrThrow(): InlineQueryResultArticle = - this as InlineQueryResultArticle +public inline fun Chat.ifExtendedGroupChatImpl(block: (ExtendedGroupChatImpl) -> T): T? = + extendedGroupChatImplOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultContact(block: (InlineQueryResultContact) -> T) = inlineQueryResultContactOrNull() ?.let(block) +public inline fun Chat.extendedPrivateChatImplOrNull(): ExtendedPrivateChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedPrivateChatImpl -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultContactOrNull(): InlineQueryResultContact? = this as? InlineQueryResultContact +public inline fun Chat.extendedPrivateChatImplOrThrow(): ExtendedPrivateChatImpl = this as + dev.inmo.tgbotapi.types.chat.ExtendedPrivateChatImpl -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultContactOrThrow(): InlineQueryResultContact = - this as InlineQueryResultContact +public inline fun Chat.ifExtendedPrivateChatImpl(block: (ExtendedPrivateChatImpl) -> T): T? = + extendedPrivateChatImplOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultGame(block: (InlineQueryResultGame) -> T) = inlineQueryResultGameOrNull() ?.let(block) +public inline fun Chat.extendedSupergroupChatImplOrNull(): ExtendedSupergroupChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGameOrNull(): InlineQueryResultGame? = this as? InlineQueryResultGame +public inline fun Chat.extendedSupergroupChatImplOrThrow(): ExtendedSupergroupChatImpl = this as + dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGameOrThrow(): InlineQueryResultGame = this as InlineQueryResultGame +public inline fun Chat.ifExtendedSupergroupChatImpl(block: (ExtendedSupergroupChatImpl) -> T): + T? = extendedSupergroupChatImplOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultLocation(block: (InlineQueryResultLocation) -> T) = inlineQueryResultLocationOrNull() ?.let(block) +public inline fun Chat.extendedBotOrNull(): ExtendedBot? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedBot -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultLocationOrNull(): InlineQueryResultLocation? = - this as? InlineQueryResultLocation +public inline fun Chat.extendedBotOrThrow(): ExtendedBot = this as + dev.inmo.tgbotapi.types.chat.ExtendedBot -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultLocationOrThrow(): InlineQueryResultLocation = - this as InlineQueryResultLocation +public inline fun Chat.ifExtendedBot(block: (ExtendedBot) -> T): T? = extendedBotOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultStickerCached(block: (InlineQueryResultStickerCached) -> T) = inlineQueryResultStickerCachedOrNull() ?.let(block) +public inline fun Chat.unknownExtendedChatOrNull(): UnknownExtendedChat? = this as? + dev.inmo.tgbotapi.types.chat.UnknownExtendedChat -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultStickerCachedOrNull(): InlineQueryResultStickerCached? = - this as? InlineQueryResultStickerCached +public inline fun Chat.unknownExtendedChatOrThrow(): UnknownExtendedChat = this as + dev.inmo.tgbotapi.types.chat.UnknownExtendedChat -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultStickerCachedOrThrow(): InlineQueryResultStickerCached = - this as InlineQueryResultStickerCached +public inline fun Chat.ifUnknownExtendedChat(block: (UnknownExtendedChat) -> T): T? = + unknownExtendedChatOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultVenue(block: (InlineQueryResultVenue) -> T) = inlineQueryResultVenueOrNull() ?.let(block) +public inline fun Chat.extendedChannelChatOrNull(): ExtendedChannelChat? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedChannelChat -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVenueOrNull(): InlineQueryResultVenue? = this as? InlineQueryResultVenue +public inline fun Chat.extendedChannelChatOrThrow(): ExtendedChannelChat = this as + dev.inmo.tgbotapi.types.chat.ExtendedChannelChat -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVenueOrThrow(): InlineQueryResultVenue = this as InlineQueryResultVenue +public inline fun Chat.ifExtendedChannelChat(block: (ExtendedChannelChat) -> T): T? = + extendedChannelChatOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifDescribedInlineQueryResult(block: (DescribedInlineQueryResult) -> T) = describedInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.extendedGroupChatOrNull(): ExtendedGroupChat? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedGroupChat -@PreviewFeature -inline fun InlineQueryResult.describedInlineQueryResultOrNull(): DescribedInlineQueryResult? = - this as? DescribedInlineQueryResult +public inline fun Chat.extendedGroupChatOrThrow(): ExtendedGroupChat = this as + dev.inmo.tgbotapi.types.chat.ExtendedGroupChat -@PreviewFeature -inline fun InlineQueryResult.describedInlineQueryResultOrThrow(): DescribedInlineQueryResult = - this as DescribedInlineQueryResult +public inline fun Chat.ifExtendedGroupChat(block: (ExtendedGroupChat) -> T): T? = + extendedGroupChatOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifFileInlineQueryResult(block: (FileInlineQueryResult) -> T) = fileInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.extendedPrivateChatOrNull(): ExtendedPrivateChat? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedPrivateChat -@PreviewFeature -inline fun InlineQueryResult.fileInlineQueryResultOrNull(): FileInlineQueryResult? = this as? FileInlineQueryResult +public inline fun Chat.extendedPrivateChatOrThrow(): ExtendedPrivateChat = this as + dev.inmo.tgbotapi.types.chat.ExtendedPrivateChat -@PreviewFeature -inline fun InlineQueryResult.fileInlineQueryResultOrThrow(): FileInlineQueryResult = this as FileInlineQueryResult +public inline fun Chat.ifExtendedPrivateChat(block: (ExtendedPrivateChat) -> T): T? = + extendedPrivateChatOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifOptionallyTitledInlineQueryResult(block: (OptionallyTitledInlineQueryResult) -> T) = optionallyTitledInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.extendedPublicChatOrNull(): ExtendedPublicChat? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedPublicChat -@PreviewFeature -inline fun InlineQueryResult.optionallyTitledInlineQueryResultOrNull(): OptionallyTitledInlineQueryResult? = - this as? OptionallyTitledInlineQueryResult +public inline fun Chat.extendedPublicChatOrThrow(): ExtendedPublicChat = this as + dev.inmo.tgbotapi.types.chat.ExtendedPublicChat -@PreviewFeature -inline fun InlineQueryResult.optionallyTitledInlineQueryResultOrThrow(): OptionallyTitledInlineQueryResult = - this as OptionallyTitledInlineQueryResult +public inline fun Chat.ifExtendedPublicChat(block: (ExtendedPublicChat) -> T): T? = + extendedPublicChatOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifSizedInlineQueryResult(block: (SizedInlineQueryResult) -> T) = sizedInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.extendedSupergroupChatOrNull(): ExtendedSupergroupChat? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChat -@PreviewFeature -inline fun InlineQueryResult.sizedInlineQueryResultOrNull(): SizedInlineQueryResult? = this as? SizedInlineQueryResult +public inline fun Chat.extendedSupergroupChatOrThrow(): ExtendedSupergroupChat = this as + dev.inmo.tgbotapi.types.chat.ExtendedSupergroupChat -@PreviewFeature -inline fun InlineQueryResult.sizedInlineQueryResultOrThrow(): SizedInlineQueryResult = this as SizedInlineQueryResult +public inline fun Chat.ifExtendedSupergroupChat(block: (ExtendedSupergroupChat) -> T): T? = + extendedSupergroupChatOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifThumbSizedInlineQueryResult(block: (ThumbSizedInlineQueryResult) -> T) = thumbSizedInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.extendedChatOrNull(): ExtendedChat? = this as? + dev.inmo.tgbotapi.types.chat.ExtendedChat -@PreviewFeature -inline fun InlineQueryResult.thumbSizedInlineQueryResultOrNull(): ThumbSizedInlineQueryResult? = - this as? ThumbSizedInlineQueryResult +public inline fun Chat.extendedChatOrThrow(): ExtendedChat = this as + dev.inmo.tgbotapi.types.chat.ExtendedChat -@PreviewFeature -inline fun InlineQueryResult.thumbSizedInlineQueryResultOrThrow(): ThumbSizedInlineQueryResult = - this as ThumbSizedInlineQueryResult +public inline fun Chat.ifExtendedChat(block: (ExtendedChat) -> T): T? = extendedChatOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifThumbedInlineQueryResult(block: (ThumbedInlineQueryResult) -> T) = thumbedInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.groupChatImplOrNull(): GroupChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.GroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.thumbedInlineQueryResultOrNull(): ThumbedInlineQueryResult? = this as? ThumbedInlineQueryResult +public inline fun Chat.groupChatImplOrThrow(): GroupChatImpl = this as + dev.inmo.tgbotapi.types.chat.GroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.thumbedInlineQueryResultOrThrow(): ThumbedInlineQueryResult = - this as ThumbedInlineQueryResult +public inline fun Chat.ifGroupChatImpl(block: (GroupChatImpl) -> T): T? = groupChatImplOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifThumbedWithMimeTypeInlineQueryResult(block: (ThumbedWithMimeTypeInlineQueryResult) -> T) = thumbedWithMimeTypeInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.privateChatImplOrNull(): PrivateChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.PrivateChatImpl -@PreviewFeature -inline fun InlineQueryResult.thumbedWithMimeTypeInlineQueryResultOrNull(): ThumbedWithMimeTypeInlineQueryResult? = - this as? ThumbedWithMimeTypeInlineQueryResult +public inline fun Chat.privateChatImplOrThrow(): PrivateChatImpl = this as + dev.inmo.tgbotapi.types.chat.PrivateChatImpl -@PreviewFeature -inline fun InlineQueryResult.thumbedWithMimeTypeInlineQueryResultOrThrow(): ThumbedWithMimeTypeInlineQueryResult = - this as ThumbedWithMimeTypeInlineQueryResult +public inline fun Chat.ifPrivateChatImpl(block: (PrivateChatImpl) -> T): T? = + privateChatImplOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifTitledInlineQueryResult(block: (TitledInlineQueryResult) -> T) = titledInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.supergroupChatImplOrNull(): SupergroupChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.SupergroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.titledInlineQueryResultOrNull(): TitledInlineQueryResult? = this as? TitledInlineQueryResult +public inline fun Chat.supergroupChatImplOrThrow(): SupergroupChatImpl = this as + dev.inmo.tgbotapi.types.chat.SupergroupChatImpl -@PreviewFeature -inline fun InlineQueryResult.titledInlineQueryResultOrThrow(): TitledInlineQueryResult = this as TitledInlineQueryResult +public inline fun Chat.ifSupergroupChatImpl(block: (SupergroupChatImpl) -> T): T? = + supergroupChatImplOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifUrlInlineQueryResult(block: (UrlInlineQueryResult) -> T) = urlInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.channelChatImplOrNull(): ChannelChatImpl? = this as? + dev.inmo.tgbotapi.types.chat.ChannelChatImpl -@PreviewFeature -inline fun InlineQueryResult.urlInlineQueryResultOrNull(): UrlInlineQueryResult? = this as? UrlInlineQueryResult +public inline fun Chat.channelChatImplOrThrow(): ChannelChatImpl = this as + dev.inmo.tgbotapi.types.chat.ChannelChatImpl -@PreviewFeature -inline fun InlineQueryResult.urlInlineQueryResultOrThrow(): UrlInlineQueryResult = this as UrlInlineQueryResult +public inline fun Chat.ifChannelChatImpl(block: (ChannelChatImpl) -> T): T? = + channelChatImplOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifWithInputMessageContentInlineQueryResult(block: (WithInputMessageContentInlineQueryResult) -> T) = withInputMessageContentInlineQueryResultOrNull() ?.let(block) +public inline fun Chat.userOrNull(): User? = this as? dev.inmo.tgbotapi.types.chat.User -@PreviewFeature -inline fun InlineQueryResult.withInputMessageContentInlineQueryResultOrNull(): WithInputMessageContentInlineQueryResult? = - this as? WithInputMessageContentInlineQueryResult +public inline fun Chat.userOrThrow(): User = this as dev.inmo.tgbotapi.types.chat.User -@PreviewFeature -inline fun InlineQueryResult.withInputMessageContentInlineQueryResultOrThrow(): WithInputMessageContentInlineQueryResult = - this as WithInputMessageContentInlineQueryResult +public inline fun Chat.ifUser(block: (User) -> T): T? = userOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultAudio(block: (InlineQueryResultAudio) -> T) = inlineQueryResultAudioOrNull() ?.let(block) +public inline fun Chat.botOrNull(): Bot? = this as? dev.inmo.tgbotapi.types.chat.Bot -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultAudioOrNull(): InlineQueryResultAudio? = this as? InlineQueryResultAudio +public inline fun Chat.botOrThrow(): Bot = this as dev.inmo.tgbotapi.types.chat.Bot -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultAudioOrThrow(): InlineQueryResultAudio = this as InlineQueryResultAudio +public inline fun Chat.ifBot(block: (Bot) -> T): T? = botOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultAudioCached(block: (InlineQueryResultAudioCached) -> T) = inlineQueryResultAudioCachedOrNull() ?.let(block) +public inline fun Chat.commonBotOrNull(): CommonBot? = this as? + dev.inmo.tgbotapi.types.chat.CommonBot -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultAudioCachedOrNull(): InlineQueryResultAudioCached? = - this as? InlineQueryResultAudioCached +public inline fun Chat.commonBotOrThrow(): CommonBot = this as + dev.inmo.tgbotapi.types.chat.CommonBot -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultAudioCachedOrThrow(): InlineQueryResultAudioCached = - this as InlineQueryResultAudioCached +public inline fun Chat.ifCommonBot(block: (CommonBot) -> T): T? = commonBotOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultAudioCommon(block: (InlineQueryResultAudioCommon) -> T) = inlineQueryResultAudioCommonOrNull() ?.let(block) +public inline fun Chat.commonUserOrNull(): CommonUser? = this as? + dev.inmo.tgbotapi.types.chat.CommonUser -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultAudioCommonOrNull(): InlineQueryResultAudioCommon? = - this as? InlineQueryResultAudioCommon +public inline fun Chat.commonUserOrThrow(): CommonUser = this as + dev.inmo.tgbotapi.types.chat.CommonUser -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultAudioCommonOrThrow(): InlineQueryResultAudioCommon = - this as InlineQueryResultAudioCommon +public inline fun Chat.ifCommonUser(block: (CommonUser) -> T): T? = commonUserOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultDocument(block: (InlineQueryResultDocument) -> T) = inlineQueryResultDocumentOrNull() ?.let(block) +public inline fun Chat.unknownChatTypeOrNull(): UnknownChatType? = this as? + dev.inmo.tgbotapi.types.chat.UnknownChatType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultDocumentOrNull(): InlineQueryResultDocument? = - this as? InlineQueryResultDocument +public inline fun Chat.unknownChatTypeOrThrow(): UnknownChatType = this as + dev.inmo.tgbotapi.types.chat.UnknownChatType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultDocumentOrThrow(): InlineQueryResultDocument = - this as InlineQueryResultDocument +public inline fun Chat.ifUnknownChatType(block: (UnknownChatType) -> T): T? = + unknownChatTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultDocumentCached(block: (InlineQueryResultDocumentCached) -> T) = inlineQueryResultDocumentCachedOrNull() ?.let(block) +public inline fun DiceAnimationType.cubeDiceAnimationTypeOrNull(): CubeDiceAnimationType? = this as? + dev.inmo.tgbotapi.types.dice.CubeDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultDocumentCachedOrNull(): InlineQueryResultDocumentCached? = - this as? InlineQueryResultDocumentCached +public inline fun DiceAnimationType.cubeDiceAnimationTypeOrThrow(): CubeDiceAnimationType = this as + dev.inmo.tgbotapi.types.dice.CubeDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultDocumentCachedOrThrow(): InlineQueryResultDocumentCached = - this as InlineQueryResultDocumentCached +public inline fun + DiceAnimationType.ifCubeDiceAnimationType(block: (CubeDiceAnimationType) -> T): T? = + cubeDiceAnimationTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultDocumentCommon(block: (InlineQueryResultDocumentCommon) -> T) = inlineQueryResultDocumentCommonOrNull() ?.let(block) +public inline fun DiceAnimationType.dartsDiceAnimationTypeOrNull(): DartsDiceAnimationType? = this + as? dev.inmo.tgbotapi.types.dice.DartsDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultDocumentCommonOrNull(): InlineQueryResultDocumentCommon? = - this as? InlineQueryResultDocumentCommon +public inline fun DiceAnimationType.dartsDiceAnimationTypeOrThrow(): DartsDiceAnimationType = this + as dev.inmo.tgbotapi.types.dice.DartsDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultDocumentCommonOrThrow(): InlineQueryResultDocumentCommon = - this as InlineQueryResultDocumentCommon +public inline fun + DiceAnimationType.ifDartsDiceAnimationType(block: (DartsDiceAnimationType) -> T): T? = + dartsDiceAnimationTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultGif(block: (InlineQueryResultGif) -> T) = inlineQueryResultGifOrNull() ?.let(block) +public inline fun DiceAnimationType.basketballDiceAnimationTypeOrNull(): + BasketballDiceAnimationType? = this as? dev.inmo.tgbotapi.types.dice.BasketballDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGifOrNull(): InlineQueryResultGif? = this as? InlineQueryResultGif +public inline fun DiceAnimationType.basketballDiceAnimationTypeOrThrow(): + BasketballDiceAnimationType = this as dev.inmo.tgbotapi.types.dice.BasketballDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGifOrThrow(): InlineQueryResultGif = this as InlineQueryResultGif +public inline fun + DiceAnimationType.ifBasketballDiceAnimationType(block: (BasketballDiceAnimationType) -> T): T? = + basketballDiceAnimationTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultGifCached(block: (InlineQueryResultGifCached) -> T) = inlineQueryResultGifCachedOrNull() ?.let(block) +public inline fun DiceAnimationType.footballDiceAnimationTypeOrNull(): FootballDiceAnimationType? = + this as? dev.inmo.tgbotapi.types.dice.FootballDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGifCachedOrNull(): InlineQueryResultGifCached? = - this as? InlineQueryResultGifCached +public inline fun DiceAnimationType.footballDiceAnimationTypeOrThrow(): FootballDiceAnimationType = + this as dev.inmo.tgbotapi.types.dice.FootballDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGifCachedOrThrow(): InlineQueryResultGifCached = - this as InlineQueryResultGifCached +public inline fun + DiceAnimationType.ifFootballDiceAnimationType(block: (FootballDiceAnimationType) -> T): T? = + footballDiceAnimationTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultGifCommon(block: (InlineQueryResultGifCommon) -> T) = inlineQueryResultGifCommonOrNull() ?.let(block) +public inline fun DiceAnimationType.bowlingDiceAnimationTypeOrNull(): BowlingDiceAnimationType? = + this as? dev.inmo.tgbotapi.types.dice.BowlingDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGifCommonOrNull(): InlineQueryResultGifCommon? = - this as? InlineQueryResultGifCommon +public inline fun DiceAnimationType.bowlingDiceAnimationTypeOrThrow(): BowlingDiceAnimationType = + this as dev.inmo.tgbotapi.types.dice.BowlingDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultGifCommonOrThrow(): InlineQueryResultGifCommon = - this as InlineQueryResultGifCommon +public inline fun + DiceAnimationType.ifBowlingDiceAnimationType(block: (BowlingDiceAnimationType) -> T): T? = + bowlingDiceAnimationTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultMpeg4Gif(block: (InlineQueryResultMpeg4Gif) -> T) = inlineQueryResultMpeg4GifOrNull() ?.let(block) +public inline fun DiceAnimationType.slotMachineDiceAnimationTypeOrNull(): + SlotMachineDiceAnimationType? = this as? + dev.inmo.tgbotapi.types.dice.SlotMachineDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultMpeg4GifOrNull(): InlineQueryResultMpeg4Gif? = - this as? InlineQueryResultMpeg4Gif +public inline fun DiceAnimationType.slotMachineDiceAnimationTypeOrThrow(): + SlotMachineDiceAnimationType = this as dev.inmo.tgbotapi.types.dice.SlotMachineDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultMpeg4GifOrThrow(): InlineQueryResultMpeg4Gif = - this as InlineQueryResultMpeg4Gif +public inline fun + DiceAnimationType.ifSlotMachineDiceAnimationType(block: (SlotMachineDiceAnimationType) -> T): T? + = slotMachineDiceAnimationTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultMpeg4GifCached(block: (InlineQueryResultMpeg4GifCached) -> T) = inlineQueryResultMpeg4GifCachedOrNull() ?.let(block) +public inline fun DiceAnimationType.customDiceAnimationTypeOrNull(): CustomDiceAnimationType? = this + as? dev.inmo.tgbotapi.types.dice.CustomDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultMpeg4GifCachedOrNull(): InlineQueryResultMpeg4GifCached? = - this as? InlineQueryResultMpeg4GifCached +public inline fun DiceAnimationType.customDiceAnimationTypeOrThrow(): CustomDiceAnimationType = this + as dev.inmo.tgbotapi.types.dice.CustomDiceAnimationType -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultMpeg4GifCachedOrThrow(): InlineQueryResultMpeg4GifCached = - this as InlineQueryResultMpeg4GifCached +public inline fun + DiceAnimationType.ifCustomDiceAnimationType(block: (CustomDiceAnimationType) -> T): T? = + customDiceAnimationTypeOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultMpeg4GifCommon(block: (InlineQueryResultMpeg4GifCommon) -> T) = inlineQueryResultMpeg4GifCommonOrNull() ?.let(block) +public inline fun TelegramMediaFile.animationFileOrNull(): AnimationFile? = this as? + dev.inmo.tgbotapi.types.files.AnimationFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultMpeg4GifCommonOrNull(): InlineQueryResultMpeg4GifCommon? = - this as? InlineQueryResultMpeg4GifCommon +public inline fun TelegramMediaFile.animationFileOrThrow(): AnimationFile = this as + dev.inmo.tgbotapi.types.files.AnimationFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultMpeg4GifCommonOrThrow(): InlineQueryResultMpeg4GifCommon = - this as InlineQueryResultMpeg4GifCommon +public inline fun TelegramMediaFile.ifAnimationFile(block: (AnimationFile) -> T): T? = + animationFileOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultPhoto(block: (InlineQueryResultPhoto) -> T) = inlineQueryResultPhotoOrNull() ?.let(block) +public inline fun TelegramMediaFile.audioFileOrNull(): AudioFile? = this as? + dev.inmo.tgbotapi.types.files.AudioFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultPhotoOrNull(): InlineQueryResultPhoto? = this as? InlineQueryResultPhoto +public inline fun TelegramMediaFile.audioFileOrThrow(): AudioFile = this as + dev.inmo.tgbotapi.types.files.AudioFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultPhotoOrThrow(): InlineQueryResultPhoto = this as InlineQueryResultPhoto +public inline fun TelegramMediaFile.ifAudioFile(block: (AudioFile) -> T): T? = audioFileOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultPhotoCached(block: (InlineQueryResultPhotoCached) -> T) = inlineQueryResultPhotoCachedOrNull() ?.let(block) +public inline fun TelegramMediaFile.documentFileOrNull(): DocumentFile? = this as? + dev.inmo.tgbotapi.types.files.DocumentFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultPhotoCachedOrNull(): InlineQueryResultPhotoCached? = - this as? InlineQueryResultPhotoCached +public inline fun TelegramMediaFile.documentFileOrThrow(): DocumentFile = this as + dev.inmo.tgbotapi.types.files.DocumentFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultPhotoCachedOrThrow(): InlineQueryResultPhotoCached = - this as InlineQueryResultPhotoCached +public inline fun TelegramMediaFile.ifDocumentFile(block: (DocumentFile) -> T): T? = + documentFileOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultPhotoCommon(block: (InlineQueryResultPhotoCommon) -> T) = inlineQueryResultPhotoCommonOrNull() ?.let(block) +public inline fun TelegramMediaFile.fileOrNull(): File? = this as? + dev.inmo.tgbotapi.types.files.File -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultPhotoCommonOrNull(): InlineQueryResultPhotoCommon? = - this as? InlineQueryResultPhotoCommon +public inline fun TelegramMediaFile.fileOrThrow(): File = this as dev.inmo.tgbotapi.types.files.File -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultPhotoCommonOrThrow(): InlineQueryResultPhotoCommon = - this as InlineQueryResultPhotoCommon +public inline fun TelegramMediaFile.ifFile(block: (File) -> T): T? = fileOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultVideo(block: (InlineQueryResultVideo) -> T) = inlineQueryResultVideoOrNull() ?.let(block) +public inline fun TelegramMediaFile.mimedMediaFileOrNull(): MimedMediaFile? = this as? + dev.inmo.tgbotapi.types.files.MimedMediaFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVideoOrNull(): InlineQueryResultVideo? = this as? InlineQueryResultVideo +public inline fun TelegramMediaFile.mimedMediaFileOrThrow(): MimedMediaFile = this as + dev.inmo.tgbotapi.types.files.MimedMediaFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVideoOrThrow(): InlineQueryResultVideo = this as InlineQueryResultVideo +public inline fun TelegramMediaFile.ifMimedMediaFile(block: (MimedMediaFile) -> T): T? = + mimedMediaFileOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultVideoCached(block: (InlineQueryResultVideoCached) -> T) = inlineQueryResultVideoCachedOrNull() ?.let(block) +public inline fun TelegramMediaFile.passportFileOrNull(): PassportFile? = this as? + dev.inmo.tgbotapi.types.files.PassportFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVideoCachedOrNull(): InlineQueryResultVideoCached? = - this as? InlineQueryResultVideoCached +public inline fun TelegramMediaFile.passportFileOrThrow(): PassportFile = this as + dev.inmo.tgbotapi.types.files.PassportFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVideoCachedOrThrow(): InlineQueryResultVideoCached = - this as InlineQueryResultVideoCached +public inline fun TelegramMediaFile.ifPassportFile(block: (PassportFile) -> T): T? = + passportFileOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultVideoCommon(block: (InlineQueryResultVideoCommon) -> T) = inlineQueryResultVideoCommonOrNull() ?.let(block) +public inline fun TelegramMediaFile.pathedFileOrNull(): PathedFile? = this as? + dev.inmo.tgbotapi.types.files.PathedFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVideoCommonOrNull(): InlineQueryResultVideoCommon? = - this as? InlineQueryResultVideoCommon +public inline fun TelegramMediaFile.pathedFileOrThrow(): PathedFile = this as + dev.inmo.tgbotapi.types.files.PathedFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVideoCommonOrThrow(): InlineQueryResultVideoCommon = - this as InlineQueryResultVideoCommon +public inline fun TelegramMediaFile.ifPathedFile(block: (PathedFile) -> T): T? = + pathedFileOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultVoice(block: (InlineQueryResultVoice) -> T) = inlineQueryResultVoiceOrNull() ?.let(block) +public inline fun TelegramMediaFile.photoSizeOrNull(): PhotoSize? = this as? + dev.inmo.tgbotapi.types.files.PhotoSize -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVoiceOrNull(): InlineQueryResultVoice? = this as? InlineQueryResultVoice +public inline fun TelegramMediaFile.photoSizeOrThrow(): PhotoSize = this as + dev.inmo.tgbotapi.types.files.PhotoSize -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVoiceOrThrow(): InlineQueryResultVoice = this as InlineQueryResultVoice +public inline fun TelegramMediaFile.ifPhotoSize(block: (PhotoSize) -> T): T? = photoSizeOrNull() + ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultVoiceCached(block: (InlineQueryResultVoiceCached) -> T) = inlineQueryResultVoiceCachedOrNull() ?.let(block) +public inline fun TelegramMediaFile.playableMediaFileOrNull(): PlayableMediaFile? = this as? + dev.inmo.tgbotapi.types.files.PlayableMediaFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVoiceCachedOrNull(): InlineQueryResultVoiceCached? = - this as? InlineQueryResultVoiceCached +public inline fun TelegramMediaFile.playableMediaFileOrThrow(): PlayableMediaFile = this as + dev.inmo.tgbotapi.types.files.PlayableMediaFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVoiceCachedOrThrow(): InlineQueryResultVoiceCached = - this as InlineQueryResultVoiceCached +public inline fun TelegramMediaFile.ifPlayableMediaFile(block: (PlayableMediaFile) -> T): T? = + playableMediaFileOrNull() ?.let(block) -@PreviewFeature -inline fun InlineQueryResult.ifInlineQueryResultVoiceCommon(block: (InlineQueryResultVoiceCommon) -> T) = inlineQueryResultVoiceCommonOrNull() ?.let(block) +public inline fun TelegramMediaFile.sizedMediaFileOrNull(): SizedMediaFile? = this as? + dev.inmo.tgbotapi.types.files.SizedMediaFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVoiceCommonOrNull(): InlineQueryResultVoiceCommon? = - this as? InlineQueryResultVoiceCommon +public inline fun TelegramMediaFile.sizedMediaFileOrThrow(): SizedMediaFile = this as + dev.inmo.tgbotapi.types.files.SizedMediaFile -@PreviewFeature -inline fun InlineQueryResult.inlineQueryResultVoiceCommonOrThrow(): InlineQueryResultVoiceCommon = - this as InlineQueryResultVoiceCommon +public inline fun TelegramMediaFile.ifSizedMediaFile(block: (SizedMediaFile) -> T): T? = + sizedMediaFileOrNull() ?.let(block) -@PreviewFeature -inline fun ChatMember.ifOwnerChatMember(block: (OwnerChatMember) -> T) = ownerChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.stickerOrNull(): Sticker? = this as? + dev.inmo.tgbotapi.types.files.Sticker -@PreviewFeature -inline fun ChatMember.ownerChatMemberOrNull(): OwnerChatMember? = this as? OwnerChatMember +public inline fun TelegramMediaFile.stickerOrThrow(): Sticker = this as + dev.inmo.tgbotapi.types.files.Sticker -@PreviewFeature -inline fun ChatMember.ownerChatMemberOrThrow(): OwnerChatMember = this as OwnerChatMember +public inline fun TelegramMediaFile.ifSticker(block: (Sticker) -> T): T? = stickerOrNull() + ?.let(block) -@PreviewFeature -inline fun ChatMember.ifKickedChatMember(block: (KickedChatMember) -> T) = kickedChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.simpleStickerOrNull(): SimpleSticker? = this as? + dev.inmo.tgbotapi.types.files.SimpleSticker -@PreviewFeature -inline fun ChatMember.kickedChatMemberOrNull(): KickedChatMember? = this as? KickedChatMember +public inline fun TelegramMediaFile.simpleStickerOrThrow(): SimpleSticker = this as + dev.inmo.tgbotapi.types.files.SimpleSticker -@PreviewFeature -inline fun ChatMember.kickedChatMemberOrThrow(): KickedChatMember = this as KickedChatMember +public inline fun TelegramMediaFile.ifSimpleSticker(block: (SimpleSticker) -> T): T? = + simpleStickerOrNull() ?.let(block) -@PreviewFeature -inline fun ChatMember.ifLeftChatMember(block: (LeftChatMember) -> T) = leftChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.animatedStickerOrNull(): AnimatedSticker? = this as? + dev.inmo.tgbotapi.types.files.AnimatedSticker -@PreviewFeature -inline fun ChatMember.leftChatMemberOrNull(): LeftChatMember? = this as? LeftChatMember +public inline fun TelegramMediaFile.animatedStickerOrThrow(): AnimatedSticker = this as + dev.inmo.tgbotapi.types.files.AnimatedSticker -@PreviewFeature -inline fun ChatMember.leftChatMemberOrThrow(): LeftChatMember = this as LeftChatMember +public inline fun TelegramMediaFile.ifAnimatedSticker(block: (AnimatedSticker) -> T): T? = + animatedStickerOrNull() ?.let(block) -@PreviewFeature -inline fun ChatMember.ifMemberChatMember(block: (MemberChatMember) -> T) = memberChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.videoStickerOrNull(): VideoSticker? = this as? + dev.inmo.tgbotapi.types.files.VideoSticker -@PreviewFeature -inline fun ChatMember.memberChatMemberOrNull(): MemberChatMember? = this as? MemberChatMember +public inline fun TelegramMediaFile.videoStickerOrThrow(): VideoSticker = this as + dev.inmo.tgbotapi.types.files.VideoSticker -@PreviewFeature -inline fun ChatMember.memberChatMemberOrThrow(): MemberChatMember = this as MemberChatMember +public inline fun TelegramMediaFile.ifVideoSticker(block: (VideoSticker) -> T): T? = + videoStickerOrNull() ?.let(block) -@PreviewFeature -inline fun ChatMember.ifRestrictedChatMember(block: (RestrictedChatMember) -> T) = restrictedChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.thumbedMediaFileOrNull(): ThumbedMediaFile? = this as? + dev.inmo.tgbotapi.types.files.ThumbedMediaFile -@PreviewFeature -inline fun ChatMember.restrictedChatMemberOrNull(): RestrictedChatMember? = this as? RestrictedChatMember +public inline fun TelegramMediaFile.thumbedMediaFileOrThrow(): ThumbedMediaFile = this as + dev.inmo.tgbotapi.types.files.ThumbedMediaFile -@PreviewFeature -inline fun ChatMember.restrictedChatMemberOrThrow(): RestrictedChatMember = this as RestrictedChatMember +public inline fun TelegramMediaFile.ifThumbedMediaFile(block: (ThumbedMediaFile) -> T): T? = + thumbedMediaFileOrNull() ?.let(block) -@PreviewFeature -inline fun ChatMember.ifAdministratorChatMember(block: (AdministratorChatMember) -> T) = administratorChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.videoFileOrNull(): VideoFile? = this as? + dev.inmo.tgbotapi.types.files.VideoFile -@PreviewFeature -inline fun ChatMember.administratorChatMemberOrNull(): AdministratorChatMember? = this as? AdministratorChatMember +public inline fun TelegramMediaFile.videoFileOrThrow(): VideoFile = this as + dev.inmo.tgbotapi.types.files.VideoFile -@PreviewFeature -inline fun ChatMember.administratorChatMemberOrThrow(): AdministratorChatMember = this as AdministratorChatMember +public inline fun TelegramMediaFile.ifVideoFile(block: (VideoFile) -> T): T? = videoFileOrNull() + ?.let(block) -@PreviewFeature -inline fun ChatMember.ifBannedChatMember(block: (BannedChatMember) -> T) = bannedChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.videoNoteFileOrNull(): VideoNoteFile? = this as? + dev.inmo.tgbotapi.types.files.VideoNoteFile -@PreviewFeature -inline fun ChatMember.bannedChatMemberOrNull(): BannedChatMember? = this as? BannedChatMember +public inline fun TelegramMediaFile.videoNoteFileOrThrow(): VideoNoteFile = this as + dev.inmo.tgbotapi.types.files.VideoNoteFile -@PreviewFeature -inline fun ChatMember.bannedChatMemberOrThrow(): BannedChatMember = this as BannedChatMember +public inline fun TelegramMediaFile.ifVideoNoteFile(block: (VideoNoteFile) -> T): T? = + videoNoteFileOrNull() ?.let(block) -@PreviewFeature -inline fun ChatMember.ifSpecialRightsChatMember(block: (SpecialRightsChatMember) -> T) = specialRightsChatMemberOrNull() ?.let(block) +public inline fun TelegramMediaFile.voiceFileOrNull(): VoiceFile? = this as? + dev.inmo.tgbotapi.types.files.VoiceFile -@PreviewFeature -inline fun ChatMember.specialRightsChatMemberOrNull(): SpecialRightsChatMember? = this as? SpecialRightsChatMember +public inline fun TelegramMediaFile.voiceFileOrThrow(): VoiceFile = this as + dev.inmo.tgbotapi.types.files.VoiceFile -@PreviewFeature -inline fun ChatMember.specialRightsChatMemberOrThrow(): SpecialRightsChatMember = this as SpecialRightsChatMember +public inline fun TelegramMediaFile.ifVoiceFile(block: (VoiceFile) -> T): T? = voiceFileOrNull() + ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifAudioMediaGroupMemberTelegramMedia(block: (AudioMediaGroupMemberTelegramMedia) -> T) = audioMediaGroupMemberTelegramMediaOrNull() ?.let(block) +public inline fun Location.staticLocationOrNull(): StaticLocation? = this as? + dev.inmo.tgbotapi.types.location.StaticLocation -@PreviewFeature -inline fun TelegramMedia.audioMediaGroupMemberTelegramMediaOrNull(): AudioMediaGroupMemberTelegramMedia? = - this as? AudioMediaGroupMemberTelegramMedia +public inline fun Location.staticLocationOrThrow(): StaticLocation = this as + dev.inmo.tgbotapi.types.location.StaticLocation -@PreviewFeature -inline fun TelegramMedia.audioMediaGroupMemberTelegramMediaOrThrow(): AudioMediaGroupMemberTelegramMedia = - this as AudioMediaGroupMemberTelegramMedia +public inline fun Location.ifStaticLocation(block: (StaticLocation) -> T): T? = + staticLocationOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifDocumentMediaGroupMemberTelegramMedia(block: (DocumentMediaGroupMemberTelegramMedia) -> T) = documentMediaGroupMemberTelegramMediaOrNull() ?.let(block) +public inline fun Location.liveLocationOrNull(): LiveLocation? = this as? + dev.inmo.tgbotapi.types.location.LiveLocation -@PreviewFeature -inline fun TelegramMedia.documentMediaGroupMemberTelegramMediaOrNull(): DocumentMediaGroupMemberTelegramMedia? = - this as? DocumentMediaGroupMemberTelegramMedia +public inline fun Location.liveLocationOrThrow(): LiveLocation = this as + dev.inmo.tgbotapi.types.location.LiveLocation -@PreviewFeature -inline fun TelegramMedia.documentMediaGroupMemberTelegramMediaOrThrow(): DocumentMediaGroupMemberTelegramMedia = - this as DocumentMediaGroupMemberTelegramMedia +public inline fun Location.ifLiveLocation(block: (LiveLocation) -> T): T? = liveLocationOrNull() + ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifDuratedTelegramMedia(block: (DuratedTelegramMedia) -> T) = duratedTelegramMediaOrNull() ?.let(block) +public inline fun TelegramMedia.duratedTelegramMediaOrNull(): DuratedTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.DuratedTelegramMedia -@PreviewFeature -inline fun TelegramMedia.duratedTelegramMediaOrNull(): DuratedTelegramMedia? = this as? DuratedTelegramMedia +public inline fun TelegramMedia.duratedTelegramMediaOrThrow(): DuratedTelegramMedia = this as + dev.inmo.tgbotapi.types.media.DuratedTelegramMedia -@PreviewFeature -inline fun TelegramMedia.duratedTelegramMediaOrThrow(): DuratedTelegramMedia = this as DuratedTelegramMedia +public inline fun TelegramMedia.ifDuratedTelegramMedia(block: (DuratedTelegramMedia) -> T): T? = + duratedTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifTelegramMediaAnimation(block: (TelegramMediaAnimation) -> T) = telegramMediaAnimationOrNull() ?.let(block) +public inline fun TelegramMedia.mediaGroupMemberTelegramMediaOrNull(): + MediaGroupMemberTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.MediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaAnimationOrNull(): TelegramMediaAnimation? = this as? TelegramMediaAnimation +public inline fun TelegramMedia.mediaGroupMemberTelegramMediaOrThrow(): + MediaGroupMemberTelegramMedia = this as + dev.inmo.tgbotapi.types.media.MediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaAnimationOrThrow(): TelegramMediaAnimation = this as TelegramMediaAnimation +public inline fun + TelegramMedia.ifMediaGroupMemberTelegramMedia(block: (MediaGroupMemberTelegramMedia) -> T): T? = + mediaGroupMemberTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifTelegramMediaAudio(block: (TelegramMediaAudio) -> T) = telegramMediaAudioOrNull() ?.let(block) +public inline fun TelegramMedia.audioMediaGroupMemberTelegramMediaOrNull(): + AudioMediaGroupMemberTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.AudioMediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaAudioOrNull(): TelegramMediaAudio? = this as? TelegramMediaAudio +public inline fun TelegramMedia.audioMediaGroupMemberTelegramMediaOrThrow(): + AudioMediaGroupMemberTelegramMedia = this as + dev.inmo.tgbotapi.types.media.AudioMediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaAudioOrThrow(): TelegramMediaAudio = this as TelegramMediaAudio +public inline fun + TelegramMedia.ifAudioMediaGroupMemberTelegramMedia(block: (AudioMediaGroupMemberTelegramMedia) -> T): + T? = audioMediaGroupMemberTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifTelegramMediaDocument(block: (TelegramMediaDocument) -> T) = telegramMediaDocumentOrNull() ?.let(block) +public inline fun TelegramMedia.documentMediaGroupMemberTelegramMediaOrNull(): + DocumentMediaGroupMemberTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.DocumentMediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaDocumentOrNull(): TelegramMediaDocument? = this as? TelegramMediaDocument +public inline fun TelegramMedia.documentMediaGroupMemberTelegramMediaOrThrow(): + DocumentMediaGroupMemberTelegramMedia = this as + dev.inmo.tgbotapi.types.media.DocumentMediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaDocumentOrThrow(): TelegramMediaDocument = this as TelegramMediaDocument +public inline fun + TelegramMedia.ifDocumentMediaGroupMemberTelegramMedia(block: (DocumentMediaGroupMemberTelegramMedia) -> T): + T? = documentMediaGroupMemberTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifTelegramMediaPhoto(block: (TelegramMediaPhoto) -> T) = telegramMediaPhotoOrNull() ?.let(block) +public inline fun TelegramMedia.visualMediaGroupMemberTelegramMediaOrNull(): + VisualMediaGroupMemberTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.VisualMediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaPhotoOrNull(): TelegramMediaPhoto? = this as? TelegramMediaPhoto +public inline fun TelegramMedia.visualMediaGroupMemberTelegramMediaOrThrow(): + VisualMediaGroupMemberTelegramMedia = this as + dev.inmo.tgbotapi.types.media.VisualMediaGroupMemberTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaPhotoOrThrow(): TelegramMediaPhoto = this as TelegramMediaPhoto +public inline fun + TelegramMedia.ifVisualMediaGroupMemberTelegramMedia(block: (VisualMediaGroupMemberTelegramMedia) -> T): + T? = visualMediaGroupMemberTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifTelegramMediaVideo(block: (TelegramMediaVideo) -> T) = telegramMediaVideoOrNull() ?.let(block) +public inline fun TelegramMedia.sizedTelegramMediaOrNull(): SizedTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.SizedTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaVideoOrNull(): TelegramMediaVideo? = this as? TelegramMediaVideo +public inline fun TelegramMedia.sizedTelegramMediaOrThrow(): SizedTelegramMedia = this as + dev.inmo.tgbotapi.types.media.SizedTelegramMedia -@PreviewFeature -inline fun TelegramMedia.telegramMediaVideoOrThrow(): TelegramMediaVideo = this as TelegramMediaVideo +public inline fun TelegramMedia.ifSizedTelegramMedia(block: (SizedTelegramMedia) -> T): T? = + sizedTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifMediaGroupMemberTelegramMedia(block: (MediaGroupMemberTelegramMedia) -> T) = mediaGroupMemberTelegramMediaOrNull() ?.let(block) +public inline fun TelegramMedia.telegramMediaAnimationOrNull(): TelegramMediaAnimation? = this as? + dev.inmo.tgbotapi.types.media.TelegramMediaAnimation -@PreviewFeature -inline fun TelegramMedia.mediaGroupMemberTelegramMediaOrNull(): MediaGroupMemberTelegramMedia? = this as? MediaGroupMemberTelegramMedia +public inline fun TelegramMedia.telegramMediaAnimationOrThrow(): TelegramMediaAnimation = this as + dev.inmo.tgbotapi.types.media.TelegramMediaAnimation -@PreviewFeature -inline fun TelegramMedia.mediaGroupMemberTelegramMediaOrThrow(): MediaGroupMemberTelegramMedia = - this as MediaGroupMemberTelegramMedia +public inline fun TelegramMedia.ifTelegramMediaAnimation(block: (TelegramMediaAnimation) -> T): + T? = telegramMediaAnimationOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifSizedTelegramMedia(block: (SizedTelegramMedia) -> T) = sizedTelegramMediaOrNull() ?.let(block) +public inline fun TelegramMedia.telegramMediaAudioOrNull(): TelegramMediaAudio? = this as? + dev.inmo.tgbotapi.types.media.TelegramMediaAudio -@PreviewFeature -inline fun TelegramMedia.sizedTelegramMediaOrNull(): SizedTelegramMedia? = this as? SizedTelegramMedia +public inline fun TelegramMedia.telegramMediaAudioOrThrow(): TelegramMediaAudio = this as + dev.inmo.tgbotapi.types.media.TelegramMediaAudio -@PreviewFeature -inline fun TelegramMedia.sizedTelegramMediaOrThrow(): SizedTelegramMedia = this as SizedTelegramMedia +public inline fun TelegramMedia.ifTelegramMediaAudio(block: (TelegramMediaAudio) -> T): T? = + telegramMediaAudioOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifThumbedTelegramMedia(block: (ThumbedTelegramMedia) -> T) = thumbedTelegramMediaOrNull() ?.let(block) +public inline fun TelegramMedia.telegramMediaDocumentOrNull(): TelegramMediaDocument? = this as? + dev.inmo.tgbotapi.types.media.TelegramMediaDocument -@PreviewFeature -inline fun TelegramMedia.thumbedTelegramMediaOrNull(): ThumbedTelegramMedia? = this as? ThumbedTelegramMedia +public inline fun TelegramMedia.telegramMediaDocumentOrThrow(): TelegramMediaDocument = this as + dev.inmo.tgbotapi.types.media.TelegramMediaDocument -@PreviewFeature -inline fun TelegramMedia.thumbedTelegramMediaOrThrow(): ThumbedTelegramMedia = this as ThumbedTelegramMedia +public inline fun TelegramMedia.ifTelegramMediaDocument(block: (TelegramMediaDocument) -> T): T? + = telegramMediaDocumentOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifTitledTelegramMedia(block: (TitledTelegramMedia) -> T) = titledTelegramMediaOrNull() ?.let(block) +public inline fun TelegramMedia.telegramMediaPhotoOrNull(): TelegramMediaPhoto? = this as? + dev.inmo.tgbotapi.types.media.TelegramMediaPhoto -@PreviewFeature -inline fun TelegramMedia.titledTelegramMediaOrNull(): TitledTelegramMedia? = this as? TitledTelegramMedia +public inline fun TelegramMedia.telegramMediaPhotoOrThrow(): TelegramMediaPhoto = this as + dev.inmo.tgbotapi.types.media.TelegramMediaPhoto -@PreviewFeature -inline fun TelegramMedia.titledTelegramMediaOrThrow(): TitledTelegramMedia = this as TitledTelegramMedia +public inline fun TelegramMedia.ifTelegramMediaPhoto(block: (TelegramMediaPhoto) -> T): T? = + telegramMediaPhotoOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMedia.ifVisualMediaGroupMemberTelegramMedia(block: (VisualMediaGroupMemberTelegramMedia) -> T) = visualMediaGroupMemberTelegramMediaOrNull() ?.let(block) +public inline fun TelegramMedia.telegramMediaVideoOrNull(): TelegramMediaVideo? = this as? + dev.inmo.tgbotapi.types.media.TelegramMediaVideo -@PreviewFeature -inline fun TelegramMedia.visualMediaGroupMemberTelegramMediaOrNull(): VisualMediaGroupMemberTelegramMedia? = - this as? VisualMediaGroupMemberTelegramMedia +public inline fun TelegramMedia.telegramMediaVideoOrThrow(): TelegramMediaVideo = this as + dev.inmo.tgbotapi.types.media.TelegramMediaVideo -@PreviewFeature -inline fun TelegramMedia.visualMediaGroupMemberTelegramMediaOrThrow(): VisualMediaGroupMemberTelegramMedia = - this as VisualMediaGroupMemberTelegramMedia +public inline fun TelegramMedia.ifTelegramMediaVideo(block: (TelegramMediaVideo) -> T): T? = + telegramMediaVideoOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifCallbackQueryUpdate(block: (CallbackQueryUpdate) -> T) = callbackQueryUpdateOrNull() ?.let(block) +public inline fun TelegramMedia.thumbedTelegramMediaOrNull(): ThumbedTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.ThumbedTelegramMedia -@PreviewFeature -inline fun Update.callbackQueryUpdateOrNull(): CallbackQueryUpdate? = this as? CallbackQueryUpdate +public inline fun TelegramMedia.thumbedTelegramMediaOrThrow(): ThumbedTelegramMedia = this as + dev.inmo.tgbotapi.types.media.ThumbedTelegramMedia -@PreviewFeature -inline fun Update.callbackQueryUpdateOrThrow(): CallbackQueryUpdate = this as CallbackQueryUpdate +public inline fun TelegramMedia.ifThumbedTelegramMedia(block: (ThumbedTelegramMedia) -> T): T? = + thumbedTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifChannelPostUpdate(block: (ChannelPostUpdate) -> T) = channelPostUpdateOrNull() ?.let(block) +public inline fun TelegramMedia.titledTelegramMediaOrNull(): TitledTelegramMedia? = this as? + dev.inmo.tgbotapi.types.media.TitledTelegramMedia -@PreviewFeature -inline fun Update.channelPostUpdateOrNull(): ChannelPostUpdate? = this as? ChannelPostUpdate +public inline fun TelegramMedia.titledTelegramMediaOrThrow(): TitledTelegramMedia = this as + dev.inmo.tgbotapi.types.media.TitledTelegramMedia -@PreviewFeature -inline fun Update.channelPostUpdateOrThrow(): ChannelPostUpdate = this as ChannelPostUpdate +public inline fun TelegramMedia.ifTitledTelegramMedia(block: (TitledTelegramMedia) -> T): T? = + titledTelegramMediaOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifChosenInlineResultUpdate(block: (ChosenInlineResultUpdate) -> T) = chosenInlineResultUpdateOrNull() ?.let(block) +public inline fun ChatEvent.channelChatCreatedOrNull(): ChannelChatCreated? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.ChannelChatCreated -@PreviewFeature -inline fun Update.chosenInlineResultUpdateOrNull(): ChosenInlineResultUpdate? = this as? ChosenInlineResultUpdate +public inline fun ChatEvent.channelChatCreatedOrThrow(): ChannelChatCreated = this as + dev.inmo.tgbotapi.types.message.ChatEvents.ChannelChatCreated -@PreviewFeature -inline fun Update.chosenInlineResultUpdateOrThrow(): ChosenInlineResultUpdate = this as ChosenInlineResultUpdate +public inline fun ChatEvent.ifChannelChatCreated(block: (ChannelChatCreated) -> T): T? = + channelChatCreatedOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifEditChannelPostUpdate(block: (EditChannelPostUpdate) -> T) = editChannelPostUpdateOrNull() ?.let(block) +public inline fun ChatEvent.deleteChatPhotoOrNull(): DeleteChatPhoto? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.DeleteChatPhoto -@PreviewFeature -inline fun Update.editChannelPostUpdateOrNull(): EditChannelPostUpdate? = this as? EditChannelPostUpdate +public inline fun ChatEvent.deleteChatPhotoOrThrow(): DeleteChatPhoto = this as + dev.inmo.tgbotapi.types.message.ChatEvents.DeleteChatPhoto -@PreviewFeature -inline fun Update.editChannelPostUpdateOrThrow(): EditChannelPostUpdate = this as EditChannelPostUpdate +public inline fun ChatEvent.ifDeleteChatPhoto(block: (DeleteChatPhoto) -> T): T? = + deleteChatPhotoOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifEditMessageUpdate(block: (EditMessageUpdate) -> T) = editMessageUpdateOrNull() ?.let(block) +public inline fun ChatEvent.groupChatCreatedOrNull(): GroupChatCreated? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.GroupChatCreated -@PreviewFeature -inline fun Update.editMessageUpdateOrNull(): EditMessageUpdate? = this as? EditMessageUpdate +public inline fun ChatEvent.groupChatCreatedOrThrow(): GroupChatCreated = this as + dev.inmo.tgbotapi.types.message.ChatEvents.GroupChatCreated -@PreviewFeature -inline fun Update.editMessageUpdateOrThrow(): EditMessageUpdate = this as EditMessageUpdate +public inline fun ChatEvent.ifGroupChatCreated(block: (GroupChatCreated) -> T): T? = + groupChatCreatedOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifInlineQueryUpdate(block: (InlineQueryUpdate) -> T) = inlineQueryUpdateOrNull() ?.let(block) +public inline fun ChatEvent.leftChatMemberEventOrNull(): LeftChatMemberEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMemberEvent -@PreviewFeature -inline fun Update.inlineQueryUpdateOrNull(): InlineQueryUpdate? = this as? InlineQueryUpdate +public inline fun ChatEvent.leftChatMemberEventOrThrow(): LeftChatMemberEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMemberEvent -@PreviewFeature -inline fun Update.inlineQueryUpdateOrThrow(): InlineQueryUpdate = this as InlineQueryUpdate +public inline fun ChatEvent.ifLeftChatMemberEvent(block: (LeftChatMemberEvent) -> T): T? = + leftChatMemberEventOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifChannelPostMediaGroupUpdate(block: (ChannelPostMediaGroupUpdate) -> T) = channelPostMediaGroupUpdateOrNull() ?.let(block) +public inline fun ChatEvent.messageAutoDeleteTimerChangedOrNull(): MessageAutoDeleteTimerChanged? = + this as? dev.inmo.tgbotapi.types.message.ChatEvents.MessageAutoDeleteTimerChanged -@PreviewFeature -inline fun Update.channelPostMediaGroupUpdateOrNull(): ChannelPostMediaGroupUpdate? = this as? ChannelPostMediaGroupUpdate +public inline fun ChatEvent.messageAutoDeleteTimerChangedOrThrow(): MessageAutoDeleteTimerChanged = + this as dev.inmo.tgbotapi.types.message.ChatEvents.MessageAutoDeleteTimerChanged -@PreviewFeature -inline fun Update.channelPostMediaGroupUpdateOrThrow(): ChannelPostMediaGroupUpdate = - this as ChannelPostMediaGroupUpdate +public inline fun + ChatEvent.ifMessageAutoDeleteTimerChanged(block: (MessageAutoDeleteTimerChanged) -> T): T? = + messageAutoDeleteTimerChangedOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifEditChannelPostMediaGroupUpdate(block: (EditChannelPostMediaGroupUpdate) -> T) = editChannelPostMediaGroupUpdateOrNull() ?.let(block) +public inline fun ChatEvent.migratedToSupergroupOrNull(): MigratedToSupergroup? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.MigratedToSupergroup -@PreviewFeature -inline fun Update.editChannelPostMediaGroupUpdateOrNull(): EditChannelPostMediaGroupUpdate? = - this as? EditChannelPostMediaGroupUpdate +public inline fun ChatEvent.migratedToSupergroupOrThrow(): MigratedToSupergroup = this as + dev.inmo.tgbotapi.types.message.ChatEvents.MigratedToSupergroup -@PreviewFeature -inline fun Update.editChannelPostMediaGroupUpdateOrThrow(): EditChannelPostMediaGroupUpdate = - this as EditChannelPostMediaGroupUpdate +public inline fun ChatEvent.ifMigratedToSupergroup(block: (MigratedToSupergroup) -> T): T? = + migratedToSupergroupOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifEditMediaGroupUpdate(block: (EditMediaGroupUpdate) -> T) = editMediaGroupUpdateOrNull() ?.let(block) +public inline fun ChatEvent.newChatMembersOrNull(): NewChatMembers? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.NewChatMembers -@PreviewFeature -inline fun Update.editMediaGroupUpdateOrNull(): EditMediaGroupUpdate? = this as? EditMediaGroupUpdate +public inline fun ChatEvent.newChatMembersOrThrow(): NewChatMembers = this as + dev.inmo.tgbotapi.types.message.ChatEvents.NewChatMembers -@PreviewFeature -inline fun Update.editMediaGroupUpdateOrThrow(): EditMediaGroupUpdate = this as EditMediaGroupUpdate +public inline fun ChatEvent.ifNewChatMembers(block: (NewChatMembers) -> T): T? = + newChatMembersOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifEditMessageMediaGroupUpdate(block: (EditMessageMediaGroupUpdate) -> T) = editMessageMediaGroupUpdateOrNull() ?.let(block) +public inline fun ChatEvent.newChatPhotoOrNull(): NewChatPhoto? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.NewChatPhoto -@PreviewFeature -inline fun Update.editMessageMediaGroupUpdateOrNull(): EditMessageMediaGroupUpdate? = this as? EditMessageMediaGroupUpdate +public inline fun ChatEvent.newChatPhotoOrThrow(): NewChatPhoto = this as + dev.inmo.tgbotapi.types.message.ChatEvents.NewChatPhoto -@PreviewFeature -inline fun Update.editMessageMediaGroupUpdateOrThrow(): EditMessageMediaGroupUpdate = - this as EditMessageMediaGroupUpdate +public inline fun ChatEvent.ifNewChatPhoto(block: (NewChatPhoto) -> T): T? = + newChatPhotoOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifMediaGroupUpdate(block: (MediaGroupUpdate) -> T) = mediaGroupUpdateOrNull() ?.let(block) +public inline fun ChatEvent.newChatTitleOrNull(): NewChatTitle? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.NewChatTitle -@PreviewFeature -inline fun Update.mediaGroupUpdateOrNull(): MediaGroupUpdate? = this as? MediaGroupUpdate +public inline fun ChatEvent.newChatTitleOrThrow(): NewChatTitle = this as + dev.inmo.tgbotapi.types.message.ChatEvents.NewChatTitle -@PreviewFeature -inline fun Update.mediaGroupUpdateOrThrow(): MediaGroupUpdate = this as MediaGroupUpdate +public inline fun ChatEvent.ifNewChatTitle(block: (NewChatTitle) -> T): T? = + newChatTitleOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifMessageMediaGroupUpdate(block: (MessageMediaGroupUpdate) -> T) = messageMediaGroupUpdateOrNull() ?.let(block) +public inline fun ChatEvent.pinnedMessageOrNull(): PinnedMessage? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.PinnedMessage -@PreviewFeature -inline fun Update.messageMediaGroupUpdateOrNull(): MessageMediaGroupUpdate? = this as? MessageMediaGroupUpdate +public inline fun ChatEvent.pinnedMessageOrThrow(): PinnedMessage = this as + dev.inmo.tgbotapi.types.message.ChatEvents.PinnedMessage -@PreviewFeature -inline fun Update.messageMediaGroupUpdateOrThrow(): MessageMediaGroupUpdate = this as MessageMediaGroupUpdate +public inline fun ChatEvent.ifPinnedMessage(block: (PinnedMessage) -> T): T? = + pinnedMessageOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifSentMediaGroupUpdate(block: (SentMediaGroupUpdate) -> T) = sentMediaGroupUpdateOrNull() ?.let(block) +public inline fun ChatEvent.proximityAlertTriggeredOrNull(): ProximityAlertTriggered? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.ProximityAlertTriggered -@PreviewFeature -inline fun Update.sentMediaGroupUpdateOrNull(): SentMediaGroupUpdate? = this as? SentMediaGroupUpdate +public inline fun ChatEvent.proximityAlertTriggeredOrThrow(): ProximityAlertTriggered = this as + dev.inmo.tgbotapi.types.message.ChatEvents.ProximityAlertTriggered -@PreviewFeature -inline fun Update.sentMediaGroupUpdateOrThrow(): SentMediaGroupUpdate = this as SentMediaGroupUpdate +public inline fun ChatEvent.ifProximityAlertTriggered(block: (ProximityAlertTriggered) -> T): T? + = proximityAlertTriggeredOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifMessageUpdate(block: (MessageUpdate) -> T) = messageUpdateOrNull() ?.let(block) +public inline fun ChatEvent.supergroupChatCreatedOrNull(): SupergroupChatCreated? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.SupergroupChatCreated -@PreviewFeature -inline fun Update.messageUpdateOrNull(): MessageUpdate? = this as? MessageUpdate +public inline fun ChatEvent.supergroupChatCreatedOrThrow(): SupergroupChatCreated = this as + dev.inmo.tgbotapi.types.message.ChatEvents.SupergroupChatCreated -@PreviewFeature -inline fun Update.messageUpdateOrThrow(): MessageUpdate = this as MessageUpdate +public inline fun ChatEvent.ifSupergroupChatCreated(block: (SupergroupChatCreated) -> T): T? = + supergroupChatCreatedOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifPollAnswerUpdate(block: (PollAnswerUpdate) -> T) = pollAnswerUpdateOrNull() ?.let(block) +public inline fun ChatEvent.userLoggedInOrNull(): UserLoggedIn? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.UserLoggedIn -@PreviewFeature -inline fun Update.pollAnswerUpdateOrNull(): PollAnswerUpdate? = this as? PollAnswerUpdate +public inline fun ChatEvent.userLoggedInOrThrow(): UserLoggedIn = this as + dev.inmo.tgbotapi.types.message.ChatEvents.UserLoggedIn -@PreviewFeature -inline fun Update.pollAnswerUpdateOrThrow(): PollAnswerUpdate = this as PollAnswerUpdate +public inline fun ChatEvent.ifUserLoggedIn(block: (UserLoggedIn) -> T): T? = + userLoggedInOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifPollUpdate(block: (PollUpdate) -> T) = pollUpdateOrNull() ?.let(block) +public inline fun ChatEvent.webAppDataOrNull(): WebAppData? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.WebAppData -@PreviewFeature -inline fun Update.pollUpdateOrNull(): PollUpdate? = this as? PollUpdate +public inline fun ChatEvent.webAppDataOrThrow(): WebAppData = this as + dev.inmo.tgbotapi.types.message.ChatEvents.WebAppData -@PreviewFeature -inline fun Update.pollUpdateOrThrow(): PollUpdate = this as PollUpdate +public inline fun ChatEvent.ifWebAppData(block: (WebAppData) -> T): T? = webAppDataOrNull() + ?.let(block) -@PreviewFeature -inline fun Update.ifPreCheckoutQueryUpdate(block: (PreCheckoutQueryUpdate) -> T) = preCheckoutQueryUpdateOrNull() ?.let(block) +public inline fun ChatEvent.channelEventOrNull(): ChannelEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent -@PreviewFeature -inline fun Update.preCheckoutQueryUpdateOrNull(): PreCheckoutQueryUpdate? = this as? PreCheckoutQueryUpdate +public inline fun ChatEvent.channelEventOrThrow(): ChannelEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent -@PreviewFeature -inline fun Update.preCheckoutQueryUpdateOrThrow(): PreCheckoutQueryUpdate = this as PreCheckoutQueryUpdate +public inline fun ChatEvent.ifChannelEvent(block: (ChannelEvent) -> T): T? = + channelEventOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifShippingQueryUpdate(block: (ShippingQueryUpdate) -> T) = shippingQueryUpdateOrNull() ?.let(block) +public inline fun ChatEvent.commonEventOrNull(): CommonEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.CommonEvent -@PreviewFeature -inline fun Update.shippingQueryUpdateOrNull(): ShippingQueryUpdate? = this as? ShippingQueryUpdate +public inline fun ChatEvent.commonEventOrThrow(): CommonEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.CommonEvent -@PreviewFeature -inline fun Update.shippingQueryUpdateOrThrow(): ShippingQueryUpdate = this as ShippingQueryUpdate +public inline fun ChatEvent.ifCommonEvent(block: (CommonEvent) -> T): T? = commonEventOrNull() + ?.let(block) -@PreviewFeature -inline fun Update.ifBaseEditMessageUpdate(block: (BaseEditMessageUpdate) -> T) = baseEditMessageUpdateOrNull() ?.let(block) +public inline fun ChatEvent.groupEventOrNull(): GroupEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent -@PreviewFeature -inline fun Update.baseEditMessageUpdateOrNull(): BaseEditMessageUpdate? = this as? BaseEditMessageUpdate +public inline fun ChatEvent.groupEventOrThrow(): GroupEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent -@PreviewFeature -inline fun Update.baseEditMessageUpdateOrThrow(): BaseEditMessageUpdate = this as BaseEditMessageUpdate +public inline fun ChatEvent.ifGroupEvent(block: (GroupEvent) -> T): T? = groupEventOrNull() + ?.let(block) -@PreviewFeature -inline fun Update.ifBaseMessageUpdate(block: (BaseMessageUpdate) -> T) = baseMessageUpdateOrNull() ?.let(block) +public inline fun ChatEvent.privateEventOrNull(): PrivateEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PrivateEvent -@PreviewFeature -inline fun Update.baseMessageUpdateOrNull(): BaseMessageUpdate? = this as? BaseMessageUpdate +public inline fun ChatEvent.privateEventOrThrow(): PrivateEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PrivateEvent -@PreviewFeature -inline fun Update.baseMessageUpdateOrThrow(): BaseMessageUpdate = this as BaseMessageUpdate +public inline fun ChatEvent.ifPrivateEvent(block: (PrivateEvent) -> T): T? = + privateEventOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifBaseSentMessageUpdate(block: (BaseSentMessageUpdate) -> T) = baseSentMessageUpdateOrNull() ?.let(block) +public inline fun ChatEvent.publicChatEventOrNull(): PublicChatEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PublicChatEvent -@PreviewFeature -inline fun Update.baseSentMessageUpdateOrNull(): BaseSentMessageUpdate? = this as? BaseSentMessageUpdate +public inline fun ChatEvent.publicChatEventOrThrow(): PublicChatEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PublicChatEvent -@PreviewFeature -inline fun Update.baseSentMessageUpdateOrThrow(): BaseSentMessageUpdate = this as BaseSentMessageUpdate +public inline fun ChatEvent.ifPublicChatEvent(block: (PublicChatEvent) -> T): T? = + publicChatEventOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifUnknownUpdate(block: (UnknownUpdate) -> T) = unknownUpdateOrNull() ?.let(block) +public inline fun ChatEvent.supergroupEventOrNull(): SupergroupEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent -@PreviewFeature -inline fun Update.unknownUpdateOrNull(): UnknownUpdate? = this as? UnknownUpdate +public inline fun ChatEvent.supergroupEventOrThrow(): SupergroupEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent -@PreviewFeature -inline fun Update.unknownUpdateOrThrow(): UnknownUpdate = this as UnknownUpdate +public inline fun ChatEvent.ifSupergroupEvent(block: (SupergroupEvent) -> T): T? = + supergroupEventOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifCommonChatMemberUpdatedUpdate(block: (CommonChatMemberUpdatedUpdate) -> T) = commonChatMemberUpdatedUpdateOrNull() ?.let(block) +public inline fun ChatEvent.videoChatEventOrNull(): VideoChatEvent? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VideoChatEvent -@PreviewFeature -inline fun Update.commonChatMemberUpdatedUpdateOrNull(): CommonChatMemberUpdatedUpdate? = - this as? CommonChatMemberUpdatedUpdate +public inline fun ChatEvent.videoChatEventOrThrow(): VideoChatEvent = this as + dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VideoChatEvent -@PreviewFeature -inline fun Update.commonChatMemberUpdatedUpdateOrThrow(): CommonChatMemberUpdatedUpdate = - this as CommonChatMemberUpdatedUpdate +public inline fun ChatEvent.ifVideoChatEvent(block: (VideoChatEvent) -> T): T? = + videoChatEventOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifMyChatMemberUpdatedUpdate(block: (MyChatMemberUpdatedUpdate) -> T) = myChatMemberUpdatedUpdateOrNull() ?.let(block) +public inline fun ChatEvent.videoChatEndedOrNull(): VideoChatEnded? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatEnded -@PreviewFeature -inline fun Update.myChatMemberUpdatedUpdateOrNull(): MyChatMemberUpdatedUpdate? = this as? MyChatMemberUpdatedUpdate +public inline fun ChatEvent.videoChatEndedOrThrow(): VideoChatEnded = this as + dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatEnded -@PreviewFeature -inline fun Update.myChatMemberUpdatedUpdateOrThrow(): MyChatMemberUpdatedUpdate = this as MyChatMemberUpdatedUpdate +public inline fun ChatEvent.ifVideoChatEnded(block: (VideoChatEnded) -> T): T? = + videoChatEndedOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifChatMemberUpdatedUpdate(block: (ChatMemberUpdatedUpdate) -> T) = chatMemberUpdatedUpdateOrNull() ?.let(block) +public inline fun ChatEvent.videoChatParticipantsInvitedOrNull(): VideoChatParticipantsInvited? = + this as? dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatParticipantsInvited -@PreviewFeature -inline fun Update.chatMemberUpdatedUpdateOrNull(): ChatMemberUpdatedUpdate? = this as? ChatMemberUpdatedUpdate +public inline fun ChatEvent.videoChatParticipantsInvitedOrThrow(): VideoChatParticipantsInvited = + this as dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatParticipantsInvited -@PreviewFeature -inline fun Update.chatMemberUpdatedUpdateOrThrow(): ChatMemberUpdatedUpdate = this as ChatMemberUpdatedUpdate +public inline fun + ChatEvent.ifVideoChatParticipantsInvited(block: (VideoChatParticipantsInvited) -> T): T? = + videoChatParticipantsInvitedOrNull() ?.let(block) -@PreviewFeature -inline fun Update.ifChatJoinRequestUpdate(block: (ChatJoinRequestUpdate) -> T) = chatJoinRequestUpdateOrNull() ?.let(block) +public inline fun ChatEvent.videoChatScheduledOrNull(): VideoChatScheduled? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatScheduled -@PreviewFeature -inline fun Update.chatJoinRequestUpdateOrNull(): ChatJoinRequestUpdate? = this as? ChatJoinRequestUpdate +public inline fun ChatEvent.videoChatScheduledOrThrow(): VideoChatScheduled = this as + dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatScheduled -@PreviewFeature -inline fun Update.chatJoinRequestUpdateOrThrow(): ChatJoinRequestUpdate = this as ChatJoinRequestUpdate +public inline fun ChatEvent.ifVideoChatScheduled(block: (VideoChatScheduled) -> T): T? = + videoChatScheduledOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifAnimationFile(block: (AnimationFile) -> T) = animationFileOrNull() ?.let(block) +public inline fun ChatEvent.videoChatStartedOrNull(): VideoChatStarted? = this as? + dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatStarted -@PreviewFeature -inline fun TelegramMediaFile.animationFileOrNull(): AnimationFile? = this as? AnimationFile +public inline fun ChatEvent.videoChatStartedOrThrow(): VideoChatStarted = this as + dev.inmo.tgbotapi.types.message.ChatEvents.voice.VideoChatStarted -@PreviewFeature -inline fun TelegramMediaFile.animationFileOrThrow(): AnimationFile = this as AnimationFile +public inline fun ChatEvent.ifVideoChatStarted(block: (VideoChatStarted) -> T): T? = + videoChatStartedOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifAudioFile(block: (AudioFile) -> T) = audioFileOrNull() ?.let(block) +public inline fun ChatEvent.successfulPaymentEventOrNull(): SuccessfulPaymentEvent? = this as? + dev.inmo.tgbotapi.types.message.payments.SuccessfulPaymentEvent -@PreviewFeature -inline fun TelegramMediaFile.audioFileOrNull(): AudioFile? = this as? AudioFile +public inline fun ChatEvent.successfulPaymentEventOrThrow(): SuccessfulPaymentEvent = this as + dev.inmo.tgbotapi.types.message.payments.SuccessfulPaymentEvent -@PreviewFeature -inline fun TelegramMediaFile.audioFileOrThrow(): AudioFile = this as AudioFile +public inline fun ChatEvent.ifSuccessfulPaymentEvent(block: (SuccessfulPaymentEvent) -> T): T? = + successfulPaymentEventOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifDocumentFile(block: (DocumentFile) -> T) = documentFileOrNull() ?.let(block) +public inline fun ForwardInfo.byAnonymousOrNull(): ForwardInfo.ByAnonymous? = this as? + dev.inmo.tgbotapi.types.message.ForwardInfo.ByAnonymous -@PreviewFeature -inline fun TelegramMediaFile.documentFileOrNull(): DocumentFile? = this as? DocumentFile +public inline fun ForwardInfo.byAnonymousOrThrow(): ForwardInfo.ByAnonymous = this as + dev.inmo.tgbotapi.types.message.ForwardInfo.ByAnonymous -@PreviewFeature -inline fun TelegramMediaFile.documentFileOrThrow(): DocumentFile = this as DocumentFile +public inline fun ForwardInfo.ifByAnonymous(block: (ForwardInfo.ByAnonymous) -> T): T? = + byAnonymousOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifFile(block: (File) -> T) = fileOrNull() ?.let(block) +public inline fun ForwardInfo.byUserOrNull(): ForwardInfo.ByUser? = this as? + dev.inmo.tgbotapi.types.message.ForwardInfo.ByUser -@PreviewFeature -inline fun TelegramMediaFile.fileOrNull(): File? = this as? File +public inline fun ForwardInfo.byUserOrThrow(): ForwardInfo.ByUser = this as + dev.inmo.tgbotapi.types.message.ForwardInfo.ByUser -@PreviewFeature -inline fun TelegramMediaFile.fileOrThrow(): File = this as File +public inline fun ForwardInfo.ifByUser(block: (ForwardInfo.ByUser) -> T): T? = byUserOrNull() + ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifPathedFile(block: (PathedFile) -> T) = pathedFileOrNull() ?.let(block) +public inline fun ForwardInfo.publicChatOrNull(): ForwardInfo.PublicChat? = this as? + dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat -@PreviewFeature -inline fun TelegramMediaFile.pathedFileOrNull(): PathedFile? = this as? PathedFile +public inline fun ForwardInfo.publicChatOrThrow(): ForwardInfo.PublicChat = this as + dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat -@PreviewFeature -inline fun TelegramMediaFile.pathedFileOrThrow(): PathedFile = this as PathedFile +public inline fun ForwardInfo.ifPublicChat(block: (ForwardInfo.PublicChat) -> T): T? = + publicChatOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifPhotoSize(block: (PhotoSize) -> T) = photoSizeOrNull() ?.let(block) +public inline fun ForwardInfo.fromChannelOrNull(): ForwardInfo.PublicChat.FromChannel? = this as? + dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat.FromChannel -@PreviewFeature -inline fun TelegramMediaFile.photoSizeOrNull(): PhotoSize? = this as? PhotoSize +public inline fun ForwardInfo.fromChannelOrThrow(): ForwardInfo.PublicChat.FromChannel = this as + dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat.FromChannel -@PreviewFeature -inline fun TelegramMediaFile.photoSizeOrThrow(): PhotoSize = this as PhotoSize +public inline fun ForwardInfo.ifFromChannel(block: (ForwardInfo.PublicChat.FromChannel) -> T): + T? = fromChannelOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifSticker(block: (Sticker) -> T) = stickerOrNull() ?.let(block) +public inline fun ForwardInfo.fromSupergroupOrNull(): ForwardInfo.PublicChat.FromSupergroup? = this + as? dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat.FromSupergroup -@PreviewFeature -inline fun TelegramMediaFile.stickerOrNull(): Sticker? = this as? Sticker +public inline fun ForwardInfo.fromSupergroupOrThrow(): ForwardInfo.PublicChat.FromSupergroup = this + as dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat.FromSupergroup -@PreviewFeature -inline fun TelegramMediaFile.stickerOrThrow(): Sticker = this as Sticker +public inline fun + ForwardInfo.ifFromSupergroup(block: (ForwardInfo.PublicChat.FromSupergroup) -> T): T? = + fromSupergroupOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifSimpleSticker(block: (SimpleSticker) -> T) = simpleStickerOrNull() ?.let(block) +public inline fun ForwardInfo.sentByChannelOrNull(): ForwardInfo.PublicChat.SentByChannel? = this + as? dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat.SentByChannel -@PreviewFeature -inline fun TelegramMediaFile.simpleStickerOrNull(): SimpleSticker? = this as? SimpleSticker +public inline fun ForwardInfo.sentByChannelOrThrow(): ForwardInfo.PublicChat.SentByChannel = this as + dev.inmo.tgbotapi.types.message.ForwardInfo.PublicChat.SentByChannel -@PreviewFeature -inline fun TelegramMediaFile.simpleStickerOrThrow(): SimpleSticker = this as SimpleSticker +public inline fun + ForwardInfo.ifSentByChannel(block: (ForwardInfo.PublicChat.SentByChannel) -> T): T? = + sentByChannelOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifAnimatedSticker(block: (AnimatedSticker) -> T) = animatedStickerOrNull() ?.let(block) +public inline fun Message.channelContentMessageImplOrNull(): + ChannelContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.ChannelContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.animatedStickerOrNull(): AnimatedSticker? = this as? AnimatedSticker +public inline fun Message.channelContentMessageImplOrThrow(): + ChannelContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.ChannelContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.animatedStickerOrThrow(): AnimatedSticker = this as AnimatedSticker +public inline fun + Message.ifChannelContentMessageImpl(block: (ChannelContentMessageImpl) -> T): T? + = channelContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifVideoSticker(block: (VideoSticker) -> T) = videoStickerOrNull() ?.let(block) +public inline fun Message.channelEventMessageOrNull(): ChannelEventMessage? = this as? + dev.inmo.tgbotapi.types.message.ChannelEventMessage -@PreviewFeature -inline fun TelegramMediaFile.videoStickerOrNull(): VideoSticker? = this as? VideoSticker +public inline fun Message.channelEventMessageOrThrow(): ChannelEventMessage = this as + dev.inmo.tgbotapi.types.message.ChannelEventMessage -@PreviewFeature -inline fun TelegramMediaFile.videoStickerOrThrow(): VideoSticker = this as VideoSticker +public inline fun + Message.ifChannelEventMessage(block: (ChannelEventMessage) -> T): T? = + channelEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifVideoFile(block: (VideoFile) -> T) = videoFileOrNull() ?.let(block) +public inline fun Message.channelMediaGroupMessageOrNull(): + ChannelMediaGroupMessage? = this as? + dev.inmo.tgbotapi.types.message.ChannelMediaGroupMessage -@PreviewFeature -inline fun TelegramMediaFile.videoFileOrNull(): VideoFile? = this as? VideoFile +public inline fun Message.channelMediaGroupMessageOrThrow(): + ChannelMediaGroupMessage = this as + dev.inmo.tgbotapi.types.message.ChannelMediaGroupMessage -@PreviewFeature -inline fun TelegramMediaFile.videoFileOrThrow(): VideoFile = this as VideoFile +public inline fun + Message.ifChannelMediaGroupMessage(block: (ChannelMediaGroupMessage) -> T): + T? = channelMediaGroupMessageOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifVideoNoteFile(block: (VideoNoteFile) -> T) = videoNoteFileOrNull() ?.let(block) +public inline fun Message.commonGroupEventMessageOrNull(): CommonGroupEventMessage? = + this as? + dev.inmo.tgbotapi.types.message.CommonGroupEventMessage -@PreviewFeature -inline fun TelegramMediaFile.videoNoteFileOrNull(): VideoNoteFile? = this as? VideoNoteFile +public inline fun Message.commonGroupEventMessageOrThrow(): CommonGroupEventMessage = + this as + dev.inmo.tgbotapi.types.message.CommonGroupEventMessage -@PreviewFeature -inline fun TelegramMediaFile.videoNoteFileOrThrow(): VideoNoteFile = this as VideoNoteFile +public inline fun + Message.ifCommonGroupEventMessage(block: (CommonGroupEventMessage) -> T): T? = + commonGroupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifVoiceFile(block: (VoiceFile) -> T) = voiceFileOrNull() ?.let(block) +public inline fun Message.commonMediaGroupMessageOrNull(): + CommonMediaGroupMessage? = this as? + dev.inmo.tgbotapi.types.message.CommonMediaGroupMessage -@PreviewFeature -inline fun TelegramMediaFile.voiceFileOrNull(): VoiceFile? = this as? VoiceFile +public inline fun Message.commonMediaGroupMessageOrThrow(): + CommonMediaGroupMessage = this as + dev.inmo.tgbotapi.types.message.CommonMediaGroupMessage -@PreviewFeature -inline fun TelegramMediaFile.voiceFileOrThrow(): VoiceFile = this as VoiceFile +public inline fun + Message.ifCommonMediaGroupMessage(block: (CommonMediaGroupMessage) -> T): T? + = commonMediaGroupMessageOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifMimedMediaFile(block: (MimedMediaFile) -> T) = mimedMediaFileOrNull() ?.let(block) +public inline fun Message.commonSupergroupEventMessageOrNull(): + CommonSupergroupEventMessage? = this as? + dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage -@PreviewFeature -inline fun TelegramMediaFile.mimedMediaFileOrNull(): MimedMediaFile? = this as? MimedMediaFile +public inline fun Message.commonSupergroupEventMessageOrThrow(): + CommonSupergroupEventMessage = this as + dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage -@PreviewFeature -inline fun TelegramMediaFile.mimedMediaFileOrThrow(): MimedMediaFile = this as MimedMediaFile +public inline fun + Message.ifCommonSupergroupEventMessage(block: (CommonSupergroupEventMessage) -> T): + T? = commonSupergroupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifPlayableMediaFile(block: (PlayableMediaFile) -> T) = playableMediaFileOrNull() ?.let(block) +public inline fun Message.connectedFromChannelGroupContentMessageImplOrNull(): + ConnectedFromChannelGroupContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.ConnectedFromChannelGroupContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.playableMediaFileOrNull(): PlayableMediaFile? = this as? PlayableMediaFile +public inline fun Message.connectedFromChannelGroupContentMessageImplOrThrow(): + ConnectedFromChannelGroupContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.ConnectedFromChannelGroupContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.playableMediaFileOrThrow(): PlayableMediaFile = this as PlayableMediaFile +public inline fun + Message.ifConnectedFromChannelGroupContentMessageImpl(block: (ConnectedFromChannelGroupContentMessageImpl) -> T): + T? = connectedFromChannelGroupContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifSizedMediaFile(block: (SizedMediaFile) -> T) = sizedMediaFileOrNull() ?.let(block) +public inline fun Message.unconnectedFromChannelGroupContentMessageImplOrNull(): + UnconnectedFromChannelGroupContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.UnconnectedFromChannelGroupContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.sizedMediaFileOrNull(): SizedMediaFile? = this as? SizedMediaFile +public inline fun Message.unconnectedFromChannelGroupContentMessageImplOrThrow(): + UnconnectedFromChannelGroupContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.UnconnectedFromChannelGroupContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.sizedMediaFileOrThrow(): SizedMediaFile = this as SizedMediaFile +public inline fun + Message.ifUnconnectedFromChannelGroupContentMessageImpl(block: (UnconnectedFromChannelGroupContentMessageImpl) -> T): + T? = unconnectedFromChannelGroupContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun TelegramMediaFile.ifThumbedMediaFile(block: (ThumbedMediaFile) -> T) = thumbedMediaFileOrNull() ?.let(block) +public inline fun Message.anonymousGroupContentMessageImplOrNull(): + AnonymousGroupContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.AnonymousGroupContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.thumbedMediaFileOrNull(): ThumbedMediaFile? = this as? ThumbedMediaFile +public inline fun Message.anonymousGroupContentMessageImplOrThrow(): + AnonymousGroupContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.AnonymousGroupContentMessageImpl -@PreviewFeature -inline fun TelegramMediaFile.thumbedMediaFileOrThrow(): ThumbedMediaFile = this as ThumbedMediaFile +public inline fun + Message.ifAnonymousGroupContentMessageImpl(block: (AnonymousGroupContentMessageImpl) -> T): + T? = anonymousGroupContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun KeyboardMarkup.ifForceReply(block: (ReplyForce) -> T) = forceReplyOrNull() ?.let(block) +public inline fun Message.commonGroupContentMessageImplOrNull(): + CommonGroupContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.CommonGroupContentMessageImpl -@PreviewFeature -inline fun KeyboardMarkup.forceReplyOrNull(): ReplyForce? = this as? ReplyForce +public inline fun Message.commonGroupContentMessageImplOrThrow(): + CommonGroupContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.CommonGroupContentMessageImpl -@PreviewFeature -inline fun KeyboardMarkup.forceReplyOrThrow(): ReplyForce = this as ReplyForce +public inline fun + Message.ifCommonGroupContentMessageImpl(block: (CommonGroupContentMessageImpl) -> T): + T? = commonGroupContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun KeyboardMarkup.ifInlineKeyboardMarkup(block: (InlineKeyboardMarkup) -> T) = inlineKeyboardMarkupOrNull() ?.let(block) +public inline fun Message.passportMessageOrNull(): PassportMessage? = this as? + dev.inmo.tgbotapi.types.message.PassportMessage -@PreviewFeature -inline fun KeyboardMarkup.inlineKeyboardMarkupOrNull(): InlineKeyboardMarkup? = this as? InlineKeyboardMarkup +public inline fun Message.passportMessageOrThrow(): PassportMessage = this as + dev.inmo.tgbotapi.types.message.PassportMessage -@PreviewFeature -inline fun KeyboardMarkup.inlineKeyboardMarkupOrThrow(): InlineKeyboardMarkup = this as InlineKeyboardMarkup +public inline fun Message.ifPassportMessage(block: (PassportMessage) -> T): T? = + passportMessageOrNull() ?.let(block) -@PreviewFeature -inline fun KeyboardMarkup.ifReplyKeyboardMarkup(block: (ReplyKeyboardMarkup) -> T) = replyKeyboardMarkupOrNull() ?.let(block) +public inline fun Message.privateContentMessageImplOrNull(): + PrivateContentMessageImpl? = this as? + dev.inmo.tgbotapi.types.message.PrivateContentMessageImpl -@PreviewFeature -inline fun KeyboardMarkup.replyKeyboardMarkupOrNull(): ReplyKeyboardMarkup? = this as? ReplyKeyboardMarkup +public inline fun Message.privateContentMessageImplOrThrow(): + PrivateContentMessageImpl = this as + dev.inmo.tgbotapi.types.message.PrivateContentMessageImpl -@PreviewFeature -inline fun KeyboardMarkup.replyKeyboardMarkupOrThrow(): ReplyKeyboardMarkup = this as ReplyKeyboardMarkup +public inline fun + Message.ifPrivateContentMessageImpl(block: (PrivateContentMessageImpl) -> T): T? + = privateContentMessageImplOrNull() ?.let(block) -@PreviewFeature -inline fun KeyboardMarkup.ifReplyKeyboardRemove(block: (ReplyKeyboardRemove) -> T) = replyKeyboardRemoveOrNull() ?.let(block) +public inline fun Message.privateEventMessageOrNull(): PrivateEventMessage? = this as? + dev.inmo.tgbotapi.types.message.PrivateEventMessage -@PreviewFeature -inline fun KeyboardMarkup.replyKeyboardRemoveOrNull(): ReplyKeyboardRemove? = this as? ReplyKeyboardRemove +public inline fun Message.privateEventMessageOrThrow(): PrivateEventMessage = this as + dev.inmo.tgbotapi.types.message.PrivateEventMessage -@PreviewFeature -inline fun KeyboardMarkup.replyKeyboardRemoveOrThrow(): ReplyKeyboardRemove = this as ReplyKeyboardRemove +public inline fun + Message.ifPrivateEventMessage(block: (PrivateEventMessage) -> T): T? = + privateEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifCallbackDataInlineKeyboardButton(block: (CallbackDataInlineKeyboardButton) -> T) = callbackDataInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.channelContentMessageOrNull(): ChannelContentMessage? = + this as? + dev.inmo.tgbotapi.types.message.abstracts.ChannelContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.callbackDataInlineKeyboardButtonOrNull(): CallbackDataInlineKeyboardButton? = - this as? CallbackDataInlineKeyboardButton +public inline fun Message.channelContentMessageOrThrow(): ChannelContentMessage = + this as + dev.inmo.tgbotapi.types.message.abstracts.ChannelContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.callbackDataInlineKeyboardButtonOrThrow(): CallbackDataInlineKeyboardButton = - this as CallbackDataInlineKeyboardButton +public inline fun + Message.ifChannelContentMessage(block: (ChannelContentMessage) -> T): T? = + channelContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifCallbackGameInlineKeyboardButton(block: (CallbackGameInlineKeyboardButton) -> T) = callbackGameInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.chatEventMessageOrNull(): ChatEventMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage -@PreviewFeature -inline fun InlineKeyboardButton.callbackGameInlineKeyboardButtonOrNull(): CallbackGameInlineKeyboardButton? = - this as? CallbackGameInlineKeyboardButton +public inline fun Message.chatEventMessageOrThrow(): ChatEventMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage -@PreviewFeature -inline fun InlineKeyboardButton.callbackGameInlineKeyboardButtonOrThrow(): CallbackGameInlineKeyboardButton = - this as CallbackGameInlineKeyboardButton +public inline fun Message.ifChatEventMessage(block: (ChatEventMessage) -> T): T? = + chatEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifLoginURLInlineKeyboardButton(block: (LoginURLInlineKeyboardButton) -> T) = loginURLInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.commonMessageOrNull(): CommonMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.CommonMessage -@PreviewFeature -inline fun InlineKeyboardButton.loginURLInlineKeyboardButtonOrNull(): LoginURLInlineKeyboardButton? = - this as? LoginURLInlineKeyboardButton +public inline fun Message.commonMessageOrThrow(): CommonMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.CommonMessage -@PreviewFeature -inline fun InlineKeyboardButton.loginURLInlineKeyboardButtonOrThrow(): LoginURLInlineKeyboardButton = - this as LoginURLInlineKeyboardButton +public inline fun Message.ifCommonMessage(block: (CommonMessage) -> T): T? = + commonMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifPayInlineKeyboardButton(block: (PayInlineKeyboardButton) -> T) = payInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.contentMessageOrNull(): ContentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.payInlineKeyboardButtonOrNull(): PayInlineKeyboardButton? = this as? PayInlineKeyboardButton +public inline fun Message.contentMessageOrThrow(): ContentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.ContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.payInlineKeyboardButtonOrThrow(): PayInlineKeyboardButton = - this as PayInlineKeyboardButton +public inline fun Message.ifContentMessage(block: (ContentMessage) -> T): T? = + contentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifSwitchInlineQueryCurrentChatInlineKeyboardButton(block: (SwitchInlineQueryCurrentChatInlineKeyboardButton) -> T) = switchInlineQueryCurrentChatInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.fromUserMessageOrNull(): FromUserMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.FromUserMessage -@PreviewFeature -inline fun InlineKeyboardButton.switchInlineQueryCurrentChatInlineKeyboardButtonOrNull(): SwitchInlineQueryCurrentChatInlineKeyboardButton? = - this as? SwitchInlineQueryCurrentChatInlineKeyboardButton +public inline fun Message.fromUserMessageOrThrow(): FromUserMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.FromUserMessage -@PreviewFeature -inline fun InlineKeyboardButton.switchInlineQueryCurrentChatInlineKeyboardButtonOrThrow(): SwitchInlineQueryCurrentChatInlineKeyboardButton = - this as SwitchInlineQueryCurrentChatInlineKeyboardButton +public inline fun Message.ifFromUserMessage(block: (FromUserMessage) -> T): T? = + fromUserMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifSwitchInlineQueryInlineKeyboardButton(block: (SwitchInlineQueryInlineKeyboardButton) -> T) = switchInlineQueryInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.groupEventMessageOrNull(): GroupEventMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.GroupEventMessage -@PreviewFeature -inline fun InlineKeyboardButton.switchInlineQueryInlineKeyboardButtonOrNull(): SwitchInlineQueryInlineKeyboardButton? = - this as? SwitchInlineQueryInlineKeyboardButton +public inline fun Message.groupEventMessageOrThrow(): GroupEventMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.GroupEventMessage -@PreviewFeature -inline fun InlineKeyboardButton.switchInlineQueryInlineKeyboardButtonOrThrow(): SwitchInlineQueryInlineKeyboardButton = - this as SwitchInlineQueryInlineKeyboardButton +public inline fun Message.ifGroupEventMessage(block: (GroupEventMessage) -> T): T? = + groupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifURLInlineKeyboardButton(block: (URLInlineKeyboardButton) -> T) = uRLInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.groupContentMessageOrNull(): GroupContentMessage? = this + as? + dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.uRLInlineKeyboardButtonOrNull(): URLInlineKeyboardButton? = this as? URLInlineKeyboardButton +public inline fun Message.groupContentMessageOrThrow(): GroupContentMessage = this + as + dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.uRLInlineKeyboardButtonOrThrow(): URLInlineKeyboardButton = - this as URLInlineKeyboardButton +public inline fun + Message.ifGroupContentMessage(block: (GroupContentMessage) -> T): T? = + groupContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifWebAppKeyboardButton(block: (WebAppKeyboardButton) -> T) = webAppKeyboardButtonOrNull() ?.let(block) +public inline fun Message.fromChannelGroupContentMessageOrNull(): + FromChannelGroupContentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.FromChannelGroupContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.webAppKeyboardButtonOrNull(): WebAppKeyboardButton? = this as? WebAppKeyboardButton +public inline fun Message.fromChannelGroupContentMessageOrThrow(): + FromChannelGroupContentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.FromChannelGroupContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.webAppKeyboardButtonOrThrow(): WebAppKeyboardButton = - this as WebAppKeyboardButton +public inline fun + Message.ifFromChannelGroupContentMessage(block: (FromChannelGroupContentMessage) -> T): + T? = fromChannelGroupContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun InlineKeyboardButton.ifUnknownInlineKeyboardButton(block: (UnknownInlineKeyboardButton) -> T) = unknownInlineKeyboardButtonOrNull() ?.let(block) +public inline fun Message.connectedFromChannelGroupContentMessageOrNull(): + ConnectedFromChannelGroupContentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.ConnectedFromChannelGroupContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.unknownInlineKeyboardButtonOrNull(): UnknownInlineKeyboardButton? = - this as? UnknownInlineKeyboardButton +public inline fun Message.connectedFromChannelGroupContentMessageOrThrow(): + ConnectedFromChannelGroupContentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.ConnectedFromChannelGroupContentMessage -@PreviewFeature -inline fun InlineKeyboardButton.unknownInlineKeyboardButtonOrThrow(): UnknownInlineKeyboardButton = - this as UnknownInlineKeyboardButton +public inline fun + Message.ifConnectedFromChannelGroupContentMessage(block: (ConnectedFromChannelGroupContentMessage) -> T): + T? = connectedFromChannelGroupContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun Poll.ifMultipleAnswersPoll(block: (MultipleAnswersPoll) -> T) = multipleAnswersPollOrNull() ?.let(block) +public inline fun Message.unconnectedFromChannelGroupContentMessageOrNull(): + UnconnectedFromChannelGroupContentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.UnconnectedFromChannelGroupContentMessage -@PreviewFeature -inline fun Poll.multipleAnswersPollOrNull(): MultipleAnswersPoll? = this as? MultipleAnswersPoll +public inline fun Message.unconnectedFromChannelGroupContentMessageOrThrow(): + UnconnectedFromChannelGroupContentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.UnconnectedFromChannelGroupContentMessage -@PreviewFeature -inline fun Poll.multipleAnswersPollOrThrow(): MultipleAnswersPoll = this as MultipleAnswersPoll +public inline fun + Message.ifUnconnectedFromChannelGroupContentMessage(block: (UnconnectedFromChannelGroupContentMessage) -> T): + T? = unconnectedFromChannelGroupContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun Poll.ifQuizPoll(block: (QuizPoll) -> T) = quizPollOrNull() ?.let(block) +public inline fun Message.anonymousGroupContentMessageOrNull(): + AnonymousGroupContentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.AnonymousGroupContentMessage -@PreviewFeature -inline fun Poll.quizPollOrNull(): QuizPoll? = this as? QuizPoll +public inline fun Message.anonymousGroupContentMessageOrThrow(): + AnonymousGroupContentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.AnonymousGroupContentMessage -@PreviewFeature -inline fun Poll.quizPollOrThrow(): QuizPoll = this as QuizPoll +public inline fun + Message.ifAnonymousGroupContentMessage(block: (AnonymousGroupContentMessage) -> T): + T? = anonymousGroupContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun Poll.ifRegularPoll(block: (RegularPoll) -> T) = regularPollOrNull() ?.let(block) +public inline fun Message.commonGroupContentMessageOrNull(): + CommonGroupContentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.CommonGroupContentMessage -@PreviewFeature -inline fun Poll.regularPollOrNull(): RegularPoll? = this as? RegularPoll +public inline fun Message.commonGroupContentMessageOrThrow(): + CommonGroupContentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.CommonGroupContentMessage -@PreviewFeature -inline fun Poll.regularPollOrThrow(): RegularPoll = this as RegularPoll +public inline fun + Message.ifCommonGroupContentMessage(block: (CommonGroupContentMessage) -> T): T? + = commonGroupContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun Poll.ifUnknownPollType(block: (UnknownPollType) -> T) = unknownPollTypeOrNull() ?.let(block) +public inline fun Message.mediaGroupMessageOrNull(): MediaGroupMessage? = this + as? + dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -@PreviewFeature -inline fun Poll.unknownPollTypeOrNull(): UnknownPollType? = this as? UnknownPollType +public inline fun Message.mediaGroupMessageOrThrow(): MediaGroupMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -@PreviewFeature -inline fun Poll.unknownPollTypeOrThrow(): UnknownPollType = this as UnknownPollType +public inline fun + Message.ifMediaGroupMessage(block: (MediaGroupMessage) -> T): T? = + mediaGroupMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifContactContent(block: (ContactContent) -> T) = contactContentOrNull() ?.let(block) +public inline fun Message.unknownMessageTypeOrNull(): UnknownMessageType? = this as? + dev.inmo.tgbotapi.types.message.abstracts.UnknownMessageType -@PreviewFeature -inline fun ResendableContent.contactContentOrNull(): ContactContent? = this as? ContactContent +public inline fun Message.unknownMessageTypeOrThrow(): UnknownMessageType = this as + dev.inmo.tgbotapi.types.message.abstracts.UnknownMessageType -@PreviewFeature -inline fun ResendableContent.contactContentOrThrow(): ContactContent = this as ContactContent +public inline fun Message.ifUnknownMessageType(block: (UnknownMessageType) -> T): T? = + unknownMessageTypeOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifDiceContent(block: (DiceContent) -> T) = diceContentOrNull() ?.let(block) +public inline fun Message.possiblyEditedMessageOrNull(): PossiblyEditedMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.PossiblyEditedMessage -@PreviewFeature -inline fun ResendableContent.diceContentOrNull(): DiceContent? = this as? DiceContent +public inline fun Message.possiblyEditedMessageOrThrow(): PossiblyEditedMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.PossiblyEditedMessage -@PreviewFeature -inline fun ResendableContent.diceContentOrThrow(): DiceContent = this as DiceContent +public inline fun Message.ifPossiblyEditedMessage(block: (PossiblyEditedMessage) -> T): T? = + possiblyEditedMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifGameContent(block: (GameContent) -> T) = gameContentOrNull() ?.let(block) +public inline fun Message.possiblyForwardedMessageOrNull(): PossiblyForwardedMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.PossiblyForwardedMessage -@PreviewFeature -inline fun ResendableContent.gameContentOrNull(): GameContent? = this as? GameContent +public inline fun Message.possiblyForwardedMessageOrThrow(): PossiblyForwardedMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.PossiblyForwardedMessage -@PreviewFeature -inline fun ResendableContent.gameContentOrThrow(): GameContent = this as GameContent +public inline fun Message.ifPossiblyForwardedMessage(block: (PossiblyForwardedMessage) -> T): T? + = possiblyForwardedMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifLocationContent(block: (LocationContent) -> T) = locationContentOrNull() ?.let(block) +public inline fun Message.possiblyPaymentMessageOrNull(): PossiblyPaymentMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.PossiblyPaymentMessage -@PreviewFeature -inline fun ResendableContent.locationContentOrNull(): LocationContent? = this as? LocationContent +public inline fun Message.possiblyPaymentMessageOrThrow(): PossiblyPaymentMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.PossiblyPaymentMessage -@PreviewFeature -inline fun ResendableContent.locationContentOrThrow(): LocationContent = this as LocationContent +public inline fun Message.ifPossiblyPaymentMessage(block: (PossiblyPaymentMessage) -> T): T? = + possiblyPaymentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifLiveLocationContent(block: (LiveLocationContent) -> T) = liveLocationContentOrNull() ?.let(block) +public inline fun Message.possiblySentViaBotCommonMessageOrNull(): + PossiblySentViaBotCommonMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage -@PreviewFeature -inline fun ResendableContent.liveLocationContentOrNull(): LiveLocationContent? = this as? LiveLocationContent +public inline fun Message.possiblySentViaBotCommonMessageOrThrow(): + PossiblySentViaBotCommonMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage -@PreviewFeature -inline fun ResendableContent.liveLocationContentOrThrow(): LiveLocationContent = this as LiveLocationContent +public inline fun + Message.ifPossiblySentViaBotCommonMessage(block: (PossiblySentViaBotCommonMessage) -> T): + T? = possiblySentViaBotCommonMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifStaticLocationContent(block: (StaticLocationContent) -> T) = staticLocationContentOrNull() ?.let(block) +public inline fun Message.privateContentMessageOrNull(): PrivateContentMessage? = + this as? + dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage -@PreviewFeature -inline fun ResendableContent.staticLocationContentOrNull(): StaticLocationContent? = this as? StaticLocationContent +public inline fun Message.privateContentMessageOrThrow(): PrivateContentMessage = + this as + dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage -@PreviewFeature -inline fun ResendableContent.staticLocationContentOrThrow(): StaticLocationContent = this as StaticLocationContent +public inline fun + Message.ifPrivateContentMessage(block: (PrivateContentMessage) -> T): T? = + privateContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifPollContent(block: (PollContent) -> T) = pollContentOrNull() ?.let(block) +public inline fun Message.publicContentMessageOrNull(): PublicContentMessage? = this + as? + dev.inmo.tgbotapi.types.message.abstracts.PublicContentMessage -@PreviewFeature -inline fun ResendableContent.pollContentOrNull(): PollContent? = this as? PollContent +public inline fun Message.publicContentMessageOrThrow(): PublicContentMessage = this + as + dev.inmo.tgbotapi.types.message.abstracts.PublicContentMessage -@PreviewFeature -inline fun ResendableContent.pollContentOrThrow(): PollContent = this as PollContent +public inline fun + Message.ifPublicContentMessage(block: (PublicContentMessage) -> T): T? = + publicContentMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifTextContent(block: (TextContent) -> T) = textContentOrNull() ?.let(block) +public inline fun Message.signedMessageOrNull(): SignedMessage? = this as? + dev.inmo.tgbotapi.types.message.abstracts.SignedMessage -@PreviewFeature -inline fun ResendableContent.textContentOrNull(): TextContent? = this as? TextContent +public inline fun Message.signedMessageOrThrow(): SignedMessage = this as + dev.inmo.tgbotapi.types.message.abstracts.SignedMessage -@PreviewFeature -inline fun ResendableContent.textContentOrThrow(): TextContent = this as TextContent +public inline fun Message.ifSignedMessage(block: (SignedMessage) -> T): T? = + signedMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifVenueContent(block: (VenueContent) -> T) = venueContentOrNull() ?.let(block) +public inline fun Message.supergroupEventMessageOrNull(): SupergroupEventMessage? = + this as? + dev.inmo.tgbotapi.types.message.abstracts.SupergroupEventMessage -@PreviewFeature -inline fun ResendableContent.venueContentOrNull(): VenueContent? = this as? VenueContent +public inline fun Message.supergroupEventMessageOrThrow(): SupergroupEventMessage = + this as + dev.inmo.tgbotapi.types.message.abstracts.SupergroupEventMessage -@PreviewFeature -inline fun ResendableContent.venueContentOrThrow(): VenueContent = this as VenueContent +public inline fun + Message.ifSupergroupEventMessage(block: (SupergroupEventMessage) -> T): T? = + supergroupEventMessageOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifAudioMediaGroupContent(block: (AudioMediaGroupContent) -> T) = audioMediaGroupContentOrNull() ?.let(block) +public inline fun ResendableContent.messageContentOrNull(): MessageContent? = this as? + dev.inmo.tgbotapi.types.message.content.MessageContent -@PreviewFeature -inline fun ResendableContent.audioMediaGroupContentOrNull(): AudioMediaGroupContent? = this as? AudioMediaGroupContent +public inline fun ResendableContent.messageContentOrThrow(): MessageContent = this as + dev.inmo.tgbotapi.types.message.content.MessageContent -@PreviewFeature -inline fun ResendableContent.audioMediaGroupContentOrThrow(): AudioMediaGroupContent = this as AudioMediaGroupContent +public inline fun ResendableContent.ifMessageContent(block: (MessageContent) -> T): T? = + messageContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifDocumentMediaGroupContent(block: (DocumentMediaGroupContent) -> T) = documentMediaGroupContentOrNull() ?.let(block) +public inline fun ResendableContent.mediaCollectionContentOrNull(): + MediaCollectionContent? = this as? + dev.inmo.tgbotapi.types.message.content.MediaCollectionContent -@PreviewFeature -inline fun ResendableContent.documentMediaGroupContentOrNull(): DocumentMediaGroupContent? = - this as? DocumentMediaGroupContent +public inline fun ResendableContent.mediaCollectionContentOrThrow(): + MediaCollectionContent = this as + dev.inmo.tgbotapi.types.message.content.MediaCollectionContent -@PreviewFeature -inline fun ResendableContent.documentMediaGroupContentOrThrow(): DocumentMediaGroupContent = - this as DocumentMediaGroupContent +public inline fun + ResendableContent.ifMediaCollectionContent(block: (MediaCollectionContent) -> T): + T? = mediaCollectionContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifMediaCollectionContent(block: (MediaCollectionContent) -> T) = mediaCollectionContentOrNull() ?.let(block) +public inline fun ResendableContent.mediaContentOrNull(): MediaContent? = this as? + dev.inmo.tgbotapi.types.message.content.MediaContent -@PreviewFeature -inline fun ResendableContent.mediaCollectionContentOrNull(): MediaCollectionContent? = - this as? MediaCollectionContent +public inline fun ResendableContent.mediaContentOrThrow(): MediaContent = this as + dev.inmo.tgbotapi.types.message.content.MediaContent -@PreviewFeature -inline fun ResendableContent.mediaCollectionContentOrThrow(): MediaCollectionContent = - this as MediaCollectionContent +public inline fun ResendableContent.ifMediaContent(block: (MediaContent) -> T): T? = + mediaContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifTextedMediaContent(block: (TextedMediaContent) -> T) = textedMediaContentOrNull() ?.let(block) +public inline fun ResendableContent.audioMediaGroupContentOrNull(): AudioMediaGroupContent? = this + as? dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent -@PreviewFeature -inline fun ResendableContent.textedMediaContentOrNull(): TextedMediaContent? = - this as? TextedMediaContent +public inline fun ResendableContent.audioMediaGroupContentOrThrow(): AudioMediaGroupContent = this + as dev.inmo.tgbotapi.types.message.content.AudioMediaGroupContent -@PreviewFeature -inline fun ResendableContent.textedMediaContentOrThrow(): TextedMediaContent = - this as TextedMediaContent +public inline fun + ResendableContent.ifAudioMediaGroupContent(block: (AudioMediaGroupContent) -> T): T? = + audioMediaGroupContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifMediaContent(block: (MediaContent) -> T) = mediaContentOrNull() ?.let(block) +public inline fun ResendableContent.documentMediaGroupContentOrNull(): DocumentMediaGroupContent? = + this as? dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent -@PreviewFeature -inline fun ResendableContent.mediaContentOrNull(): MediaContent? = this as? MediaContent +public inline fun ResendableContent.documentMediaGroupContentOrThrow(): DocumentMediaGroupContent = + this as dev.inmo.tgbotapi.types.message.content.DocumentMediaGroupContent -@PreviewFeature -inline fun ResendableContent.mediaContentOrThrow(): MediaContent = this as MediaContent +public inline fun + ResendableContent.ifDocumentMediaGroupContent(block: (DocumentMediaGroupContent) -> T): T? = + documentMediaGroupContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifMediaGroupContent(block: (MediaGroupContent) -> T) = mediaGroupContentOrNull() ?.let(block) +public inline fun ResendableContent.mediaGroupContentOrNull(): MediaGroupContent? = this as? + dev.inmo.tgbotapi.types.message.content.MediaGroupContent -@PreviewFeature -inline fun ResendableContent.mediaGroupContentOrNull(): MediaGroupContent? = this as? MediaGroupContent +public inline fun ResendableContent.mediaGroupContentOrThrow(): MediaGroupContent = this as + dev.inmo.tgbotapi.types.message.content.MediaGroupContent -@PreviewFeature -inline fun ResendableContent.mediaGroupContentOrThrow(): MediaGroupContent = this as MediaGroupContent +public inline fun ResendableContent.ifMediaGroupContent(block: (MediaGroupContent) -> T): T? = + mediaGroupContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifMessageContent(block: (MessageContent) -> T) = messageContentOrNull() ?.let(block) +public inline fun ResendableContent.textedMediaContentOrNull(): TextedMediaContent? = this as? + dev.inmo.tgbotapi.types.message.content.TextedMediaContent -@PreviewFeature -inline fun ResendableContent.messageContentOrNull(): MessageContent? = this as? MessageContent +public inline fun ResendableContent.textedMediaContentOrThrow(): TextedMediaContent = this as + dev.inmo.tgbotapi.types.message.content.TextedMediaContent -@PreviewFeature -inline fun ResendableContent.messageContentOrThrow(): MessageContent = this as MessageContent +public inline fun ResendableContent.ifTextedMediaContent(block: (TextedMediaContent) -> T): T? = + textedMediaContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifVisualMediaGroupContent(block: (VisualMediaGroupContent) -> T) = visualMediaGroupContentOrNull() ?.let(block) +public inline fun ResendableContent.visualMediaGroupContentOrNull(): VisualMediaGroupContent? = this + as? dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent -@PreviewFeature -inline fun ResendableContent.visualMediaGroupContentOrNull(): VisualMediaGroupContent? = this as? VisualMediaGroupContent +public inline fun ResendableContent.visualMediaGroupContentOrThrow(): VisualMediaGroupContent = this + as dev.inmo.tgbotapi.types.message.content.VisualMediaGroupContent -@PreviewFeature -inline fun ResendableContent.visualMediaGroupContentOrThrow(): VisualMediaGroupContent = this as VisualMediaGroupContent +public inline fun + ResendableContent.ifVisualMediaGroupContent(block: (VisualMediaGroupContent) -> T): T? = + visualMediaGroupContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifAnimationContent(block: (AnimationContent) -> T) = animationContentOrNull() ?.let(block) +public inline fun ResendableContent.animationContentOrNull(): AnimationContent? = this as? + dev.inmo.tgbotapi.types.message.content.AnimationContent -@PreviewFeature -inline fun ResendableContent.animationContentOrNull(): AnimationContent? = this as? AnimationContent +public inline fun ResendableContent.animationContentOrThrow(): AnimationContent = this as + dev.inmo.tgbotapi.types.message.content.AnimationContent -@PreviewFeature -inline fun ResendableContent.animationContentOrThrow(): AnimationContent = this as AnimationContent +public inline fun ResendableContent.ifAnimationContent(block: (AnimationContent) -> T): T? = + animationContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifAudioContent(block: (AudioContent) -> T) = audioContentOrNull() ?.let(block) +public inline fun ResendableContent.audioContentOrNull(): AudioContent? = this as? + dev.inmo.tgbotapi.types.message.content.AudioContent -@PreviewFeature -inline fun ResendableContent.audioContentOrNull(): AudioContent? = this as? AudioContent +public inline fun ResendableContent.audioContentOrThrow(): AudioContent = this as + dev.inmo.tgbotapi.types.message.content.AudioContent -@PreviewFeature -inline fun ResendableContent.audioContentOrThrow(): AudioContent = this as AudioContent +public inline fun ResendableContent.ifAudioContent(block: (AudioContent) -> T): T? = + audioContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifDocumentContent(block: (DocumentContent) -> T) = documentContentOrNull() ?.let(block) +public inline fun ResendableContent.contactContentOrNull(): ContactContent? = this as? + dev.inmo.tgbotapi.types.message.content.ContactContent -@PreviewFeature -inline fun ResendableContent.documentContentOrNull(): DocumentContent? = this as? DocumentContent +public inline fun ResendableContent.contactContentOrThrow(): ContactContent = this as + dev.inmo.tgbotapi.types.message.content.ContactContent -@PreviewFeature -inline fun ResendableContent.documentContentOrThrow(): DocumentContent = this as DocumentContent +public inline fun ResendableContent.ifContactContent(block: (ContactContent) -> T): T? = + contactContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifPhotoContent(block: (PhotoContent) -> T) = photoContentOrNull() ?.let(block) +public inline fun ResendableContent.diceContentOrNull(): DiceContent? = this as? + dev.inmo.tgbotapi.types.message.content.DiceContent -@PreviewFeature -inline fun ResendableContent.photoContentOrNull(): PhotoContent? = this as? PhotoContent +public inline fun ResendableContent.diceContentOrThrow(): DiceContent = this as + dev.inmo.tgbotapi.types.message.content.DiceContent -@PreviewFeature -inline fun ResendableContent.photoContentOrThrow(): PhotoContent = this as PhotoContent +public inline fun ResendableContent.ifDiceContent(block: (DiceContent) -> T): T? = + diceContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifStickerContent(block: (StickerContent) -> T) = stickerContentOrNull() ?.let(block) +public inline fun ResendableContent.documentContentOrNull(): DocumentContent? = this as? + dev.inmo.tgbotapi.types.message.content.DocumentContent -@PreviewFeature -inline fun ResendableContent.stickerContentOrNull(): StickerContent? = this as? StickerContent +public inline fun ResendableContent.documentContentOrThrow(): DocumentContent = this as + dev.inmo.tgbotapi.types.message.content.DocumentContent -@PreviewFeature -inline fun ResendableContent.stickerContentOrThrow(): StickerContent = this as StickerContent +public inline fun ResendableContent.ifDocumentContent(block: (DocumentContent) -> T): T? = + documentContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifVideoContent(block: (VideoContent) -> T) = videoContentOrNull() ?.let(block) +public inline fun ResendableContent.gameContentOrNull(): GameContent? = this as? + dev.inmo.tgbotapi.types.message.content.GameContent -@PreviewFeature -inline fun ResendableContent.videoContentOrNull(): VideoContent? = this as? VideoContent +public inline fun ResendableContent.gameContentOrThrow(): GameContent = this as + dev.inmo.tgbotapi.types.message.content.GameContent -@PreviewFeature -inline fun ResendableContent.videoContentOrThrow(): VideoContent = this as VideoContent +public inline fun ResendableContent.ifGameContent(block: (GameContent) -> T): T? = + gameContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifVideoNoteContent(block: (VideoNoteContent) -> T) = videoNoteContentOrNull() ?.let(block) +public inline fun ResendableContent.invoiceContentOrNull(): InvoiceContent? = this as? + dev.inmo.tgbotapi.types.message.content.InvoiceContent -@PreviewFeature -inline fun ResendableContent.videoNoteContentOrNull(): VideoNoteContent? = this as? VideoNoteContent +public inline fun ResendableContent.invoiceContentOrThrow(): InvoiceContent = this as + dev.inmo.tgbotapi.types.message.content.InvoiceContent -@PreviewFeature -inline fun ResendableContent.videoNoteContentOrThrow(): VideoNoteContent = this as VideoNoteContent +public inline fun ResendableContent.ifInvoiceContent(block: (InvoiceContent) -> T): T? = + invoiceContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifVoiceContent(block: (VoiceContent) -> T) = voiceContentOrNull() ?.let(block) +public inline fun ResendableContent.locationContentOrNull(): LocationContent? = this as? + dev.inmo.tgbotapi.types.message.content.LocationContent -@PreviewFeature -inline fun ResendableContent.voiceContentOrNull(): VoiceContent? = this as? VoiceContent +public inline fun ResendableContent.locationContentOrThrow(): LocationContent = this as + dev.inmo.tgbotapi.types.message.content.LocationContent -@PreviewFeature -inline fun ResendableContent.voiceContentOrThrow(): VoiceContent = this as VoiceContent +public inline fun ResendableContent.ifLocationContent(block: (LocationContent) -> T): T? = + locationContentOrNull() ?.let(block) -@PreviewFeature -inline fun ResendableContent.ifInvoiceContent(block: (InvoiceContent) -> T) = invoiceContentOrNull() ?.let(block) +public inline fun ResendableContent.liveLocationContentOrNull(): LiveLocationContent? = this as? + dev.inmo.tgbotapi.types.message.content.LiveLocationContent -@PreviewFeature -inline fun ResendableContent.invoiceContentOrNull(): InvoiceContent? = this as? InvoiceContent +public inline fun ResendableContent.liveLocationContentOrThrow(): LiveLocationContent = this as + dev.inmo.tgbotapi.types.message.content.LiveLocationContent -@PreviewFeature -inline fun ResendableContent.invoiceContentOrThrow(): InvoiceContent = this as InvoiceContent +public inline fun ResendableContent.ifLiveLocationContent(block: (LiveLocationContent) -> T): T? + = liveLocationContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifMultilevelTextSource(block: (MultilevelTextSource) -> T) = multilevelTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.staticLocationContentOrNull(): StaticLocationContent? = this as? + dev.inmo.tgbotapi.types.message.content.StaticLocationContent -@PreviewFeature -inline fun TextSource.multilevelTextSourceOrNull(): MultilevelTextSource? = this as? MultilevelTextSource +public inline fun ResendableContent.staticLocationContentOrThrow(): StaticLocationContent = this as + dev.inmo.tgbotapi.types.message.content.StaticLocationContent -@PreviewFeature -inline fun TextSource.multilevelTextSourceOrThrow(): MultilevelTextSource = this as MultilevelTextSource +public inline fun + ResendableContent.ifStaticLocationContent(block: (StaticLocationContent) -> T): T? = + staticLocationContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifBoldTextSource(block: (BoldTextSource) -> T) = boldTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.photoContentOrNull(): PhotoContent? = this as? + dev.inmo.tgbotapi.types.message.content.PhotoContent -@PreviewFeature -inline fun TextSource.boldTextSourceOrNull(): BoldTextSource? = this as? BoldTextSource +public inline fun ResendableContent.photoContentOrThrow(): PhotoContent = this as + dev.inmo.tgbotapi.types.message.content.PhotoContent -@PreviewFeature -inline fun TextSource.boldTextSourceOrThrow(): BoldTextSource = this as BoldTextSource +public inline fun ResendableContent.ifPhotoContent(block: (PhotoContent) -> T): T? = + photoContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifBotCommandTextSource(block: (BotCommandTextSource) -> T) = botCommandTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.pollContentOrNull(): PollContent? = this as? + dev.inmo.tgbotapi.types.message.content.PollContent -@PreviewFeature -inline fun TextSource.botCommandTextSourceOrNull(): BotCommandTextSource? = this as? BotCommandTextSource +public inline fun ResendableContent.pollContentOrThrow(): PollContent = this as + dev.inmo.tgbotapi.types.message.content.PollContent -@PreviewFeature -inline fun TextSource.botCommandTextSourceOrThrow(): BotCommandTextSource = this as BotCommandTextSource +public inline fun ResendableContent.ifPollContent(block: (PollContent) -> T): T? = + pollContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifCashTagTextSource(block: (CashTagTextSource) -> T) = cashTagTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.stickerContentOrNull(): StickerContent? = this as? + dev.inmo.tgbotapi.types.message.content.StickerContent -@PreviewFeature -inline fun TextSource.cashTagTextSourceOrNull(): CashTagTextSource? = this as? CashTagTextSource +public inline fun ResendableContent.stickerContentOrThrow(): StickerContent = this as + dev.inmo.tgbotapi.types.message.content.StickerContent -@PreviewFeature -inline fun TextSource.cashTagTextSourceOrThrow(): CashTagTextSource = this as CashTagTextSource +public inline fun ResendableContent.ifStickerContent(block: (StickerContent) -> T): T? = + stickerContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifCodeTextSource(block: (CodeTextSource) -> T) = codeTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.textContentOrNull(): TextContent? = this as? + dev.inmo.tgbotapi.types.message.content.TextContent -@PreviewFeature -inline fun TextSource.codeTextSourceOrNull(): CodeTextSource? = this as? CodeTextSource +public inline fun ResendableContent.textContentOrThrow(): TextContent = this as + dev.inmo.tgbotapi.types.message.content.TextContent -@PreviewFeature -inline fun TextSource.codeTextSourceOrThrow(): CodeTextSource = this as CodeTextSource +public inline fun ResendableContent.ifTextContent(block: (TextContent) -> T): T? = + textContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifEMailTextSource(block: (EMailTextSource) -> T) = eMailTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.venueContentOrNull(): VenueContent? = this as? + dev.inmo.tgbotapi.types.message.content.VenueContent -@PreviewFeature -inline fun TextSource.eMailTextSourceOrNull(): EMailTextSource? = this as? EMailTextSource +public inline fun ResendableContent.venueContentOrThrow(): VenueContent = this as + dev.inmo.tgbotapi.types.message.content.VenueContent -@PreviewFeature -inline fun TextSource.eMailTextSourceOrThrow(): EMailTextSource = this as EMailTextSource +public inline fun ResendableContent.ifVenueContent(block: (VenueContent) -> T): T? = + venueContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifHashTagTextSource(block: (HashTagTextSource) -> T) = hashTagTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.videoContentOrNull(): VideoContent? = this as? + dev.inmo.tgbotapi.types.message.content.VideoContent -@PreviewFeature -inline fun TextSource.hashTagTextSourceOrNull(): HashTagTextSource? = this as? HashTagTextSource +public inline fun ResendableContent.videoContentOrThrow(): VideoContent = this as + dev.inmo.tgbotapi.types.message.content.VideoContent -@PreviewFeature -inline fun TextSource.hashTagTextSourceOrThrow(): HashTagTextSource = this as HashTagTextSource +public inline fun ResendableContent.ifVideoContent(block: (VideoContent) -> T): T? = + videoContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifItalicTextSource(block: (ItalicTextSource) -> T) = italicTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.videoNoteContentOrNull(): VideoNoteContent? = this as? + dev.inmo.tgbotapi.types.message.content.VideoNoteContent -@PreviewFeature -inline fun TextSource.italicTextSourceOrNull(): ItalicTextSource? = this as? ItalicTextSource +public inline fun ResendableContent.videoNoteContentOrThrow(): VideoNoteContent = this as + dev.inmo.tgbotapi.types.message.content.VideoNoteContent -@PreviewFeature -inline fun TextSource.italicTextSourceOrThrow(): ItalicTextSource = this as ItalicTextSource +public inline fun ResendableContent.ifVideoNoteContent(block: (VideoNoteContent) -> T): T? = + videoNoteContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifMentionTextSource(block: (MentionTextSource) -> T) = mentionTextSourceOrNull() ?.let(block) +public inline fun ResendableContent.voiceContentOrNull(): VoiceContent? = this as? + dev.inmo.tgbotapi.types.message.content.VoiceContent -@PreviewFeature -inline fun TextSource.mentionTextSourceOrNull(): MentionTextSource? = this as? MentionTextSource +public inline fun ResendableContent.voiceContentOrThrow(): VoiceContent = this as + dev.inmo.tgbotapi.types.message.content.VoiceContent -@PreviewFeature -inline fun TextSource.mentionTextSourceOrThrow(): MentionTextSource = this as MentionTextSource +public inline fun ResendableContent.ifVoiceContent(block: (VoiceContent) -> T): T? = + voiceContentOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifPhoneNumberTextSource(block: (PhoneNumberTextSource) -> T) = phoneNumberTextSourceOrNull() ?.let(block) +public inline fun TextSource.boldTextSourceOrNull(): BoldTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.BoldTextSource -@PreviewFeature -inline fun TextSource.phoneNumberTextSourceOrNull(): PhoneNumberTextSource? = this as? PhoneNumberTextSource +public inline fun TextSource.boldTextSourceOrThrow(): BoldTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.BoldTextSource -@PreviewFeature -inline fun TextSource.phoneNumberTextSourceOrThrow(): PhoneNumberTextSource = this as PhoneNumberTextSource +public inline fun TextSource.ifBoldTextSource(block: (BoldTextSource) -> T): T? = + boldTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifPreTextSource(block: (PreTextSource) -> T) = preTextSourceOrNull() ?.let(block) +public inline fun TextSource.botCommandTextSourceOrNull(): BotCommandTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource -@PreviewFeature -inline fun TextSource.preTextSourceOrNull(): PreTextSource? = this as? PreTextSource +public inline fun TextSource.botCommandTextSourceOrThrow(): BotCommandTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource -@PreviewFeature -inline fun TextSource.preTextSourceOrThrow(): PreTextSource = this as PreTextSource +public inline fun TextSource.ifBotCommandTextSource(block: (BotCommandTextSource) -> T): T? = + botCommandTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifRegularTextSource(block: (RegularTextSource) -> T) = regularTextSourceOrNull() ?.let(block) +public inline fun TextSource.cashTagTextSourceOrNull(): CashTagTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.CashTagTextSource -@PreviewFeature -inline fun TextSource.regularTextSourceOrNull(): RegularTextSource? = this as? RegularTextSource +public inline fun TextSource.cashTagTextSourceOrThrow(): CashTagTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.CashTagTextSource -@PreviewFeature -inline fun TextSource.regularTextSourceOrThrow(): RegularTextSource = this as RegularTextSource +public inline fun TextSource.ifCashTagTextSource(block: (CashTagTextSource) -> T): T? = + cashTagTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifStrikethroughTextSource(block: (StrikethroughTextSource) -> T) = strikethroughTextSourceOrNull() ?.let(block) +public inline fun TextSource.codeTextSourceOrNull(): CodeTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.CodeTextSource -@PreviewFeature -inline fun TextSource.strikethroughTextSourceOrNull(): StrikethroughTextSource? = this as? StrikethroughTextSource +public inline fun TextSource.codeTextSourceOrThrow(): CodeTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.CodeTextSource -@PreviewFeature -inline fun TextSource.strikethroughTextSourceOrThrow(): StrikethroughTextSource = this as StrikethroughTextSource +public inline fun TextSource.ifCodeTextSource(block: (CodeTextSource) -> T): T? = + codeTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifTextLinkTextSource(block: (TextLinkTextSource) -> T) = textLinkTextSourceOrNull() ?.let(block) +public inline fun TextSource.eMailTextSourceOrNull(): EMailTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.EMailTextSource -@PreviewFeature -inline fun TextSource.textLinkTextSourceOrNull(): TextLinkTextSource? = this as? TextLinkTextSource +public inline fun TextSource.eMailTextSourceOrThrow(): EMailTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.EMailTextSource -@PreviewFeature -inline fun TextSource.textLinkTextSourceOrThrow(): TextLinkTextSource = this as TextLinkTextSource +public inline fun TextSource.ifEMailTextSource(block: (EMailTextSource) -> T): T? = + eMailTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifTextMentionTextSource(block: (TextMentionTextSource) -> T) = textMentionTextSourceOrNull() ?.let(block) +public inline fun TextSource.hashTagTextSourceOrNull(): HashTagTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.HashTagTextSource -@PreviewFeature -inline fun TextSource.textMentionTextSourceOrNull(): TextMentionTextSource? = this as? TextMentionTextSource +public inline fun TextSource.hashTagTextSourceOrThrow(): HashTagTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.HashTagTextSource -@PreviewFeature -inline fun TextSource.textMentionTextSourceOrThrow(): TextMentionTextSource = this as TextMentionTextSource +public inline fun TextSource.ifHashTagTextSource(block: (HashTagTextSource) -> T): T? = + hashTagTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifURLTextSource(block: (URLTextSource) -> T) = uRLTextSourceOrNull() ?.let(block) +public inline fun TextSource.italicTextSourceOrNull(): ItalicTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.ItalicTextSource -@PreviewFeature -inline fun TextSource.uRLTextSourceOrNull(): URLTextSource? = this as? URLTextSource +public inline fun TextSource.italicTextSourceOrThrow(): ItalicTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.ItalicTextSource -@PreviewFeature -inline fun TextSource.uRLTextSourceOrThrow(): URLTextSource = this as URLTextSource +public inline fun TextSource.ifItalicTextSource(block: (ItalicTextSource) -> T): T? = + italicTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun TextSource.ifUnderlineTextSource(block: (UnderlineTextSource) -> T) = underlineTextSourceOrNull() ?.let(block) +public inline fun TextSource.mentionTextSourceOrNull(): MentionTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.MentionTextSource -@PreviewFeature -inline fun TextSource.underlineTextSourceOrNull(): UnderlineTextSource? = this as? UnderlineTextSource +public inline fun TextSource.mentionTextSourceOrThrow(): MentionTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.MentionTextSource -@PreviewFeature -inline fun TextSource.underlineTextSourceOrThrow(): UnderlineTextSource = this as UnderlineTextSource +public inline fun TextSource.ifMentionTextSource(block: (MentionTextSource) -> T): T? = + mentionTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun DiceAnimationType.ifBasketballDiceAnimationType(block: (BasketballDiceAnimationType) -> T) = basketballDiceAnimationTypeOrNull() ?.let(block) +public inline fun TextSource.phoneNumberTextSourceOrNull(): PhoneNumberTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.PhoneNumberTextSource -@PreviewFeature -inline fun DiceAnimationType.basketballDiceAnimationTypeOrNull(): BasketballDiceAnimationType? = - this as? BasketballDiceAnimationType +public inline fun TextSource.phoneNumberTextSourceOrThrow(): PhoneNumberTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.PhoneNumberTextSource -@PreviewFeature -inline fun DiceAnimationType.basketballDiceAnimationTypeOrThrow(): BasketballDiceAnimationType = - this as BasketballDiceAnimationType +public inline fun TextSource.ifPhoneNumberTextSource(block: (PhoneNumberTextSource) -> T): T? = + phoneNumberTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun DiceAnimationType.ifBowlingDiceAnimationType(block: (BowlingDiceAnimationType) -> T) = bowlingDiceAnimationTypeOrNull() ?.let(block) +public inline fun TextSource.preTextSourceOrNull(): PreTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.PreTextSource -@PreviewFeature -inline fun DiceAnimationType.bowlingDiceAnimationTypeOrNull(): BowlingDiceAnimationType? = this as? BowlingDiceAnimationType +public inline fun TextSource.preTextSourceOrThrow(): PreTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.PreTextSource -@PreviewFeature -inline fun DiceAnimationType.bowlingDiceAnimationTypeOrThrow(): BowlingDiceAnimationType = - this as BowlingDiceAnimationType +public inline fun TextSource.ifPreTextSource(block: (PreTextSource) -> T): T? = + preTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun DiceAnimationType.ifCubeDiceAnimationType(block: (CubeDiceAnimationType) -> T) = cubeDiceAnimationTypeOrNull() ?.let(block) +public inline fun TextSource.regularTextSourceOrNull(): RegularTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.RegularTextSource -@PreviewFeature -inline fun DiceAnimationType.cubeDiceAnimationTypeOrNull(): CubeDiceAnimationType? = this as? CubeDiceAnimationType +public inline fun TextSource.regularTextSourceOrThrow(): RegularTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.RegularTextSource -@PreviewFeature -inline fun DiceAnimationType.cubeDiceAnimationTypeOrThrow(): CubeDiceAnimationType = this as CubeDiceAnimationType +public inline fun TextSource.ifRegularTextSource(block: (RegularTextSource) -> T): T? = + regularTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun DiceAnimationType.ifCustomDiceAnimationType(block: (CustomDiceAnimationType) -> T) = customDiceAnimationTypeOrNull() ?.let(block) +public inline fun TextSource.spoilerTextSourceOrNull(): SpoilerTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.SpoilerTextSource -@PreviewFeature -inline fun DiceAnimationType.customDiceAnimationTypeOrNull(): CustomDiceAnimationType? = this as? CustomDiceAnimationType +public inline fun TextSource.spoilerTextSourceOrThrow(): SpoilerTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.SpoilerTextSource -@PreviewFeature -inline fun DiceAnimationType.customDiceAnimationTypeOrThrow(): CustomDiceAnimationType = this as CustomDiceAnimationType +public inline fun TextSource.ifSpoilerTextSource(block: (SpoilerTextSource) -> T): T? = + spoilerTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun DiceAnimationType.ifDartsDiceAnimationType(block: (DartsDiceAnimationType) -> T) = dartsDiceAnimationTypeOrNull() ?.let(block) +public inline fun TextSource.strikethroughTextSourceOrNull(): StrikethroughTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.StrikethroughTextSource -@PreviewFeature -inline fun DiceAnimationType.dartsDiceAnimationTypeOrNull(): DartsDiceAnimationType? = this as? DartsDiceAnimationType +public inline fun TextSource.strikethroughTextSourceOrThrow(): StrikethroughTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.StrikethroughTextSource -@PreviewFeature -inline fun DiceAnimationType.dartsDiceAnimationTypeOrThrow(): DartsDiceAnimationType = this as DartsDiceAnimationType +public inline fun TextSource.ifStrikethroughTextSource(block: (StrikethroughTextSource) -> T): + T? = strikethroughTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun DiceAnimationType.ifFootballDiceAnimationType(block: (FootballDiceAnimationType) -> T) = footballDiceAnimationTypeOrNull() ?.let(block) +public inline fun TextSource.textLinkTextSourceOrNull(): TextLinkTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.TextLinkTextSource -@PreviewFeature -inline fun DiceAnimationType.footballDiceAnimationTypeOrNull(): FootballDiceAnimationType? = - this as? FootballDiceAnimationType +public inline fun TextSource.textLinkTextSourceOrThrow(): TextLinkTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.TextLinkTextSource -@PreviewFeature -inline fun DiceAnimationType.footballDiceAnimationTypeOrThrow(): FootballDiceAnimationType = - this as FootballDiceAnimationType +public inline fun TextSource.ifTextLinkTextSource(block: (TextLinkTextSource) -> T): T? = + textLinkTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun DiceAnimationType.ifSlotMachineDiceAnimationType(block: (SlotMachineDiceAnimationType) -> T) = slotMachineDiceAnimationTypeOrNull() ?.let(block) +public inline fun TextSource.textMentionTextSourceOrNull(): TextMentionTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.TextMentionTextSource -@PreviewFeature -inline fun DiceAnimationType.slotMachineDiceAnimationTypeOrNull(): SlotMachineDiceAnimationType? = - this as? SlotMachineDiceAnimationType +public inline fun TextSource.textMentionTextSourceOrThrow(): TextMentionTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.TextMentionTextSource -@PreviewFeature -inline fun DiceAnimationType.slotMachineDiceAnimationTypeOrThrow(): SlotMachineDiceAnimationType = - this as SlotMachineDiceAnimationType +public inline fun TextSource.ifTextMentionTextSource(block: (TextMentionTextSource) -> T): T? = + textMentionTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifChannelChatCreated(block: (ChannelChatCreated) -> T) = channelChatCreatedOrNull() ?.let(block) +public inline fun TextSource.multilevelTextSourceOrNull(): MultilevelTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.MultilevelTextSource -@PreviewFeature -inline fun ChatEvent.channelChatCreatedOrNull(): ChannelChatCreated? = this as? ChannelChatCreated +public inline fun TextSource.multilevelTextSourceOrThrow(): MultilevelTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.MultilevelTextSource -@PreviewFeature -inline fun ChatEvent.channelChatCreatedOrThrow(): ChannelChatCreated = this as ChannelChatCreated +public inline fun TextSource.ifMultilevelTextSource(block: (MultilevelTextSource) -> T): T? = + multilevelTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifDeleteChatPhoto(block: (DeleteChatPhoto) -> T) = deleteChatPhotoOrNull() ?.let(block) +public inline fun TextSource.uRLTextSourceOrNull(): URLTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.URLTextSource -@PreviewFeature -inline fun ChatEvent.deleteChatPhotoOrNull(): DeleteChatPhoto? = this as? DeleteChatPhoto +public inline fun TextSource.uRLTextSourceOrThrow(): URLTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.URLTextSource -@PreviewFeature -inline fun ChatEvent.deleteChatPhotoOrThrow(): DeleteChatPhoto = this as DeleteChatPhoto +public inline fun TextSource.ifURLTextSource(block: (URLTextSource) -> T): T? = + uRLTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifGroupChatCreated(block: (GroupChatCreated) -> T) = groupChatCreatedOrNull() ?.let(block) +public inline fun TextSource.underlineTextSourceOrNull(): UnderlineTextSource? = this as? + dev.inmo.tgbotapi.types.message.textsources.UnderlineTextSource -@PreviewFeature -inline fun ChatEvent.groupChatCreatedOrNull(): GroupChatCreated? = this as? GroupChatCreated +public inline fun TextSource.underlineTextSourceOrThrow(): UnderlineTextSource = this as + dev.inmo.tgbotapi.types.message.textsources.UnderlineTextSource -@PreviewFeature -inline fun ChatEvent.groupChatCreatedOrThrow(): GroupChatCreated = this as GroupChatCreated +public inline fun TextSource.ifUnderlineTextSource(block: (UnderlineTextSource) -> T): T? = + underlineTextSourceOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifLeftChatMember(block: (LeftChatMember) -> T) = leftChatMemberOrNull() ?.let(block) +public inline fun PassportElementError.unknownPassportElementErrorOrNull(): + UnknownPassportElementError? = this as? + dev.inmo.tgbotapi.types.passport.UnknownPassportElementError -@PreviewFeature -inline fun ChatEvent.leftChatMemberOrNull(): LeftChatMember? = this as? LeftChatMember +public inline fun PassportElementError.unknownPassportElementErrorOrThrow(): + UnknownPassportElementError = this as + dev.inmo.tgbotapi.types.passport.UnknownPassportElementError -@PreviewFeature -inline fun ChatEvent.leftChatMemberOrThrow(): LeftChatMember = this as LeftChatMember +public inline fun + PassportElementError.ifUnknownPassportElementError(block: (UnknownPassportElementError) -> T): + T? = unknownPassportElementErrorOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifMessageAutoDeleteTimerChanged(block: (MessageAutoDeleteTimerChanged) -> T) = messageAutoDeleteTimerChangedOrNull() ?.let(block) +public inline fun PassportElementError.passportSingleElementErrorOrNull(): + PassportSingleElementError? = this as? + dev.inmo.tgbotapi.types.passport.PassportSingleElementError -@PreviewFeature -inline fun ChatEvent.messageAutoDeleteTimerChangedOrNull(): MessageAutoDeleteTimerChanged? = - this as? MessageAutoDeleteTimerChanged +public inline fun PassportElementError.passportSingleElementErrorOrThrow(): + PassportSingleElementError = this as dev.inmo.tgbotapi.types.passport.PassportSingleElementError -@PreviewFeature -inline fun ChatEvent.messageAutoDeleteTimerChangedOrThrow(): MessageAutoDeleteTimerChanged = - this as MessageAutoDeleteTimerChanged +public inline fun + PassportElementError.ifPassportSingleElementError(block: (PassportSingleElementError) -> T): T? + = passportSingleElementErrorOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifNewChatMembers(block: (NewChatMembers) -> T) = newChatMembersOrNull() ?.let(block) +public inline fun PassportElementError.passportMultipleElementsErrorOrNull(): + PassportMultipleElementsError? = this as? + dev.inmo.tgbotapi.types.passport.PassportMultipleElementsError -@PreviewFeature -inline fun ChatEvent.newChatMembersOrNull(): NewChatMembers? = this as? NewChatMembers +public inline fun PassportElementError.passportMultipleElementsErrorOrThrow(): + PassportMultipleElementsError = this as + dev.inmo.tgbotapi.types.passport.PassportMultipleElementsError -@PreviewFeature -inline fun ChatEvent.newChatMembersOrThrow(): NewChatMembers = this as NewChatMembers +public inline fun + PassportElementError.ifPassportMultipleElementsError(block: (PassportMultipleElementsError) -> T): + T? = passportMultipleElementsErrorOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifNewChatPhoto(block: (NewChatPhoto) -> T) = newChatPhotoOrNull() ?.let(block) +public inline fun PassportElementError.passportElementFileErrorOrNull(): PassportElementFileError? = + this as? dev.inmo.tgbotapi.types.passport.PassportElementFileError -@PreviewFeature -inline fun ChatEvent.newChatPhotoOrNull(): NewChatPhoto? = this as? NewChatPhoto +public inline fun PassportElementError.passportElementFileErrorOrThrow(): PassportElementFileError = + this as dev.inmo.tgbotapi.types.passport.PassportElementFileError -@PreviewFeature -inline fun ChatEvent.newChatPhotoOrThrow(): NewChatPhoto = this as NewChatPhoto +public inline fun + PassportElementError.ifPassportElementFileError(block: (PassportElementFileError) -> T): T? = + passportElementFileErrorOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifNewChatTitle(block: (NewChatTitle) -> T) = newChatTitleOrNull() ?.let(block) +public inline fun PassportElementError.passportElementFilesErrorOrNull(): PassportElementFilesError? + = this as? dev.inmo.tgbotapi.types.passport.PassportElementFilesError -@PreviewFeature -inline fun ChatEvent.newChatTitleOrNull(): NewChatTitle? = this as? NewChatTitle +public inline fun PassportElementError.passportElementFilesErrorOrThrow(): PassportElementFilesError + = this as dev.inmo.tgbotapi.types.passport.PassportElementFilesError -@PreviewFeature -inline fun ChatEvent.newChatTitleOrThrow(): NewChatTitle = this as NewChatTitle +public inline fun + PassportElementError.ifPassportElementFilesError(block: (PassportElementFilesError) -> T): T? = + passportElementFilesErrorOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifPinnedMessage(block: (PinnedMessage) -> T) = pinnedMessageOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorDataFieldOrNull(): + PassportElementErrorDataField? = this as? + dev.inmo.tgbotapi.types.passport.PassportElementErrorDataField -@PreviewFeature -inline fun ChatEvent.pinnedMessageOrNull(): PinnedMessage? = this as? PinnedMessage +public inline fun PassportElementError.passportElementErrorDataFieldOrThrow(): + PassportElementErrorDataField = this as + dev.inmo.tgbotapi.types.passport.PassportElementErrorDataField -@PreviewFeature -inline fun ChatEvent.pinnedMessageOrThrow(): PinnedMessage = this as PinnedMessage +public inline fun + PassportElementError.ifPassportElementErrorDataField(block: (PassportElementErrorDataField) -> T): + T? = passportElementErrorDataFieldOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifSuccessfulPaymentEvent(block: (SuccessfulPaymentEvent) -> T) = successfulPaymentEventOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorFrontSideOrNull(): + PassportElementErrorFrontSide? = this as? + dev.inmo.tgbotapi.types.passport.PassportElementErrorFrontSide -@PreviewFeature -inline fun ChatEvent.successfulPaymentEventOrNull(): SuccessfulPaymentEvent? = this as? SuccessfulPaymentEvent +public inline fun PassportElementError.passportElementErrorFrontSideOrThrow(): + PassportElementErrorFrontSide = this as + dev.inmo.tgbotapi.types.passport.PassportElementErrorFrontSide -@PreviewFeature -inline fun ChatEvent.successfulPaymentEventOrThrow(): SuccessfulPaymentEvent = this as SuccessfulPaymentEvent +public inline fun + PassportElementError.ifPassportElementErrorFrontSide(block: (PassportElementErrorFrontSide) -> T): + T? = passportElementErrorFrontSideOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifProximityAlertTriggered(block: (ProximityAlertTriggered) -> T) = proximityAlertTriggeredOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorReverseSideOrNull(): + PassportElementErrorReverseSide? = this as? + dev.inmo.tgbotapi.types.passport.PassportElementErrorReverseSide -@PreviewFeature -inline fun ChatEvent.proximityAlertTriggeredOrNull(): ProximityAlertTriggered? = this as? ProximityAlertTriggered +public inline fun PassportElementError.passportElementErrorReverseSideOrThrow(): + PassportElementErrorReverseSide = this as + dev.inmo.tgbotapi.types.passport.PassportElementErrorReverseSide -@PreviewFeature -inline fun ChatEvent.proximityAlertTriggeredOrThrow(): ProximityAlertTriggered = this as ProximityAlertTriggered +public inline fun + PassportElementError.ifPassportElementErrorReverseSide(block: (PassportElementErrorReverseSide) -> T): + T? = passportElementErrorReverseSideOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifSupergroupChatCreated(block: (SupergroupChatCreated) -> T) = supergroupChatCreatedOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorSelfieOrNull(): + PassportElementErrorSelfie? = this as? + dev.inmo.tgbotapi.types.passport.PassportElementErrorSelfie -@PreviewFeature -inline fun ChatEvent.supergroupChatCreatedOrNull(): SupergroupChatCreated? = this as? SupergroupChatCreated +public inline fun PassportElementError.passportElementErrorSelfieOrThrow(): + PassportElementErrorSelfie = this as dev.inmo.tgbotapi.types.passport.PassportElementErrorSelfie -@PreviewFeature -inline fun ChatEvent.supergroupChatCreatedOrThrow(): SupergroupChatCreated = this as SupergroupChatCreated +public inline fun + PassportElementError.ifPassportElementErrorSelfie(block: (PassportElementErrorSelfie) -> T): T? + = passportElementErrorSelfieOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifMigratedToSupergroup(block: (MigratedToSupergroup) -> T) = migratedToSupergroupOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorFileOrNull(): PassportElementErrorFile? = + this as? dev.inmo.tgbotapi.types.passport.PassportElementErrorFile -@PreviewFeature -inline fun ChatEvent.migratedToSupergroupOrNull(): MigratedToSupergroup? = this as? MigratedToSupergroup +public inline fun PassportElementError.passportElementErrorFileOrThrow(): PassportElementErrorFile = + this as dev.inmo.tgbotapi.types.passport.PassportElementErrorFile -@PreviewFeature -inline fun ChatEvent.migratedToSupergroupOrThrow(): MigratedToSupergroup = this as MigratedToSupergroup +public inline fun + PassportElementError.ifPassportElementErrorFile(block: (PassportElementErrorFile) -> T): T? = + passportElementErrorFileOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifChannelEvent(block: (ChannelEvent) -> T) = channelEventOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorFilesOrNull(): PassportElementErrorFiles? + = this as? dev.inmo.tgbotapi.types.passport.PassportElementErrorFiles -@PreviewFeature -inline fun ChatEvent.channelEventOrNull(): ChannelEvent? = this as? ChannelEvent +public inline fun PassportElementError.passportElementErrorFilesOrThrow(): PassportElementErrorFiles + = this as dev.inmo.tgbotapi.types.passport.PassportElementErrorFiles -@PreviewFeature -inline fun ChatEvent.channelEventOrThrow(): ChannelEvent = this as ChannelEvent +public inline fun + PassportElementError.ifPassportElementErrorFiles(block: (PassportElementErrorFiles) -> T): T? = + passportElementErrorFilesOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifPublicChatEvent(block: (PublicChatEvent) -> T) = publicChatEventOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorTranslationFileOrNull(): + PassportElementErrorTranslationFile? = this as? + dev.inmo.tgbotapi.types.passport.PassportElementErrorTranslationFile -@PreviewFeature -inline fun ChatEvent.publicChatEventOrNull(): PublicChatEvent? = this as? PublicChatEvent +public inline fun PassportElementError.passportElementErrorTranslationFileOrThrow(): + PassportElementErrorTranslationFile = this as + dev.inmo.tgbotapi.types.passport.PassportElementErrorTranslationFile -@PreviewFeature -inline fun ChatEvent.publicChatEventOrThrow(): PublicChatEvent = this as PublicChatEvent +public inline fun + PassportElementError.ifPassportElementErrorTranslationFile(block: (PassportElementErrorTranslationFile) -> T): + T? = passportElementErrorTranslationFileOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifCommonEvent(block: (CommonEvent) -> T) = commonEventOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorTranslationFilesOrNull(): + PassportElementErrorTranslationFiles? = this as? + dev.inmo.tgbotapi.types.passport.PassportElementErrorTranslationFiles -@PreviewFeature -inline fun ChatEvent.commonEventOrNull(): CommonEvent? = this as? CommonEvent +public inline fun PassportElementError.passportElementErrorTranslationFilesOrThrow(): + PassportElementErrorTranslationFiles = this as + dev.inmo.tgbotapi.types.passport.PassportElementErrorTranslationFiles -@PreviewFeature -inline fun ChatEvent.commonEventOrThrow(): CommonEvent = this as CommonEvent +public inline fun + PassportElementError.ifPassportElementErrorTranslationFiles(block: (PassportElementErrorTranslationFiles) -> T): + T? = passportElementErrorTranslationFilesOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifGroupEvent(block: (GroupEvent) -> T) = groupEventOrNull() ?.let(block) +public inline fun PassportElementError.passportElementErrorUnspecifiedOrNull(): + PassportElementErrorUnspecified? = this as? + dev.inmo.tgbotapi.types.passport.PassportElementErrorUnspecified -@PreviewFeature -inline fun ChatEvent.groupEventOrNull(): GroupEvent? = this as? GroupEvent +public inline fun PassportElementError.passportElementErrorUnspecifiedOrThrow(): + PassportElementErrorUnspecified = this as + dev.inmo.tgbotapi.types.passport.PassportElementErrorUnspecified -@PreviewFeature -inline fun ChatEvent.groupEventOrThrow(): GroupEvent = this as GroupEvent +public inline fun + PassportElementError.ifPassportElementErrorUnspecified(block: (PassportElementErrorUnspecified) -> T): + T? = passportElementErrorUnspecifiedOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifSupergroupEvent(block: (SupergroupEvent) -> T) = supergroupEventOrNull() ?.let(block) +public inline fun SecureValue.addressSecureValueOrNull(): AddressSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.AddressSecureValue -@PreviewFeature -inline fun ChatEvent.supergroupEventOrNull(): SupergroupEvent? = this as? SupergroupEvent +public inline fun SecureValue.addressSecureValueOrThrow(): AddressSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.AddressSecureValue -@PreviewFeature -inline fun ChatEvent.supergroupEventOrThrow(): SupergroupEvent = this as SupergroupEvent +public inline fun SecureValue.ifAddressSecureValue(block: (AddressSecureValue) -> T): T? = + addressSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifVideoChatEvent(block: (VideoChatEvent) -> T) = videoChatEventOrNull() ?.let(block) +public inline fun SecureValue.identityWithReverseSideSecureValueOrNull(): + IdentityWithReverseSideSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.IdentityWithReverseSideSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatEventOrNull(): VideoChatEvent? = this as? VideoChatEvent +public inline fun SecureValue.identityWithReverseSideSecureValueOrThrow(): + IdentityWithReverseSideSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.IdentityWithReverseSideSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatEventOrThrow(): VideoChatEvent = this as VideoChatEvent +public inline fun + SecureValue.ifIdentityWithReverseSideSecureValue(block: (IdentityWithReverseSideSecureValue) -> T): + T? = identityWithReverseSideSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifVideoChatEnded(block: (VideoChatEnded) -> T) = videoChatEndedOrNull() ?.let(block) +public inline fun SecureValue.driverLicenseSecureValueOrNull(): DriverLicenseSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.DriverLicenseSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatEndedOrNull(): VideoChatEnded? = this as? VideoChatEnded +public inline fun SecureValue.driverLicenseSecureValueOrThrow(): DriverLicenseSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.DriverLicenseSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatEndedOrThrow(): VideoChatEnded = this as VideoChatEnded +public inline fun + SecureValue.ifDriverLicenseSecureValue(block: (DriverLicenseSecureValue) -> T): T? = + driverLicenseSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifVideoChatParticipantsInvited(block: (VideoChatParticipantsInvited) -> T) = videoChatParticipantsInvitedOrNull() ?.let(block) +public inline fun SecureValue.identityCardSecureValueOrNull(): IdentityCardSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.IdentityCardSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatParticipantsInvitedOrNull(): VideoChatParticipantsInvited? = - this as? VideoChatParticipantsInvited +public inline fun SecureValue.identityCardSecureValueOrThrow(): IdentityCardSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.IdentityCardSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatParticipantsInvitedOrThrow(): VideoChatParticipantsInvited = - this as VideoChatParticipantsInvited +public inline fun SecureValue.ifIdentityCardSecureValue(block: (IdentityCardSecureValue) -> T): + T? = identityCardSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifVideoChatStarted(block: (VideoChatStarted) -> T) = videoChatStartedOrNull() ?.let(block) +public inline fun SecureValue.otherDocumentsSecureValueOrNull(): OtherDocumentsSecureValue? = this + as? dev.inmo.tgbotapi.types.passport.decrypted.OtherDocumentsSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatStartedOrNull(): VideoChatStarted? = this as? VideoChatStarted +public inline fun SecureValue.otherDocumentsSecureValueOrThrow(): OtherDocumentsSecureValue = this + as dev.inmo.tgbotapi.types.passport.decrypted.OtherDocumentsSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatStartedOrThrow(): VideoChatStarted = this as VideoChatStarted +public inline fun + SecureValue.ifOtherDocumentsSecureValue(block: (OtherDocumentsSecureValue) -> T): T? = + otherDocumentsSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifVideoChatScheduled(block: (VideoChatScheduled) -> T) = videoChatScheduledOrNull() ?.let(block) +public inline fun SecureValue.utilityBillSecureValueOrNull(): UtilityBillSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.UtilityBillSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatScheduledOrNull(): VideoChatScheduled? = this as? VideoChatScheduled +public inline fun SecureValue.utilityBillSecureValueOrThrow(): UtilityBillSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.UtilityBillSecureValue -@PreviewFeature -inline fun ChatEvent.videoChatScheduledOrThrow(): VideoChatScheduled = this as VideoChatScheduled +public inline fun SecureValue.ifUtilityBillSecureValue(block: (UtilityBillSecureValue) -> T): T? + = utilityBillSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun ChatEvent.ifUserLoggedIn(block: (UserLoggedIn) -> T) = userLoggedInOrNull() ?.let(block) +public inline fun SecureValue.bankStatementSecureValueOrNull(): BankStatementSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.BankStatementSecureValue -@PreviewFeature -inline fun ChatEvent.userLoggedInOrNull(): UserLoggedIn? = this as? UserLoggedIn +public inline fun SecureValue.bankStatementSecureValueOrThrow(): BankStatementSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.BankStatementSecureValue -@PreviewFeature -inline fun ChatEvent.userLoggedInOrThrow(): UserLoggedIn = this as UserLoggedIn +public inline fun + SecureValue.ifBankStatementSecureValue(block: (BankStatementSecureValue) -> T): T? = + bankStatementSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun CommonSendInvoiceData.ifSendInvoice(block: (SendInvoice) -> T) = sendInvoiceOrNull() ?.let(block) +public inline fun SecureValue.rentalAgreementSecureValueOrNull(): RentalAgreementSecureValue? = this + as? dev.inmo.tgbotapi.types.passport.decrypted.RentalAgreementSecureValue -@PreviewFeature -inline fun CommonSendInvoiceData.sendInvoiceOrNull(): SendInvoice? = this as? SendInvoice +public inline fun SecureValue.rentalAgreementSecureValueOrThrow(): RentalAgreementSecureValue = this + as dev.inmo.tgbotapi.types.passport.decrypted.RentalAgreementSecureValue -@PreviewFeature -inline fun CommonSendInvoiceData.sendInvoiceOrThrow(): SendInvoice = this as SendInvoice +public inline fun + SecureValue.ifRentalAgreementSecureValue(block: (RentalAgreementSecureValue) -> T): T? = + rentalAgreementSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun CommonSendInvoiceData.ifCreateInvoiceLink(block: (CreateInvoiceLink) -> T) = createInvoiceLinkOrNull() ?.let(block) +public inline fun SecureValue.passportRegistrationSecureValueOrNull(): + PassportRegistrationSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.PassportRegistrationSecureValue -@PreviewFeature -inline fun CommonSendInvoiceData.createInvoiceLinkOrNull(): CreateInvoiceLink? = this as? CreateInvoiceLink +public inline fun SecureValue.passportRegistrationSecureValueOrThrow(): + PassportRegistrationSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.PassportRegistrationSecureValue -@PreviewFeature -inline fun CommonSendInvoiceData.createInvoiceLinkOrThrow(): CreateInvoiceLink = this as CreateInvoiceLink +public inline fun + SecureValue.ifPassportRegistrationSecureValue(block: (PassportRegistrationSecureValue) -> T): T? + = passportRegistrationSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun CommonSendInvoiceData.ifInputInvoiceMessageContent(block: (InputInvoiceMessageContent) -> T) = inputInvoiceMessageContentOrNull() ?.let(block) +public inline fun SecureValue.temporalRegistrationSecureValueOrNull(): + TemporalRegistrationSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.TemporalRegistrationSecureValue -@PreviewFeature -inline fun CommonSendInvoiceData.inputInvoiceMessageContentOrNull(): InputInvoiceMessageContent? = - this as? InputInvoiceMessageContent +public inline fun SecureValue.temporalRegistrationSecureValueOrThrow(): + TemporalRegistrationSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.TemporalRegistrationSecureValue -@PreviewFeature -inline fun CommonSendInvoiceData.inputInvoiceMessageContentOrThrow(): InputInvoiceMessageContent = - this as InputInvoiceMessageContent +public inline fun + SecureValue.ifTemporalRegistrationSecureValue(block: (TemporalRegistrationSecureValue) -> T): T? + = temporalRegistrationSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun Any.ifFromUser(block: (FromUser) -> T) = fromUserOrNull() ?.let(block) +public inline fun SecureValue.passportSecureValueOrNull(): PassportSecureValue? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.PassportSecureValue -@PreviewFeature -inline fun Any.fromUserOrNull(): FromUser? = this as? FromUser +public inline fun SecureValue.passportSecureValueOrThrow(): PassportSecureValue = this as + dev.inmo.tgbotapi.types.passport.decrypted.PassportSecureValue -@PreviewFeature -inline fun Any.fromUserOrThrow(): FromUser = this as FromUser +public inline fun SecureValue.ifPassportSecureValue(block: (PassportSecureValue) -> T): T? = + passportSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun Any.ifWithUser(block: (WithUser) -> T) = withUserOrNull() ?.let(block) +public inline fun SecureValue.commonPassportSecureValueOrNull(): CommonPassportSecureValue? = this + as? dev.inmo.tgbotapi.types.passport.decrypted.CommonPassportSecureValue -@PreviewFeature -inline fun Any.withUserOrNull(): WithUser? = this as? WithUser +public inline fun SecureValue.commonPassportSecureValueOrThrow(): CommonPassportSecureValue = this + as dev.inmo.tgbotapi.types.passport.decrypted.CommonPassportSecureValue -@PreviewFeature -inline fun Any.withUserOrThrow(): WithUser = this as WithUser +public inline fun + SecureValue.ifCommonPassportSecureValue(block: (CommonPassportSecureValue) -> T): T? = + commonPassportSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun Any.ifWithOptionalLanguageCode(block: (WithOptionalLanguageCode) -> T) = withOptionalLanguageCodeOrNull() ?.let(block) +public inline fun SecureValue.internalPassportSecureValueOrNull(): InternalPassportSecureValue? = + this as? dev.inmo.tgbotapi.types.passport.decrypted.InternalPassportSecureValue -@PreviewFeature -inline fun Any.withOptionalLanguageCodeOrNull(): WithOptionalLanguageCode? = this as? WithOptionalLanguageCode +public inline fun SecureValue.internalPassportSecureValueOrThrow(): InternalPassportSecureValue = + this as dev.inmo.tgbotapi.types.passport.decrypted.InternalPassportSecureValue -@PreviewFeature -inline fun Any.withOptionalLanguageCodeOrThrow(): WithOptionalLanguageCode = this as WithOptionalLanguageCode +public inline fun + SecureValue.ifInternalPassportSecureValue(block: (InternalPassportSecureValue) -> T): T? = + internalPassportSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun Location.ifStaticLocation(block: (StaticLocation) -> T) = staticLocationOrNull() ?.let(block) +public inline fun SecureValue.personalDetailsSecureValueOrNull(): PersonalDetailsSecureValue? = this + as? dev.inmo.tgbotapi.types.passport.decrypted.PersonalDetailsSecureValue -@PreviewFeature -inline fun Location.staticLocationOrNull(): StaticLocation? = this as? StaticLocation +public inline fun SecureValue.personalDetailsSecureValueOrThrow(): PersonalDetailsSecureValue = this + as dev.inmo.tgbotapi.types.passport.decrypted.PersonalDetailsSecureValue -@PreviewFeature -inline fun Location.staticLocationOrThrow(): StaticLocation = this as StaticLocation +public inline fun + SecureValue.ifPersonalDetailsSecureValue(block: (PersonalDetailsSecureValue) -> T): T? = + personalDetailsSecureValueOrNull() ?.let(block) -@PreviewFeature -inline fun Location.ifLiveLocation(block: (LiveLocation) -> T) = liveLocationOrNull() ?.let(block) +public inline fun SecureValue.secureValueIdentityOrNull(): SecureValueIdentity? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueIdentity -@PreviewFeature -inline fun Location.liveLocationOrNull(): LiveLocation? = this as? LiveLocation +public inline fun SecureValue.secureValueIdentityOrThrow(): SecureValueIdentity = this as + dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueIdentity -@PreviewFeature -inline fun Location.liveLocationOrThrow(): LiveLocation = this as LiveLocation +public inline fun SecureValue.ifSecureValueIdentity(block: (SecureValueIdentity) -> T): T? = + secureValueIdentityOrNull() ?.let(block) -@PreviewFeature -inline fun ChatInviteLink.ifPrimaryInviteLink(block: (PrimaryInviteLink) -> T) = primaryInviteLinkOrNull() ?.let(block) +public inline fun SecureValue.secureValueWithDataOrNull(): SecureValueWithData? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithData -@PreviewFeature -inline fun ChatInviteLink.primaryInviteLinkOrNull(): PrimaryInviteLink? = this as? PrimaryInviteLink +public inline fun SecureValue.secureValueWithDataOrThrow(): SecureValueWithData = this as + dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithData -@PreviewFeature -inline fun ChatInviteLink.primaryInviteLinkOrThrow(): PrimaryInviteLink = this as PrimaryInviteLink +public inline fun SecureValue.ifSecureValueWithData(block: (SecureValueWithData) -> T): T? = + secureValueWithDataOrNull() ?.let(block) -@PreviewFeature -inline fun ChatInviteLink.ifSecondaryChatInviteLink(block: (SecondaryChatInviteLink) -> T) = secondaryChatInviteLinkOrNull() ?.let(block) +public inline fun SecureValue.secureValueWithFilesOrNull(): SecureValueWithFiles? = this as? + dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithFiles -@PreviewFeature -inline fun ChatInviteLink.secondaryChatInviteLinkOrNull(): SecondaryChatInviteLink? = this as? SecondaryChatInviteLink +public inline fun SecureValue.secureValueWithFilesOrThrow(): SecureValueWithFiles = this as + dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithFiles -@PreviewFeature -inline fun ChatInviteLink.secondaryChatInviteLinkOrThrow(): SecondaryChatInviteLink = this as SecondaryChatInviteLink +public inline fun SecureValue.ifSecureValueWithFiles(block: (SecureValueWithFiles) -> T): T? = + secureValueWithFilesOrNull() ?.let(block) -@PreviewFeature -inline fun ChatInviteLink.ifChatInviteLinkWithJoinRequest(block: (ChatInviteLinkWithJoinRequest) -> T) = chatInviteLinkWithJoinRequestOrNull() ?.let(block) +public inline fun SecureValue.secureValueWithReverseSideOrNull(): SecureValueWithReverseSide? = this + as? dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithReverseSide -@PreviewFeature -inline fun ChatInviteLink.chatInviteLinkWithJoinRequestOrNull(): ChatInviteLinkWithJoinRequest? = this as? ChatInviteLinkWithJoinRequest +public inline fun SecureValue.secureValueWithReverseSideOrThrow(): SecureValueWithReverseSide = this + as dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithReverseSide -@PreviewFeature -inline fun ChatInviteLink.chatInviteLinkWithJoinRequestOrThrow(): ChatInviteLinkWithJoinRequest = this as ChatInviteLinkWithJoinRequest +public inline fun + SecureValue.ifSecureValueWithReverseSide(block: (SecureValueWithReverseSide) -> T): T? = + secureValueWithReverseSideOrNull() ?.let(block) -@PreviewFeature -inline fun ChatInviteLink.ifChatInviteLinkWithLimitedMembers(block: (ChatInviteLinkWithLimitedMembers) -> T) = chatInviteLinkWithLimitedMembersOrNull() ?.let(block) +public inline fun SecureValue.secureValueWithTranslationsOrNull(): SecureValueWithTranslations? = + this as? dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithTranslations -@PreviewFeature -inline fun ChatInviteLink.chatInviteLinkWithLimitedMembersOrNull(): ChatInviteLinkWithLimitedMembers? = this as? ChatInviteLinkWithLimitedMembers +public inline fun SecureValue.secureValueWithTranslationsOrThrow(): SecureValueWithTranslations = + this as dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithTranslations -@PreviewFeature -inline fun ChatInviteLink.chatInviteLinkWithLimitedMembersOrThrow(): ChatInviteLinkWithLimitedMembers = this as ChatInviteLinkWithLimitedMembers +public inline fun + SecureValue.ifSecureValueWithTranslations(block: (SecureValueWithTranslations) -> T): T? = + secureValueWithTranslationsOrNull() ?.let(block) -@PreviewFeature -inline fun ChatInviteLink.ifChatInviteLinkUnlimited(block: (ChatInviteLinkUnlimited) -> T) = chatInviteLinkUnlimitedOrNull() ?.let(block) +public inline fun EncryptedPassportElement.emailOrNull(): Email? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.Email -@PreviewFeature -inline fun ChatInviteLink.chatInviteLinkUnlimitedOrNull(): ChatInviteLinkUnlimited? = this as? ChatInviteLinkUnlimited +public inline fun EncryptedPassportElement.emailOrThrow(): Email = this as + dev.inmo.tgbotapi.types.passport.encrypted.Email -@PreviewFeature -inline fun ChatInviteLink.chatInviteLinkUnlimitedOrThrow(): ChatInviteLinkUnlimited = this as ChatInviteLinkUnlimited +public inline fun EncryptedPassportElement.ifEmail(block: (Email) -> T): T? = emailOrNull() + ?.let(block) -@PreviewFeature -inline fun ForwardInfo.ifAnonymousForwardInfo(block: (AnonymousForwardInfo) -> T) = anonymousForwardInfoOrNull() ?.let(block) +public inline fun EncryptedPassportElement.encryptedAddressOrNull(): EncryptedAddress? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedAddress -@PreviewFeature -inline fun ForwardInfo.anonymousForwardInfoOrNull(): AnonymousForwardInfo? = this as? AnonymousForwardInfo +public inline fun EncryptedPassportElement.encryptedAddressOrThrow(): EncryptedAddress = this as + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedAddress -@PreviewFeature -inline fun ForwardInfo.anonymousForwardInfoOrThrow(): AnonymousForwardInfo = this as AnonymousForwardInfo +public inline fun EncryptedPassportElement.ifEncryptedAddress(block: (EncryptedAddress) -> T): + T? = encryptedAddressOrNull() ?.let(block) -@PreviewFeature -inline fun ForwardInfo.ifUserForwardInfo(block: (UserForwardInfo) -> T) = userForwardInfoOrNull() ?.let(block) +public inline + fun EncryptedPassportElement.encryptedPassportElementWithTranslatableFilesCollectionOrNull(): + EncryptedPassportElementWithTranslatableFilesCollection? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPassportElementWithTranslatableFilesCollection -@PreviewFeature -inline fun ForwardInfo.userForwardInfoOrNull(): UserForwardInfo? = this as? UserForwardInfo +public inline + fun EncryptedPassportElement.encryptedPassportElementWithTranslatableFilesCollectionOrThrow(): + EncryptedPassportElementWithTranslatableFilesCollection = this as + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPassportElementWithTranslatableFilesCollection -@PreviewFeature -inline fun ForwardInfo.userForwardInfoOrThrow(): UserForwardInfo = this as UserForwardInfo +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithTranslatableFilesCollection(block: (EncryptedPassportElementWithTranslatableFilesCollection) -> T): + T? = encryptedPassportElementWithTranslatableFilesCollectionOrNull() ?.let(block) -@PreviewFeature -inline fun ForwardInfo.ifForwardFromPublicChatInfo(block: (ForwardFromPublicChatInfo) -> T) = forwardFromPublicChatInfoOrNull() ?.let(block) +public inline fun EncryptedPassportElement.utilityBillOrNull(): UtilityBill? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.UtilityBill -@PreviewFeature -inline fun ForwardInfo.forwardFromPublicChatInfoOrNull(): ForwardFromPublicChatInfo? = this as? ForwardFromPublicChatInfo +public inline fun EncryptedPassportElement.utilityBillOrThrow(): UtilityBill = this as + dev.inmo.tgbotapi.types.passport.encrypted.UtilityBill -@PreviewFeature -inline fun ForwardInfo.forwardFromPublicChatInfoOrThrow(): ForwardFromPublicChatInfo = this as ForwardFromPublicChatInfo +public inline fun EncryptedPassportElement.ifUtilityBill(block: (UtilityBill) -> T): T? = + utilityBillOrNull() ?.let(block) -@PreviewFeature -inline fun ForwardInfo.ifForwardFromChannelInfo(block: (ForwardFromChannelInfo) -> T) = forwardFromChannelInfoOrNull() ?.let(block) +public inline fun EncryptedPassportElement.bankStatementOrNull(): BankStatement? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.BankStatement -@PreviewFeature -inline fun ForwardInfo.forwardFromChannelInfoOrNull(): ForwardFromChannelInfo? = this as? ForwardFromChannelInfo +public inline fun EncryptedPassportElement.bankStatementOrThrow(): BankStatement = this as + dev.inmo.tgbotapi.types.passport.encrypted.BankStatement -@PreviewFeature -inline fun ForwardInfo.forwardFromChannelInfoOrThrow(): ForwardFromChannelInfo = this as ForwardFromChannelInfo +public inline fun EncryptedPassportElement.ifBankStatement(block: (BankStatement) -> T): T? = + bankStatementOrNull() ?.let(block) -@PreviewFeature -inline fun ForwardInfo.ifForwardFromSupergroupInfo(block: (ForwardFromSupergroupInfo) -> T) = forwardFromSupergroupInfoOrNull() ?.let(block) +public inline fun EncryptedPassportElement.rentalAgreementOrNull(): RentalAgreement? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.RentalAgreement -@PreviewFeature -inline fun ForwardInfo.forwardFromSupergroupInfoOrNull(): ForwardFromSupergroupInfo? = this as? ForwardFromSupergroupInfo +public inline fun EncryptedPassportElement.rentalAgreementOrThrow(): RentalAgreement = this as + dev.inmo.tgbotapi.types.passport.encrypted.RentalAgreement -@PreviewFeature -inline fun ForwardInfo.forwardFromSupergroupInfoOrThrow(): ForwardFromSupergroupInfo = this as ForwardFromSupergroupInfo +public inline fun EncryptedPassportElement.ifRentalAgreement(block: (RentalAgreement) -> T): T? + = rentalAgreementOrNull() ?.let(block) -@PreviewFeature -inline fun MessageContent.ifTextedInput(block: (TextedInput) -> T) = textedInputOrNull() ?.let(block) +public inline fun EncryptedPassportElement.passportRegistrationOrNull(): PassportRegistration? = + this as? dev.inmo.tgbotapi.types.passport.encrypted.PassportRegistration -@PreviewFeature -inline fun MessageContent.textedInputOrNull(): TextedInput? = this as? TextedInput +public inline fun EncryptedPassportElement.passportRegistrationOrThrow(): PassportRegistration = + this as dev.inmo.tgbotapi.types.passport.encrypted.PassportRegistration -@PreviewFeature -inline fun MessageContent.textedInputOrThrow(): TextedInput = this as TextedInput +public inline fun + EncryptedPassportElement.ifPassportRegistration(block: (PassportRegistration) -> T): T? = + passportRegistrationOrNull() ?.let(block) -@PreviewFeature -inline fun ScheduledCloseInfo.ifExactScheduledCloseInfo(block: (ExactScheduledCloseInfo) -> T) = exactScheduledCloseInfoOrNull() ?.let(block) +public inline fun EncryptedPassportElement.temporaryRegistrationOrNull(): TemporaryRegistration? = + this as? dev.inmo.tgbotapi.types.passport.encrypted.TemporaryRegistration -@PreviewFeature -inline fun ScheduledCloseInfo.exactScheduledCloseInfoOrNull(): ExactScheduledCloseInfo? = this as? ExactScheduledCloseInfo +public inline fun EncryptedPassportElement.temporaryRegistrationOrThrow(): TemporaryRegistration = + this as dev.inmo.tgbotapi.types.passport.encrypted.TemporaryRegistration -@PreviewFeature -inline fun ScheduledCloseInfo.exactScheduledCloseInfoOrThrow(): ExactScheduledCloseInfo = this as ExactScheduledCloseInfo +public inline fun + EncryptedPassportElement.ifTemporaryRegistration(block: (TemporaryRegistration) -> T): T? = + temporaryRegistrationOrNull() ?.let(block) -@PreviewFeature -inline fun ScheduledCloseInfo.ifApproximateScheduledCloseInfo(block: (ApproximateScheduledCloseInfo) -> T) = approximateScheduledCloseInfoOrNull() ?.let(block) +public inline + fun EncryptedPassportElement.encryptedPassportElementWithTranslatableIDDocumentOrNull(): + EncryptedPassportElementWithTranslatableIDDocument? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPassportElementWithTranslatableIDDocument -@PreviewFeature -inline fun ScheduledCloseInfo.approximateScheduledCloseInfoOrNull(): ApproximateScheduledCloseInfo? = this as? ApproximateScheduledCloseInfo +public inline + fun EncryptedPassportElement.encryptedPassportElementWithTranslatableIDDocumentOrThrow(): + EncryptedPassportElementWithTranslatableIDDocument = this as + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPassportElementWithTranslatableIDDocument -@PreviewFeature -inline fun ScheduledCloseInfo.approximateScheduledCloseInfoOrThrow(): ApproximateScheduledCloseInfo = this as ApproximateScheduledCloseInfo +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithTranslatableIDDocument(block: (EncryptedPassportElementWithTranslatableIDDocument) -> T): + T? = encryptedPassportElementWithTranslatableIDDocumentOrNull() ?.let(block) -@PreviewFeature -inline fun ChosenInlineResult.ifLocationChosenInlineResult(block: (LocationChosenInlineResult) -> T) = locationChosenInlineResultOrNull() ?.let(block) +public inline fun EncryptedPassportElement.driverLicenseOrNull(): DriverLicense? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.DriverLicense -@PreviewFeature -inline fun ChosenInlineResult.locationChosenInlineResultOrNull(): LocationChosenInlineResult? = this as? LocationChosenInlineResult +public inline fun EncryptedPassportElement.driverLicenseOrThrow(): DriverLicense = this as + dev.inmo.tgbotapi.types.passport.encrypted.DriverLicense -@PreviewFeature -inline fun ChosenInlineResult.locationChosenInlineResultOrThrow(): LocationChosenInlineResult = this as LocationChosenInlineResult +public inline fun EncryptedPassportElement.ifDriverLicense(block: (DriverLicense) -> T): T? = + driverLicenseOrNull() ?.let(block) -@PreviewFeature -inline fun ChosenInlineResult.ifBaseChosenInlineResult(block: (BaseChosenInlineResult) -> T) = baseChosenInlineResultOrNull() ?.let(block) +public inline fun EncryptedPassportElement.identityCardOrNull(): IdentityCard? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.IdentityCard -@PreviewFeature -inline fun ChosenInlineResult.baseChosenInlineResultOrNull(): BaseChosenInlineResult? = this as? BaseChosenInlineResult +public inline fun EncryptedPassportElement.identityCardOrThrow(): IdentityCard = this as + dev.inmo.tgbotapi.types.passport.encrypted.IdentityCard -@PreviewFeature -inline fun ChosenInlineResult.baseChosenInlineResultOrThrow(): BaseChosenInlineResult = this as BaseChosenInlineResult +public inline fun EncryptedPassportElement.ifIdentityCard(block: (IdentityCard) -> T): T? = + identityCardOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPersonalDetailsOrNull(): + EncryptedPersonalDetails? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPersonalDetails + +public inline fun EncryptedPassportElement.encryptedPersonalDetailsOrThrow(): + EncryptedPersonalDetails = this as + dev.inmo.tgbotapi.types.passport.encrypted.EncryptedPersonalDetails + +public inline fun + EncryptedPassportElement.ifEncryptedPersonalDetails(block: (EncryptedPersonalDetails) -> T): T? + = encryptedPersonalDetailsOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.passportOrNull(): Passport? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.Passport + +public inline fun EncryptedPassportElement.passportOrThrow(): Passport = this as + dev.inmo.tgbotapi.types.passport.encrypted.Passport + +public inline fun EncryptedPassportElement.ifPassport(block: (Passport) -> T): T? = + passportOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.commonPassportOrNull(): CommonPassport? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.CommonPassport + +public inline fun EncryptedPassportElement.commonPassportOrThrow(): CommonPassport = this as + dev.inmo.tgbotapi.types.passport.encrypted.CommonPassport + +public inline fun EncryptedPassportElement.ifCommonPassport(block: (CommonPassport) -> T): T? = + commonPassportOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.internalPassportOrNull(): InternalPassport? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.InternalPassport + +public inline fun EncryptedPassportElement.internalPassportOrThrow(): InternalPassport = this as + dev.inmo.tgbotapi.types.passport.encrypted.InternalPassport + +public inline fun EncryptedPassportElement.ifInternalPassport(block: (InternalPassport) -> T): + T? = internalPassportOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.phoneNumberOrNull(): PhoneNumber? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.PhoneNumber + +public inline fun EncryptedPassportElement.phoneNumberOrThrow(): PhoneNumber = this as + dev.inmo.tgbotapi.types.passport.encrypted.PhoneNumber + +public inline fun EncryptedPassportElement.ifPhoneNumber(block: (PhoneNumber) -> T): T? = + phoneNumberOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.unknownEncryptedPassportElementOrNull(): + UnknownEncryptedPassportElement? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.UnknownEncryptedPassportElement + +public inline fun EncryptedPassportElement.unknownEncryptedPassportElementOrThrow(): + UnknownEncryptedPassportElement = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.UnknownEncryptedPassportElement + +public inline fun + EncryptedPassportElement.ifUnknownEncryptedPassportElement(block: (UnknownEncryptedPassportElement) -> T): + T? = unknownEncryptedPassportElementOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementTranslatableOrNull(): + EncryptedPassportElementTranslatable? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementTranslatable + +public inline fun EncryptedPassportElement.encryptedPassportElementTranslatableOrThrow(): + EncryptedPassportElementTranslatable = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementTranslatable + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementTranslatable(block: (EncryptedPassportElementTranslatable) -> T): + T? = encryptedPassportElementTranslatableOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementWithDataOrNull(): + EncryptedPassportElementWithData? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithData + +public inline fun EncryptedPassportElement.encryptedPassportElementWithDataOrThrow(): + EncryptedPassportElementWithData = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithData + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithData(block: (EncryptedPassportElementWithData) -> T): + T? = encryptedPassportElementWithDataOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementWithEmailOrNull(): + EncryptedPassportElementWithEmail? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithEmail + +public inline fun EncryptedPassportElement.encryptedPassportElementWithEmailOrThrow(): + EncryptedPassportElementWithEmail = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithEmail + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithEmail(block: (EncryptedPassportElementWithEmail) -> T): + T? = encryptedPassportElementWithEmailOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementWithFilesCollectionOrNull(): + EncryptedPassportElementWithFilesCollection? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithFilesCollection + +public inline fun EncryptedPassportElement.encryptedPassportElementWithFilesCollectionOrThrow(): + EncryptedPassportElementWithFilesCollection = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithFilesCollection + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithFilesCollection(block: (EncryptedPassportElementWithFilesCollection) -> T): + T? = encryptedPassportElementWithFilesCollectionOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementWithFrontSideOrNull(): + EncryptedPassportElementWithFrontSide? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithFrontSide + +public inline fun EncryptedPassportElement.encryptedPassportElementWithFrontSideOrThrow(): + EncryptedPassportElementWithFrontSide = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithFrontSide + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithFrontSide(block: (EncryptedPassportElementWithFrontSide) -> T): + T? = encryptedPassportElementWithFrontSideOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementWithPhoneNumberOrNull(): + EncryptedPassportElementWithPhoneNumber? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithPhoneNumber + +public inline fun EncryptedPassportElement.encryptedPassportElementWithPhoneNumberOrThrow(): + EncryptedPassportElementWithPhoneNumber = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithPhoneNumber + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithPhoneNumber(block: (EncryptedPassportElementWithPhoneNumber) -> T): + T? = encryptedPassportElementWithPhoneNumberOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementWithReverseSideOrNull(): + EncryptedPassportElementWithReverseSide? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithReverseSide + +public inline fun EncryptedPassportElement.encryptedPassportElementWithReverseSideOrThrow(): + EncryptedPassportElementWithReverseSide = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithReverseSide + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithReverseSide(block: (EncryptedPassportElementWithReverseSide) -> T): + T? = encryptedPassportElementWithReverseSideOrNull() ?.let(block) + +public inline fun EncryptedPassportElement.encryptedPassportElementWithSelfieOrNull(): + EncryptedPassportElementWithSelfie? = this as? + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithSelfie + +public inline fun EncryptedPassportElement.encryptedPassportElementWithSelfieOrThrow(): + EncryptedPassportElementWithSelfie = this as + dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithSelfie + +public inline fun + EncryptedPassportElement.ifEncryptedPassportElementWithSelfie(block: (EncryptedPassportElementWithSelfie) -> T): + T? = encryptedPassportElementWithSelfieOrNull() ?.let(block) + +public inline fun ScheduledCloseInfo.exactScheduledCloseInfoOrNull(): ExactScheduledCloseInfo? = + this as? dev.inmo.tgbotapi.types.polls.ExactScheduledCloseInfo + +public inline fun ScheduledCloseInfo.exactScheduledCloseInfoOrThrow(): ExactScheduledCloseInfo = + this as dev.inmo.tgbotapi.types.polls.ExactScheduledCloseInfo + +public inline fun + ScheduledCloseInfo.ifExactScheduledCloseInfo(block: (ExactScheduledCloseInfo) -> T): T? = + exactScheduledCloseInfoOrNull() ?.let(block) + +public inline fun ScheduledCloseInfo.approximateScheduledCloseInfoOrNull(): + ApproximateScheduledCloseInfo? = this as? + dev.inmo.tgbotapi.types.polls.ApproximateScheduledCloseInfo + +public inline fun ScheduledCloseInfo.approximateScheduledCloseInfoOrThrow(): + ApproximateScheduledCloseInfo = this as + dev.inmo.tgbotapi.types.polls.ApproximateScheduledCloseInfo + +public inline fun + ScheduledCloseInfo.ifApproximateScheduledCloseInfo(block: (ApproximateScheduledCloseInfo) -> T): + T? = approximateScheduledCloseInfoOrNull() ?.let(block) + +public inline fun Poll.multipleAnswersPollOrNull(): MultipleAnswersPoll? = this as? + dev.inmo.tgbotapi.types.polls.MultipleAnswersPoll + +public inline fun Poll.multipleAnswersPollOrThrow(): MultipleAnswersPoll = this as + dev.inmo.tgbotapi.types.polls.MultipleAnswersPoll + +public inline fun Poll.ifMultipleAnswersPoll(block: (MultipleAnswersPoll) -> T): T? = + multipleAnswersPollOrNull() ?.let(block) + +public inline fun Poll.unknownPollTypeOrNull(): UnknownPollType? = this as? + dev.inmo.tgbotapi.types.polls.UnknownPollType + +public inline fun Poll.unknownPollTypeOrThrow(): UnknownPollType = this as + dev.inmo.tgbotapi.types.polls.UnknownPollType + +public inline fun Poll.ifUnknownPollType(block: (UnknownPollType) -> T): T? = + unknownPollTypeOrNull() ?.let(block) + +public inline fun Poll.regularPollOrNull(): RegularPoll? = this as? + dev.inmo.tgbotapi.types.polls.RegularPoll + +public inline fun Poll.regularPollOrThrow(): RegularPoll = this as + dev.inmo.tgbotapi.types.polls.RegularPoll + +public inline fun Poll.ifRegularPoll(block: (RegularPoll) -> T): T? = regularPollOrNull() + ?.let(block) + +public inline fun Poll.quizPollOrNull(): QuizPoll? = this as? dev.inmo.tgbotapi.types.polls.QuizPoll + +public inline fun Poll.quizPollOrThrow(): QuizPoll = this as dev.inmo.tgbotapi.types.polls.QuizPoll + +public inline fun Poll.ifQuizPoll(block: (QuizPoll) -> T): T? = quizPollOrNull() ?.let(block) + +public inline fun Update.callbackQueryUpdateOrNull(): CallbackQueryUpdate? = this as? + dev.inmo.tgbotapi.types.update.CallbackQueryUpdate + +public inline fun Update.callbackQueryUpdateOrThrow(): CallbackQueryUpdate = this as + dev.inmo.tgbotapi.types.update.CallbackQueryUpdate + +public inline fun Update.ifCallbackQueryUpdate(block: (CallbackQueryUpdate) -> T): T? = + callbackQueryUpdateOrNull() ?.let(block) + +public inline fun Update.channelPostUpdateOrNull(): ChannelPostUpdate? = this as? + dev.inmo.tgbotapi.types.update.ChannelPostUpdate + +public inline fun Update.channelPostUpdateOrThrow(): ChannelPostUpdate = this as + dev.inmo.tgbotapi.types.update.ChannelPostUpdate + +public inline fun Update.ifChannelPostUpdate(block: (ChannelPostUpdate) -> T): T? = + channelPostUpdateOrNull() ?.let(block) + +public inline fun Update.chatJoinRequestUpdateOrNull(): ChatJoinRequestUpdate? = this as? + dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate + +public inline fun Update.chatJoinRequestUpdateOrThrow(): ChatJoinRequestUpdate = this as + dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate + +public inline fun Update.ifChatJoinRequestUpdate(block: (ChatJoinRequestUpdate) -> T): T? = + chatJoinRequestUpdateOrNull() ?.let(block) + +public inline fun Update.chosenInlineResultUpdateOrNull(): ChosenInlineResultUpdate? = this as? + dev.inmo.tgbotapi.types.update.ChosenInlineResultUpdate + +public inline fun Update.chosenInlineResultUpdateOrThrow(): ChosenInlineResultUpdate = this as + dev.inmo.tgbotapi.types.update.ChosenInlineResultUpdate + +public inline fun Update.ifChosenInlineResultUpdate(block: (ChosenInlineResultUpdate) -> T): T? + = chosenInlineResultUpdateOrNull() ?.let(block) + +public inline fun Update.commonChatMemberUpdatedUpdateOrNull(): CommonChatMemberUpdatedUpdate? = + this as? dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate + +public inline fun Update.commonChatMemberUpdatedUpdateOrThrow(): CommonChatMemberUpdatedUpdate = + this as dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate + +public inline fun + Update.ifCommonChatMemberUpdatedUpdate(block: (CommonChatMemberUpdatedUpdate) -> T): T? = + commonChatMemberUpdatedUpdateOrNull() ?.let(block) + +public inline fun Update.editChannelPostUpdateOrNull(): EditChannelPostUpdate? = this as? + dev.inmo.tgbotapi.types.update.EditChannelPostUpdate + +public inline fun Update.editChannelPostUpdateOrThrow(): EditChannelPostUpdate = this as + dev.inmo.tgbotapi.types.update.EditChannelPostUpdate + +public inline fun Update.ifEditChannelPostUpdate(block: (EditChannelPostUpdate) -> T): T? = + editChannelPostUpdateOrNull() ?.let(block) + +public inline fun Update.editMessageUpdateOrNull(): EditMessageUpdate? = this as? + dev.inmo.tgbotapi.types.update.EditMessageUpdate + +public inline fun Update.editMessageUpdateOrThrow(): EditMessageUpdate = this as + dev.inmo.tgbotapi.types.update.EditMessageUpdate + +public inline fun Update.ifEditMessageUpdate(block: (EditMessageUpdate) -> T): T? = + editMessageUpdateOrNull() ?.let(block) + +public inline fun Update.inlineQueryUpdateOrNull(): InlineQueryUpdate? = this as? + dev.inmo.tgbotapi.types.update.InlineQueryUpdate + +public inline fun Update.inlineQueryUpdateOrThrow(): InlineQueryUpdate = this as + dev.inmo.tgbotapi.types.update.InlineQueryUpdate + +public inline fun Update.ifInlineQueryUpdate(block: (InlineQueryUpdate) -> T): T? = + inlineQueryUpdateOrNull() ?.let(block) + +public inline fun Update.messageUpdateOrNull(): MessageUpdate? = this as? + dev.inmo.tgbotapi.types.update.MessageUpdate + +public inline fun Update.messageUpdateOrThrow(): MessageUpdate = this as + dev.inmo.tgbotapi.types.update.MessageUpdate + +public inline fun Update.ifMessageUpdate(block: (MessageUpdate) -> T): T? = + messageUpdateOrNull() ?.let(block) + +public inline fun Update.myChatMemberUpdatedUpdateOrNull(): MyChatMemberUpdatedUpdate? = this as? + dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate + +public inline fun Update.myChatMemberUpdatedUpdateOrThrow(): MyChatMemberUpdatedUpdate = this as + dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate + +public inline fun Update.ifMyChatMemberUpdatedUpdate(block: (MyChatMemberUpdatedUpdate) -> T): + T? = myChatMemberUpdatedUpdateOrNull() ?.let(block) + +public inline fun Update.pollAnswerUpdateOrNull(): PollAnswerUpdate? = this as? + dev.inmo.tgbotapi.types.update.PollAnswerUpdate + +public inline fun Update.pollAnswerUpdateOrThrow(): PollAnswerUpdate = this as + dev.inmo.tgbotapi.types.update.PollAnswerUpdate + +public inline fun Update.ifPollAnswerUpdate(block: (PollAnswerUpdate) -> T): T? = + pollAnswerUpdateOrNull() ?.let(block) + +public inline fun Update.pollUpdateOrNull(): PollUpdate? = this as? + dev.inmo.tgbotapi.types.update.PollUpdate + +public inline fun Update.pollUpdateOrThrow(): PollUpdate = this as + dev.inmo.tgbotapi.types.update.PollUpdate + +public inline fun Update.ifPollUpdate(block: (PollUpdate) -> T): T? = pollUpdateOrNull() + ?.let(block) + +public inline fun Update.preCheckoutQueryUpdateOrNull(): PreCheckoutQueryUpdate? = this as? + dev.inmo.tgbotapi.types.update.PreCheckoutQueryUpdate + +public inline fun Update.preCheckoutQueryUpdateOrThrow(): PreCheckoutQueryUpdate = this as + dev.inmo.tgbotapi.types.update.PreCheckoutQueryUpdate + +public inline fun Update.ifPreCheckoutQueryUpdate(block: (PreCheckoutQueryUpdate) -> T): T? = + preCheckoutQueryUpdateOrNull() ?.let(block) + +public inline fun Update.shippingQueryUpdateOrNull(): ShippingQueryUpdate? = this as? + dev.inmo.tgbotapi.types.update.ShippingQueryUpdate + +public inline fun Update.shippingQueryUpdateOrThrow(): ShippingQueryUpdate = this as + dev.inmo.tgbotapi.types.update.ShippingQueryUpdate + +public inline fun Update.ifShippingQueryUpdate(block: (ShippingQueryUpdate) -> T): T? = + shippingQueryUpdateOrNull() ?.let(block) + +public inline fun Update.baseEditMessageUpdateOrNull(): BaseEditMessageUpdate? = this as? + dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate + +public inline fun Update.baseEditMessageUpdateOrThrow(): BaseEditMessageUpdate = this as + dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate + +public inline fun Update.ifBaseEditMessageUpdate(block: (BaseEditMessageUpdate) -> T): T? = + baseEditMessageUpdateOrNull() ?.let(block) + +public inline fun Update.baseMessageUpdateOrNull(): BaseMessageUpdate? = this as? + dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate + +public inline fun Update.baseMessageUpdateOrThrow(): BaseMessageUpdate = this as + dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate + +public inline fun Update.ifBaseMessageUpdate(block: (BaseMessageUpdate) -> T): T? = + baseMessageUpdateOrNull() ?.let(block) + +public inline fun Update.baseSentMessageUpdateOrNull(): BaseSentMessageUpdate? = this as? + dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate + +public inline fun Update.baseSentMessageUpdateOrThrow(): BaseSentMessageUpdate = this as + dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate + +public inline fun Update.ifBaseSentMessageUpdate(block: (BaseSentMessageUpdate) -> T): T? = + baseSentMessageUpdateOrNull() ?.let(block) + +public inline fun Update.chatMemberUpdatedUpdateOrNull(): ChatMemberUpdatedUpdate? = this as? + dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate + +public inline fun Update.chatMemberUpdatedUpdateOrThrow(): ChatMemberUpdatedUpdate = this as + dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate + +public inline fun Update.ifChatMemberUpdatedUpdate(block: (ChatMemberUpdatedUpdate) -> T): T? = + chatMemberUpdatedUpdateOrNull() ?.let(block) + +public inline fun Update.unknownUpdateOrNull(): UnknownUpdate? = this as? + dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate + +public inline fun Update.unknownUpdateOrThrow(): UnknownUpdate = this as + dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate + +public inline fun Update.ifUnknownUpdate(block: (UnknownUpdate) -> T): T? = + unknownUpdateOrNull() ?.let(block) + +public inline fun Update.channelPostMediaGroupUpdateOrNull(): ChannelPostMediaGroupUpdate? = this + as? dev.inmo.tgbotapi.types.update.media_group.ChannelPostMediaGroupUpdate + +public inline fun Update.channelPostMediaGroupUpdateOrThrow(): ChannelPostMediaGroupUpdate = this as + dev.inmo.tgbotapi.types.update.media_group.ChannelPostMediaGroupUpdate + +public inline fun + Update.ifChannelPostMediaGroupUpdate(block: (ChannelPostMediaGroupUpdate) -> T): T? = + channelPostMediaGroupUpdateOrNull() ?.let(block) + +public inline fun Update.editChannelPostMediaGroupUpdateOrNull(): EditChannelPostMediaGroupUpdate? = + this as? dev.inmo.tgbotapi.types.update.media_group.EditChannelPostMediaGroupUpdate + +public inline fun Update.editChannelPostMediaGroupUpdateOrThrow(): EditChannelPostMediaGroupUpdate = + this as dev.inmo.tgbotapi.types.update.media_group.EditChannelPostMediaGroupUpdate + +public inline fun + Update.ifEditChannelPostMediaGroupUpdate(block: (EditChannelPostMediaGroupUpdate) -> T): T? = + editChannelPostMediaGroupUpdateOrNull() ?.let(block) + +public inline fun Update.editMessageMediaGroupUpdateOrNull(): EditMessageMediaGroupUpdate? = this + as? dev.inmo.tgbotapi.types.update.media_group.EditMessageMediaGroupUpdate + +public inline fun Update.editMessageMediaGroupUpdateOrThrow(): EditMessageMediaGroupUpdate = this as + dev.inmo.tgbotapi.types.update.media_group.EditMessageMediaGroupUpdate + +public inline fun + Update.ifEditMessageMediaGroupUpdate(block: (EditMessageMediaGroupUpdate) -> T): T? = + editMessageMediaGroupUpdateOrNull() ?.let(block) + +public inline fun Update.mediaGroupUpdateOrNull(): MediaGroupUpdate? = this as? + dev.inmo.tgbotapi.types.update.media_group.MediaGroupUpdate + +public inline fun Update.mediaGroupUpdateOrThrow(): MediaGroupUpdate = this as + dev.inmo.tgbotapi.types.update.media_group.MediaGroupUpdate + +public inline fun Update.ifMediaGroupUpdate(block: (MediaGroupUpdate) -> T): T? = + mediaGroupUpdateOrNull() ?.let(block) + +public inline fun Update.sentMediaGroupUpdateOrNull(): SentMediaGroupUpdate? = this as? + dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate + +public inline fun Update.sentMediaGroupUpdateOrThrow(): SentMediaGroupUpdate = this as + dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate + +public inline fun Update.ifSentMediaGroupUpdate(block: (SentMediaGroupUpdate) -> T): T? = + sentMediaGroupUpdateOrNull() ?.let(block) + +public inline fun Update.editMediaGroupUpdateOrNull(): EditMediaGroupUpdate? = this as? + dev.inmo.tgbotapi.types.update.media_group.EditMediaGroupUpdate + +public inline fun Update.editMediaGroupUpdateOrThrow(): EditMediaGroupUpdate = this as + dev.inmo.tgbotapi.types.update.media_group.EditMediaGroupUpdate + +public inline fun Update.ifEditMediaGroupUpdate(block: (EditMediaGroupUpdate) -> T): T? = + editMediaGroupUpdateOrNull() ?.let(block) + +public inline fun Update.messageMediaGroupUpdateOrNull(): MessageMediaGroupUpdate? = this as? + dev.inmo.tgbotapi.types.update.media_group.MessageMediaGroupUpdate + +public inline fun Update.messageMediaGroupUpdateOrThrow(): MessageMediaGroupUpdate = this as + dev.inmo.tgbotapi.types.update.media_group.MessageMediaGroupUpdate + +public inline fun Update.ifMessageMediaGroupUpdate(block: (MessageMediaGroupUpdate) -> T): T? = + messageMediaGroupUpdateOrNull() ?.let(block) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNewAny.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNewAny.kt new file mode 100644 index 0000000000..c782f769ca --- /dev/null +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNewAny.kt @@ -0,0 +1,36 @@ +@file:Suppress("NOTHING_TO_INLINE", "unused", "UNCHECKED_CAST") + +package dev.inmo.tgbotapi.extensions.utils + +import dev.inmo.tgbotapi.abstracts.FromUser +import dev.inmo.tgbotapi.abstracts.WithUser +import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode +import dev.inmo.tgbotapi.utils.PreviewFeature + +@PreviewFeature +inline fun Any.ifFromUser(block: (FromUser) -> T) = fromUserOrNull()?.let(block) + +@PreviewFeature +inline fun Any.fromUserOrNull(): FromUser? = this as? FromUser + +@PreviewFeature +inline fun Any.fromUserOrThrow(): FromUser = this as FromUser + +@PreviewFeature +inline fun Any.ifWithUser(block: (WithUser) -> T) = withUserOrNull()?.let(block) + +@PreviewFeature +inline fun Any.withUserOrNull(): WithUser? = this as? WithUser + +@PreviewFeature +inline fun Any.withUserOrThrow(): WithUser = this as WithUser + +@PreviewFeature +inline fun Any.ifWithOptionalLanguageCode(block: (WithOptionalLanguageCode) -> T) = + withOptionalLanguageCodeOrNull()?.let(block) + +@PreviewFeature +inline fun Any.withOptionalLanguageCodeOrNull(): WithOptionalLanguageCode? = this as? WithOptionalLanguageCode + +@PreviewFeature +inline fun Any.withOptionalLanguageCodeOrThrow(): WithOptionalLanguageCode = this as WithOptionalLanguageCode 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 5da1e67ef5..172dab74cc 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 @@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.abstracts.* 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/ContentCastsNew.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentCastsNew.kt index 8a7be6c30c..05cd19bd49 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentCastsNew.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentCastsNew.kt @@ -3,9 +3,8 @@ package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.MessageContent -import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MessageContent inline fun ContentMessage<*>.withContentOrNull() = if (content is T) { this as ContentMessage } else { null } inline fun ContentMessage<*>.withContentOrThrow() = withContentOrNull()!! 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 d36c67f3d4..e9b370dc5a 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,8 +2,6 @@ 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.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/FlowsAggregation.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/FlowsAggregation.kt index 532aec780e..82cd9cb9b2 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/FlowsAggregation.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/FlowsAggregation.kt @@ -30,9 +30,6 @@ fun Flow>.flatten(): Flow = flow { } } -@Deprecated("Renamed", ReplaceWith("flatten", "dev.inmo.tgbotapi.extensions.utils.flatten")) -fun Flow>.flatMap(): Flow = flatten() - fun Flow.flatMap(mapper: (T) -> Iterable): Flow = flow { collect { mapper(it).forEach { 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 c396516719..80dea0da67 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,9 +3,8 @@ package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.MessageContent -import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage import dev.inmo.tgbotapi.types.message.content.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.MessageContent inline fun ContentMessage<*>.withContent() = if (content is T) { this as ContentMessage } else { null } inline fun ContentMessage<*>.requireWithContent() = withContent()!! diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithEvent.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithEvent.kt index d9221c82a4..b49f1e803b 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithEvent.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/WithEvent.kt @@ -5,9 +5,6 @@ package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import dev.inmo.tgbotapi.types.message.abstracts.* -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 ChatEventMessage<*>.withEvent() = if (chatEvent is T) { this as ChatEventMessage } else { null } inline fun ChatEventMessage<*>.requireWithEvent() = withEvent()!! 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 09bd5a19fe..c591e5e97d 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,10 +1,10 @@ package dev.inmo.tgbotapi.extensions.utils.extensions 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 +import dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource +import dev.inmo.tgbotapi.types.message.textsources.TextSource val defaultArgsSeparator = Regex(" ") 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 426b6c8990..aaf91e4521 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 @@ -4,8 +4,8 @@ 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.chat.User import dev.inmo.tgbotapi.types.chat.Chat +import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update 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 3b2376dd68..3e0d233ace 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.queries.callback.CallbackQuery import dev.inmo.tgbotapi.types.InlineMessageIdentifier import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.MessageContent +import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery 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 40054eabf4..018eaca4dc 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,14 +2,10 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.extensions.utils.* import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup 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 import dev.inmo.tgbotapi.types.games.Game import dev.inmo.tgbotapi.types.location.Location import dev.inmo.tgbotapi.types.message.ChatEvents.* @@ -17,6 +13,7 @@ import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.ConnectedFromChannelGroupContentMessage import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.message.content.TextContent +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.passport.PassportData import dev.inmo.tgbotapi.types.payments.Invoice import dev.inmo.tgbotapi.types.payments.SuccessfulPayment 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 fadb73ea4d..edf5d1a448 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 @@ -1,7 +1,8 @@ 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.FileUniqueId +import dev.inmo.tgbotapi.types.StickerSetName import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.types.stickers.MaskPosition 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 9a4494c8c9..ddcfcc4bd2 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.message.textsources.* import dev.inmo.tgbotapi.types.chat.User +import dev.inmo.tgbotapi.types.message.textsources.* import dev.inmo.tgbotapi.utils.RiskFeature typealias EntitiesBuilderBody = EntitiesBuilder.() -> Unit 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 284900af4e..1faac5ea31 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,9 @@ package dev.inmo.tgbotapi.extensions.utils.formatting import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.message.textsources.link import dev.inmo.tgbotapi.types.chat.* import dev.inmo.tgbotapi.types.message.abstracts.Message +import dev.inmo.tgbotapi.types.message.textsources.link fun makeUsernameLink(username: String) = "$internalLinkBeginning/$username" fun makeUsernameDeepLinkPrefix(username: String) = "${makeUsernameLink(username)}?start=" @@ -77,7 +77,7 @@ val Chat.link: String? inviteLink ?.let { return it } } if (this is PrivateChat) { - return id.link + return id.userLink } return null } 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 e7632a8c62..41e074a151 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,9 +1,9 @@ package dev.inmo.tgbotapi.extensions.utils.formatting import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList import dev.inmo.tgbotapi.types.message.* import dev.inmo.tgbotapi.types.message.content.TextContent +import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList fun createFormattedText( entities: TextSourcesList, 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 75b491260b..a86f1c8a41 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 @@ -109,9 +109,9 @@ private inline fun String.hashTag(adapt: String.() -> String): String = if (star } -fun String.textMentionMarkdown(userId: UserId): String = linkMarkdown(userId.link) -fun String.textMentionMarkdownV2(userId: UserId): String = linkMarkdownV2(userId.link) -fun String.textMentionHTML(userId: UserId): String = linkHTML(userId.link) +fun String.textMentionMarkdown(userId: UserId): String = linkMarkdown(userId.userLink) +fun String.textMentionMarkdownV2(userId: UserId): String = linkMarkdownV2(userId.userLink) +fun String.textMentionHTML(userId: UserId): String = linkHTML(userId.userLink) fun String.mentionMarkdown(): String = mention(String::toMarkdown) 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 74cdd015e2..7b49ea5a5e 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,10 +2,10 @@ 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.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 dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource +import dev.inmo.tgbotapi.types.message.textsources.RegularTextSource 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 dff78316e4..4b3956f4ac 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 @@ -7,11 +7,8 @@ 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.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.types.update.media_group.SentMediaGroupUpdate import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage 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 index d52d2a9c90..f50d969766 100644 --- 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 @@ -7,7 +7,7 @@ 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.* +import dev.inmo.tgbotapi.utils.ByteReadChannelAllocator suspend fun multipartFile( downloadStreamAllocator: ByteReadChannelAllocator, 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 246a1586ad..8cd8ce8dcd 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 @@ -2,10 +2,9 @@ package dev.inmo.tgbotapi.extensions.utils.updates import dev.inmo.tgbotapi.extensions.utils.onlyTextContentMessages import dev.inmo.tgbotapi.extensions.utils.shortcuts.* -import dev.inmo.tgbotapi.types.message.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.message.textsources.* 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 8cd45e968e..70be37786a 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 @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.extensions.utils.updates import dev.inmo.tgbotapi.types.ChatId 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 dev.inmo.tgbotapi.types.update.media_group.SentMediaGroupUpdate import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.filter