mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-01-17 02:37:58 +00:00
Compare commits
56 Commits
0.35.4
...
klassindex
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f4fa1e447 | |||
| 25cf660791 | |||
| bf9268a30f | |||
| ccf89830bd | |||
| 3932dc622b | |||
| aed93a4c91 | |||
| b7f8e0217f | |||
| 7680845578 | |||
| 3d8e509bde | |||
| c027244fbd | |||
| 2be342a769 | |||
| 7414a9b41b | |||
| 8afa8bb927 | |||
| 27fa081163 | |||
| a19b3d26df | |||
| f93d9938de | |||
| 2531f3779e | |||
| 3c8e5e61f2 | |||
| b882ae3ac3 | |||
| 00aed5779c | |||
| 4f5319dd51 | |||
| b795a6d0a9 | |||
| cb688a7831 | |||
| c66d1e8665 | |||
| 3c5abac669 | |||
| 80200d78ef | |||
| 8cd3f91e9e | |||
| 2065faf157 | |||
| 62bc788c52 | |||
| 6d0686135c | |||
| 2a77912d44 | |||
| 21fa971f8a | |||
| e5be5d1200 | |||
| 55a2cee205 | |||
| 7920d3d9d0 | |||
| b34ab63c77 | |||
| 7995ec434c | |||
| 6ddf1e4d3f | |||
| 468e883910 | |||
| 0660aa0c33 | |||
| c6f33983ef | |||
| 90a4b180e3 | |||
| a58d6a96cb | |||
| 52bc5a1409 | |||
| 941705fb8b | |||
| f13b7c217a | |||
| 39911466a2 | |||
| 82e9b3272b | |||
| 7cc97c12e6 | |||
| 865bee0068 | |||
| d3ca4774da | |||
| 8fa5b09de9 | |||
| 0c1c7d1aa7 | |||
| 0e9f1d2202 | |||
| 82d38c5cb0 | |||
| ce1d15ebb2 |
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,11 +1,5 @@
|
|||||||
# TelegramBotAPI changelog
|
# TelegramBotAPI changelog
|
||||||
|
|
||||||
## 0.35.4 Hotfix
|
|
||||||
|
|
||||||
* `Common`:
|
|
||||||
* `Version`:
|
|
||||||
* `MicroUtils`: `0.5.18` -> `0.5.19`
|
|
||||||
|
|
||||||
## 0.35.3
|
## 0.35.3
|
||||||
|
|
||||||
* `Common`:
|
* `Common`:
|
||||||
@@ -14,8 +8,6 @@
|
|||||||
* `Ktor`: `1.6.1` -> `1.6.2`
|
* `Ktor`: `1.6.1` -> `1.6.2`
|
||||||
* `MicroUtils`: `0.5.16` -> `0.5.18`
|
* `MicroUtils`: `0.5.16` -> `0.5.18`
|
||||||
* `Core`:
|
* `Core`:
|
||||||
* **`SimpleRequestCallFactory` and `MultipartRequestCallFactory` became a classes instead of objects to avoid
|
|
||||||
collisions in different bots**
|
|
||||||
* Support of strongly-typed ietf language codes has been added
|
* Support of strongly-typed ietf language codes has been added
|
||||||
* `API`:
|
* `API`:
|
||||||
* New extension `TelegramBot#downloadFile` for any `MediaContent`
|
* New extension `TelegramBot#downloadFile` for any `MediaContent`
|
||||||
@@ -26,8 +18,6 @@
|
|||||||
* New `TelegramBot#buildBehaviour` extension with `FlowUpdatesFilter` and `CoroutineScope` with
|
* New `TelegramBot#buildBehaviour` extension with `FlowUpdatesFilter` and `CoroutineScope` with
|
||||||
default `CoroutineScope`
|
default `CoroutineScope`
|
||||||
* New typealias `SimpleFilter` for unifying triggers filter signatures
|
* New typealias `SimpleFilter` for unifying triggers filter signatures
|
||||||
* All waiters got real filters (`SimpleFilter`) and rename old filters as mappers
|
|
||||||
* New extensions for `Any`: `as`/`when`/`require` for `WithOptionalLanguageCode` and `WithLanguageCode`
|
|
||||||
|
|
||||||
## 0.35.2
|
## 0.35.2
|
||||||
|
|
||||||
|
|||||||
12
build.gradle
12
build.gradle
@@ -18,12 +18,14 @@ plugins {
|
|||||||
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" apply false
|
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
// temporal crutch until legacy tests will be stabled or legacy target will be removed
|
|
||||||
allprojects {
|
allprojects {
|
||||||
if (it != rootProject.findProject("docs")) {
|
repositories {
|
||||||
tasks.whenTaskAdded { task ->
|
maven { url 'https://jitpack.io' }
|
||||||
if(task.name == "jsLegacyBrowserTest" || task.name == "jsLegacyNodeTest") {
|
if (it != rootProject.findProject("docs")) {
|
||||||
task.enabled = false
|
tasks.whenTaskAdded { task ->
|
||||||
|
if (task.name == "jsLegacyBrowserTest" || task.name == "jsLegacyNodeTest") {
|
||||||
|
task.enabled = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,17 +77,17 @@ Object callback = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
named("commonMain") {
|
// named("commonMain") {
|
||||||
sourceRoots.setFrom(findSourcesWithName("commonMain"))
|
// sourceRoots.setFrom(findSourcesWithName("commonMain"))
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
named("jsMain") {
|
// named("jsMain") {
|
||||||
sourceRoots.setFrom(findSourcesWithName("jsMain"))
|
// sourceRoots.setFrom(findSourcesWithName("jsMain"))
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
named("jvmMain") {
|
// named("jvmMain") {
|
||||||
sourceRoots.setFrom(findSourcesWithName("jvmMain"))
|
// sourceRoots.setFrom(findSourcesWithName("jvmMain"))
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ klock_version=2.3.1
|
|||||||
uuid_version=0.3.0
|
uuid_version=0.3.0
|
||||||
ktor_version=1.6.2
|
ktor_version=1.6.2
|
||||||
|
|
||||||
micro_utils_version=0.5.19
|
micro_utils_version=0.5.18
|
||||||
|
|
||||||
javax_activation_version=1.1.1
|
javax_activation_version=1.1.1
|
||||||
|
|
||||||
library_group=dev.inmo
|
library_group=dev.inmo
|
||||||
library_version=0.35.4
|
library_version=0.35.3
|
||||||
|
|
||||||
github_release_plugin_version=2.2.12
|
github_release_plugin_version=2.2.12
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ buildscript {
|
|||||||
mavenLocal()
|
mavenLocal()
|
||||||
jcenter()
|
jcenter()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
maven { url "https://plugins.gradle.org/m2/" }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -14,6 +15,7 @@ buildscript {
|
|||||||
plugins {
|
plugins {
|
||||||
id "org.jetbrains.kotlin.multiplatform"
|
id "org.jetbrains.kotlin.multiplatform"
|
||||||
id "org.jetbrains.kotlin.plugin.serialization"
|
id "org.jetbrains.kotlin.plugin.serialization"
|
||||||
|
id "org.jetbrains.kotlin.kapt"
|
||||||
}
|
}
|
||||||
|
|
||||||
project.version = "$library_version"
|
project.version = "$library_version"
|
||||||
@@ -54,6 +56,7 @@ kotlin {
|
|||||||
api "dev.inmo:micro_utils.language_codes:$micro_utils_version"
|
api "dev.inmo:micro_utils.language_codes:$micro_utils_version"
|
||||||
|
|
||||||
api "io.ktor:ktor-client-core:$ktor_version"
|
api "io.ktor:ktor-client-core:$ktor_version"
|
||||||
|
api "com.github.matfax.klassindex:library:4.+"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
commonTest {
|
commonTest {
|
||||||
@@ -95,3 +98,35 @@ kotlin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
kapt "com.github.matfax.klassindex:processor:4.+"
|
||||||
|
}
|
||||||
|
|
||||||
|
kapt {
|
||||||
|
useBuildCache = false
|
||||||
|
arguments {
|
||||||
|
arg(
|
||||||
|
"com.github.matfax.klassindex.IndexSubclasses",
|
||||||
|
// "dev.inmo.tgbotapi.types.update.abstracts.Update",
|
||||||
|
// "dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent",
|
||||||
|
// "dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValue",
|
||||||
|
// "dev.inmo.tgbotapi.types.message.content.abstracts.ResendableContent",
|
||||||
|
"dev.inmo.tgbotapi.CommonAbstracts.WithOptionalLanguageCode",
|
||||||
|
// "dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.EncryptedPassportElement",
|
||||||
|
// "dev.inmo.tgbotapi.types.passport.PassportElementError",
|
||||||
|
// "dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery",
|
||||||
|
// "dev.inmo.tgbotapi.types.buttons.KeyboardMarkup",
|
||||||
|
// "dev.inmo.tgbotapi.types.actions.BotAction",
|
||||||
|
// "dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton",
|
||||||
|
// "dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember",
|
||||||
|
// "dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile",
|
||||||
|
// "dev.inmo.tgbotapi.types.InlineQueries.abstracts.InlineQuery",
|
||||||
|
// "dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.InlineQueryResult",
|
||||||
|
// "dev.inmo.tgbotapi.types.InlineQueries.abstracts.InputMessageContent",
|
||||||
|
// "dev.inmo.tgbotapi.types.InputMedia.InputMedia",
|
||||||
|
// "dev.inmo.tgbotapi.types.polls.Poll",
|
||||||
|
// "dev.inmo.tgbotapi.types.update.abstracts.Update"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package dev.inmo.tgbotapi.CommonAbstracts
|
||||||
|
|
||||||
|
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
||||||
|
|
||||||
|
interface WithOptionalLanguageCode {
|
||||||
|
val ietfLanguageCode: IetfLanguageCode?
|
||||||
|
|
||||||
|
val languageCode: String?
|
||||||
|
get() = ietfLanguageCode ?.code
|
||||||
|
}
|
||||||
|
|
||||||
|
interface WithLanguageCode : WithOptionalLanguageCode {
|
||||||
|
override val ietfLanguageCode: IetfLanguageCode
|
||||||
|
|
||||||
|
override val languageCode: String
|
||||||
|
get() = ietfLanguageCode.code
|
||||||
|
}
|
||||||
@@ -52,7 +52,7 @@ class KtorRequestsExecutor(
|
|||||||
) : BaseRequestsExecutor(telegramAPIUrlsKeeper) {
|
) : BaseRequestsExecutor(telegramAPIUrlsKeeper) {
|
||||||
private val callsFactories: List<KtorCallFactory> = callsFactories.run {
|
private val callsFactories: List<KtorCallFactory> = callsFactories.run {
|
||||||
if (!excludeDefaultFactories) {
|
if (!excludeDefaultFactories) {
|
||||||
this + listOf(SimpleRequestCallFactory(), MultipartRequestCallFactory(), DownloadFileRequestCallFactory)
|
this + listOf(SimpleRequestCallFactory, MultipartRequestCallFactory, DownloadFileRequestCallFactory)
|
||||||
} else {
|
} else {
|
||||||
this
|
this
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package dev.inmo.tgbotapi.bot.Ktor.base
|
package dev.inmo.tgbotapi.bot.Ktor.base
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory
|
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.*
|
import dev.inmo.tgbotapi.requests.abstracts.*
|
||||||
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
|
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
|
||||||
import dev.inmo.tgbotapi.utils.mapWithCommonValues
|
import dev.inmo.tgbotapi.utils.mapWithCommonValues
|
||||||
@@ -10,7 +9,7 @@ import io.ktor.client.request.forms.formData
|
|||||||
import io.ktor.http.Headers
|
import io.ktor.http.Headers
|
||||||
import io.ktor.http.HttpHeaders
|
import io.ktor.http.HttpHeaders
|
||||||
|
|
||||||
class MultipartRequestCallFactory : AbstractRequestCallFactory() {
|
object MultipartRequestCallFactory : AbstractRequestCallFactory() {
|
||||||
override fun <T : Any> prepareCallBody(
|
override fun <T : Any> prepareCallBody(
|
||||||
client: HttpClient,
|
client: HttpClient,
|
||||||
urlsKeeper: TelegramAPIUrlsKeeper,
|
urlsKeeper: TelegramAPIUrlsKeeper,
|
||||||
@@ -36,7 +35,4 @@ class MultipartRequestCallFactory : AbstractRequestCallFactory() {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@Deprecated("Use class MultipartRequestCallFactory() constructor call instead of just MultipartRequestCallFactory")
|
|
||||||
companion object : KtorCallFactory by MultipartRequestCallFactory()
|
|
||||||
}
|
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
package dev.inmo.tgbotapi.bot.Ktor.base
|
package dev.inmo.tgbotapi.bot.Ktor.base
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory
|
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.*
|
import dev.inmo.tgbotapi.requests.abstracts.*
|
||||||
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
|
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.http.ContentType
|
import io.ktor.http.ContentType
|
||||||
import io.ktor.http.content.TextContent
|
import io.ktor.http.content.TextContent
|
||||||
|
|
||||||
class SimpleRequestCallFactory : AbstractRequestCallFactory() {
|
object SimpleRequestCallFactory : AbstractRequestCallFactory() {
|
||||||
override fun <T : Any> prepareCallBody(
|
override fun <T : Any> prepareCallBody(
|
||||||
client: HttpClient,
|
client: HttpClient,
|
||||||
urlsKeeper: TelegramAPIUrlsKeeper,
|
urlsKeeper: TelegramAPIUrlsKeeper,
|
||||||
@@ -20,7 +19,4 @@ class SimpleRequestCallFactory : AbstractRequestCallFactory() {
|
|||||||
ContentType.Application.Json
|
ContentType.Application.Json
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@Deprecated("Use class SimpleRequestCallFactory() constructor call instead of just SimpleRequestCallFactory")
|
|
||||||
companion object : KtorCallFactory by SimpleRequestCallFactory()
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.inmo.tgbotapi.requests.bot
|
package dev.inmo.tgbotapi.requests.bot
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.CommonAbstracts.WithOptionalLanguageCode
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||||
import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode
|
|
||||||
import dev.inmo.tgbotapi.types.commands.BotCommandScope
|
import dev.inmo.tgbotapi.types.commands.BotCommandScope
|
||||||
|
|
||||||
sealed interface MyCommandsRequest<T : Any> : SimpleRequest<T>, WithOptionalLanguageCode {
|
sealed interface MyCommandsRequest<T : Any> : SimpleRequest<T>, WithOptionalLanguageCode {
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ package dev.inmo.tgbotapi.requests.bot
|
|||||||
|
|
||||||
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
||||||
import dev.inmo.micro_utils.language_codes.IetfLanguageCodeSerializer
|
import dev.inmo.micro_utils.language_codes.IetfLanguageCodeSerializer
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.commands.*
|
import dev.inmo.tgbotapi.types.commands.*
|
||||||
import dev.inmo.tgbotapi.types.languageCodeField
|
|
||||||
import dev.inmo.tgbotapi.types.scopeField
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.builtins.serializer
|
import kotlinx.serialization.builtins.serializer
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import dev.inmo.tgbotapi.requests.edit.media.MediaContentMessageResultDeserializ
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent
|
import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
const val editMessageCaptionMethod = "editMessageCaption"
|
const val editMessageCaptionMethod = "editMessageCaption"
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import dev.inmo.tgbotapi.requests.edit.abstracts.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
fun EditInlineMessageCaption(
|
fun EditInlineMessageCaption(
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import dev.inmo.tgbotapi.requests.send.TextContentMessageResultDeserializer
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.content.TextContent
|
import dev.inmo.tgbotapi.types.message.content.TextContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
const val editMessageTextMethod = "editMessageText"
|
const val editMessageTextMethod = "editMessageText"
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import dev.inmo.tgbotapi.requests.edit.abstracts.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
fun EditInlineMessageText(
|
fun EditInlineMessageText(
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageReques
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
fun CopyMessage(
|
fun CopyMessage(
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import dev.inmo.tgbotapi.requests.send.abstracts.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.TextContent
|
import dev.inmo.tgbotapi.types.message.content.TextContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ import dev.inmo.tgbotapi.requests.send.media.base.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.AnimationContent
|
import dev.inmo.tgbotapi.types.message.content.media.AnimationContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
||||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ import dev.inmo.tgbotapi.requests.send.media.base.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.AudioContent
|
import dev.inmo.tgbotapi.types.message.content.media.AudioContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
||||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ import dev.inmo.tgbotapi.requests.send.media.base.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.DocumentContent
|
import dev.inmo.tgbotapi.types.message.content.media.DocumentContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
||||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ import dev.inmo.tgbotapi.requests.send.media.base.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.PhotoContent
|
import dev.inmo.tgbotapi.types.message.content.media.PhotoContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ import dev.inmo.tgbotapi.requests.send.media.base.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.VideoContent
|
import dev.inmo.tgbotapi.types.message.content.media.VideoContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
||||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ import dev.inmo.tgbotapi.requests.send.media.base.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.VoiceContent
|
import dev.inmo.tgbotapi.types.message.content.media.VoiceContent
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
import dev.inmo.tgbotapi.utils.mapOfNotNull
|
||||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
import dev.inmo.tgbotapi.types.message.content.PollContent
|
import dev.inmo.tgbotapi.types.message.content.PollContent
|
||||||
import dev.inmo.tgbotapi.types.polls.*
|
import dev.inmo.tgbotapi.types.polls.*
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PollContent>> = TelegramBotAPIMessageDeserializationStrategyClass()
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PollContent>> = TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
package dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult
|
package dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.CommonAbstracts.FromUser
|
import dev.inmo.tgbotapi.CommonAbstracts.FromUser
|
||||||
import dev.inmo.tgbotapi.types.InlineMessageIdentifier
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.InlineQueryIdentifier
|
|
||||||
|
|
||||||
sealed interface ChosenInlineResult : FromUser {
|
sealed interface ChosenInlineResult : FromUser {
|
||||||
val resultId: InlineQueryIdentifier //chosen temporary, can be changed
|
val resultId: InlineQueryIdentifier //chosen temporary, can be changed
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.files.abstracts.mimeTypeField
|
import dev.inmo.tgbotapi.types.files.abstracts.mimeTypeField
|
||||||
import dev.inmo.tgbotapi.utils.MimeType
|
import dev.inmo.tgbotapi.utils.MimeType
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.MimeType
|
import dev.inmo.tgbotapi.utils.MimeType
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.MimeType
|
import dev.inmo.tgbotapi.utils.MimeType
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSource
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.types.files.abstracts.mimeTypeField
|
import dev.inmo.tgbotapi.types.files.abstracts.mimeTypeField
|
||||||
import dev.inmo.tgbotapi.utils.MimeType
|
import dev.inmo.tgbotapi.utils.MimeType
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.results
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputMessageContent
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import dev.inmo.tgbotapi.CommonAbstracts.types.DisableWebPagePreview
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.files.AudioFile
|
import dev.inmo.tgbotapi.types.files.AudioFile
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
internal const val audioInputMediaType = "audio"
|
internal const val audioInputMediaType = "audio"
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import dev.inmo.tgbotapi.requests.abstracts.*
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.files.DocumentFile
|
import dev.inmo.tgbotapi.types.files.DocumentFile
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
internal const val documentInputMediaType = "document"
|
internal const val documentInputMediaType = "document"
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.types.files.PhotoSize
|
import dev.inmo.tgbotapi.types.files.PhotoSize
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
internal const val photoInputMediaType = "photo"
|
internal const val photoInputMediaType = "photo"
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import dev.inmo.tgbotapi.requests.abstracts.fileIdToSend
|
|||||||
import dev.inmo.tgbotapi.types.*
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.*
|
import dev.inmo.tgbotapi.types.MessageEntity.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
|
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
import dev.inmo.tgbotapi.types.ParseMode.ParseMode
|
||||||
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
import dev.inmo.tgbotapi.types.ParseMode.parseModeField
|
||||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
internal const val videoInputMediaType = "video"
|
internal const val videoInputMediaType = "video"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types
|
|||||||
|
|
||||||
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
||||||
import dev.inmo.micro_utils.language_codes.IetfLanguageCodeSerializer
|
import dev.inmo.micro_utils.language_codes.IetfLanguageCodeSerializer
|
||||||
import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode
|
import dev.inmo.tgbotapi.CommonAbstracts.WithOptionalLanguageCode
|
||||||
import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat
|
import dev.inmo.tgbotapi.types.chat.abstracts.PrivateChat
|
||||||
import dev.inmo.tgbotapi.types.chat.extended.ExtendedPrivateChatImpl
|
import dev.inmo.tgbotapi.types.chat.extended.ExtendedPrivateChatImpl
|
||||||
import dev.inmo.tgbotapi.utils.*
|
import dev.inmo.tgbotapi.utils.*
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
package dev.inmo.tgbotapi.types.abstracts
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
|
||||||
|
|
||||||
interface WithOptionalLanguageCode {
|
|
||||||
val ietfLanguageCode: IetfLanguageCode?
|
|
||||||
|
|
||||||
val languageCode: String?
|
|
||||||
get() = ietfLanguageCode ?.code
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package dev.inmo.tgbotapi.utils.internal
|
package dev.inmo.tgbotapi.utils.internal
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.MultilevelTextSource
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.MultilevelTextSource
|
||||||
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextSourcesList
|
||||||
import dev.inmo.tgbotapi.types.UserId
|
import dev.inmo.tgbotapi.types.UserId
|
||||||
import dev.inmo.tgbotapi.types.link
|
import dev.inmo.tgbotapi.types.link
|
||||||
import dev.inmo.tgbotapi.utils.extensions.*
|
import dev.inmo.tgbotapi.utils.extensions.*
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package dev.inmo.tgbotapi.types
|
package dev.inmo.tgbotapi.types
|
||||||
|
|
||||||
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
import dev.inmo.micro_utils.language_codes.IetfLanguageCode
|
||||||
import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode
|
import dev.inmo.tgbotapi.CommonAbstracts.WithLanguageCode
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
fun IetfLanguageCode?.javaLocale() = this ?.code ?.let { Locale.forLanguageTag(it) }
|
fun IetfLanguageCode?.javaLocale() = this ?.code ?.let { Locale.forLanguageTag(it) }
|
||||||
fun WithOptionalLanguageCode?.javaLocale() = this ?.ietfLanguageCode ?.javaLocale()
|
fun WithLanguageCode?.javaLocale() = this ?.ietfLanguageCode.javaLocale()
|
||||||
|
|||||||
69
tgbotapi.core/src/jvmTest/kotlin/Temporal.kt
Normal file
69
tgbotapi.core/src/jvmTest/kotlin/Temporal.kt
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
import com.github.matfax.klassindex.KlassIndex
|
||||||
|
import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery
|
||||||
|
import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember
|
||||||
|
import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.InlineQueryResult
|
||||||
|
import dev.inmo.tgbotapi.types.InlineQueries.abstracts.InlineQuery
|
||||||
|
import dev.inmo.tgbotapi.types.InlineQueries.abstracts.InputMessageContent
|
||||||
|
import dev.inmo.tgbotapi.types.InputMedia.InputMedia
|
||||||
|
import dev.inmo.tgbotapi.types.actions.BotAction
|
||||||
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton
|
||||||
|
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||||
|
import dev.inmo.tgbotapi.types.chat.abstracts.Chat
|
||||||
|
import dev.inmo.tgbotapi.types.dice.DiceAnimationType
|
||||||
|
import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile
|
||||||
|
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent
|
||||||
|
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||||
|
import dev.inmo.tgbotapi.types.message.content.abstracts.ResendableContent
|
||||||
|
import dev.inmo.tgbotapi.types.passport.PassportElementError
|
||||||
|
import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValue
|
||||||
|
import dev.inmo.tgbotapi.types.polls.Poll
|
||||||
|
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
||||||
|
import dev.inmo.tgbotapi.utils.PreviewFeature
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
fun printlnInstanceSubclassesFuns(kclass: KClass<*>) {
|
||||||
|
KlassIndex.getSubclasses(Message::class).forEach { subclass ->
|
||||||
|
println("inline fun ${kclass.simpleName}.as${subclass.simpleName}(): ${subclass.simpleName}? = this as? ${subclass.simpleName}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun printlnInstancesSubclassesFuns(kclass: KClass<*>, subclasses: Set<KClass<*>>): List<Pair<String, String>> {
|
||||||
|
return subclasses.map { subclass ->
|
||||||
|
val typeUpperBounds = subclass.typeParameters.map { it.upperBounds.first() }
|
||||||
|
val imports = "import ${subclass.qualifiedName}" + if (typeUpperBounds.isEmpty()) "" else typeUpperBounds.joinToString("\nimport ", "\nimport ")
|
||||||
|
val subtype = "${subclass.simpleName}${if (typeUpperBounds.isEmpty()) "" else "<${typeUpperBounds.joinToString() { (it.classifier as KClass<*>).simpleName!! }}>"}"
|
||||||
|
val code = "@PreviewFeature\ninline fun ${kclass.simpleName}.as${subclass.simpleName}(): $subtype? = this as? $subtype\n" +
|
||||||
|
"@PreviewFeature\ninline fun ${kclass.simpleName}.require${subclass.simpleName}(): $subtype = this as $subtype\n" +
|
||||||
|
"@PreviewFeature\ninline fun <T> ${kclass.simpleName}.when${subclass.simpleName}(block: (${subclass.simpleName}) -> T): $subtype = as${subclass.simpleName}() ?.let(block)"
|
||||||
|
imports to code
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val result = mutableMapOf<KClass<*>, Set<KClass<*>>>()
|
||||||
|
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
result[Message::class] = KlassIndex.getSubclasses(dev.inmo.tgbotapi.CommonAbstracts.WithOptionalLanguageCode::class).toSet()
|
||||||
|
println("import dev.inmo.tgbotapi.utils.PreviewFeature")
|
||||||
|
val importsToFuns = result.keys.flatMap {
|
||||||
|
println("import ${it.qualifiedName}")
|
||||||
|
printlnInstancesSubclassesFuns(it, result.getValue(it))
|
||||||
|
}
|
||||||
|
importsToFuns.forEach { println(it.first) }
|
||||||
|
println()
|
||||||
|
importsToFuns.forEach { println(it.second) }
|
||||||
|
// printlnInstanceSubclassesFuns(Message::class)
|
||||||
|
// printlnInstanceSubclassesFuns(Chat::class)
|
||||||
|
// printlnInstanceSubclassesFuns(CallbackQuery::class)
|
||||||
|
// printlnInstanceSubclassesFuns(KeyboardMarkup::class)
|
||||||
|
// printlnInstanceSubclassesFuns(BotAction::class)
|
||||||
|
// printlnInstanceSubclassesFuns(InlineKeyboardButton::class)
|
||||||
|
// printlnInstanceSubclassesFuns(ChatMember::class)
|
||||||
|
// printlnInstanceSubclassesFuns(TelegramMediaFile::class)
|
||||||
|
// printlnInstanceSubclassesFuns(InlineQuery::class)
|
||||||
|
// printlnInstanceSubclassesFuns(InlineQueryResult::class)
|
||||||
|
// printlnInstanceSubclassesFuns(InputMessageContent::class)
|
||||||
|
// printlnInstanceSubclassesFuns(InputMedia::class)
|
||||||
|
// printlnInstanceSubclassesFuns(Poll::class)
|
||||||
|
// printlnInstanceSubclassesFuns(Update::class)
|
||||||
|
}
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
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.asCallbackQueryUpdate
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||||
import dev.inmo.tgbotapi.types.CallbackQuery.*
|
import dev.inmo.tgbotapi.types.CallbackQuery.*
|
||||||
@@ -15,19 +14,13 @@ private suspend fun <O> BehaviourContext.waitCallbackQueries(
|
|||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
filter: SimpleFilter<CallbackQuery>? = null,
|
|
||||||
mapper: suspend CallbackQuery.() -> O?
|
mapper: suspend CallbackQuery.() -> O?
|
||||||
): List<O> = expectFlow(
|
): List<O> = expectFlow(
|
||||||
initRequest,
|
initRequest,
|
||||||
count,
|
count,
|
||||||
errorFactory
|
errorFactory
|
||||||
) {
|
) {
|
||||||
val data = it.asCallbackQueryUpdate() ?.data
|
it.asCallbackQueryUpdate() ?.data ?.mapper().let(::listOfNotNull)
|
||||||
if (data != null && (filter == null || filter(data))) {
|
|
||||||
data.mapper().let(::listOfNotNull)
|
|
||||||
} else {
|
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}.toList().toList()
|
}.toList().toList()
|
||||||
|
|
||||||
|
|
||||||
@@ -35,23 +28,17 @@ private suspend inline fun <reified T : CallbackQuery> BehaviourContext.waitCall
|
|||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
noinline filter: SimpleFilter<T>? = null,
|
noinline filter: CallbackQueryMapper<T>? = null
|
||||||
noinline mapper: CallbackQueryMapper<T>? = null
|
|
||||||
) : List<T> = waitCallbackQueries<T>(
|
) : List<T> = waitCallbackQueries<T>(
|
||||||
count,
|
count,
|
||||||
initRequest,
|
initRequest,
|
||||||
errorFactory,
|
errorFactory
|
||||||
filter ?.let {
|
|
||||||
{
|
|
||||||
(it as? T) ?.let { filter(it) } == true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
if (this is T) {
|
if (this is T) {
|
||||||
if (mapper == null) {
|
if (filter == null) {
|
||||||
this
|
this
|
||||||
} else {
|
} else {
|
||||||
mapper(this)
|
filter(this)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
@@ -63,62 +50,53 @@ suspend fun BehaviourContext.waitDataCallbackQuery(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<DataCallbackQuery>? = null,
|
filter: CallbackQueryMapper<DataCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<DataCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitGameShortNameCallbackQuery(
|
suspend fun BehaviourContext.waitGameShortNameCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<GameShortNameCallbackQuery>? = null,
|
filter: CallbackQueryMapper<GameShortNameCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<GameShortNameCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitInlineMessageIdCallbackQuery(
|
suspend fun BehaviourContext.waitInlineMessageIdCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<InlineMessageIdCallbackQuery>? = null,
|
filter: CallbackQueryMapper<InlineMessageIdCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<InlineMessageIdCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitInlineMessageIdDataCallbackQuery(
|
suspend fun BehaviourContext.waitInlineMessageIdDataCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<InlineMessageIdDataCallbackQuery>? = null,
|
filter: CallbackQueryMapper<InlineMessageIdDataCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<InlineMessageIdDataCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitInlineMessageIdGameShortNameCallbackQuery(
|
suspend fun BehaviourContext.waitInlineMessageIdGameShortNameCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<InlineMessageIdGameShortNameCallbackQuery>? = null,
|
filter: CallbackQueryMapper<InlineMessageIdGameShortNameCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<InlineMessageIdGameShortNameCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitMessageCallbackQuery(
|
suspend fun BehaviourContext.waitMessageCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<MessageCallbackQuery>? = null,
|
filter: CallbackQueryMapper<MessageCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<MessageCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitMessageDataCallbackQuery(
|
suspend fun BehaviourContext.waitMessageDataCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<MessageDataCallbackQuery>? = null,
|
filter: CallbackQueryMapper<MessageDataCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<MessageDataCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitMessageGameShortNameCallbackQuery(
|
suspend fun BehaviourContext.waitMessageGameShortNameCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<MessageGameShortNameCallbackQuery>? = null,
|
filter: CallbackQueryMapper<MessageGameShortNameCallbackQuery>? = null
|
||||||
mapper: CallbackQueryMapper<MessageGameShortNameCallbackQuery>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitUnknownCallbackQuery(
|
suspend fun BehaviourContext.waitUnknownCallbackQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<UnknownCallbackQueryType>? = null,
|
filter: CallbackQueryMapper<UnknownCallbackQueryType>? = null
|
||||||
mapper: CallbackQueryMapper<UnknownCallbackQueryType>? = null
|
) = waitCallbacks(count, initRequest, errorFactory, filter)
|
||||||
) = waitCallbacks(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
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.requests.abstracts.Request
|
||||||
import dev.inmo.tgbotapi.types.ChatMemberUpdated
|
import dev.inmo.tgbotapi.types.ChatMemberUpdated
|
||||||
import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate
|
import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate
|
||||||
@@ -15,37 +14,29 @@ private suspend inline fun <reified T : ChatMemberUpdatedUpdate> BehaviourContex
|
|||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
noinline filter: SimpleFilter<T>? = null,
|
|
||||||
noinline mapper: ChatMemberUpdatedMapper<ChatMemberUpdated>
|
noinline mapper: ChatMemberUpdatedMapper<ChatMemberUpdated>
|
||||||
): List<ChatMemberUpdated> = expectFlow(
|
): List<ChatMemberUpdated> = expectFlow(
|
||||||
initRequest,
|
initRequest,
|
||||||
count,
|
count,
|
||||||
errorFactory
|
errorFactory
|
||||||
) {
|
) {
|
||||||
val casted = (it as? T) ?: return@expectFlow emptyList()
|
(it as? T) ?.data.let(::listOfNotNull)
|
||||||
if (filter == null || filter(casted)) {
|
|
||||||
casted.data.mapper().let(::listOfNotNull)
|
|
||||||
} else {
|
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}.toList().toList()
|
}.toList().toList()
|
||||||
|
|
||||||
private suspend inline fun <reified T : ChatMemberUpdatedUpdate> BehaviourContext.waitChatMemberUpdatedWithFilter(
|
private suspend inline fun <reified T : ChatMemberUpdatedUpdate> BehaviourContext.waitChatMemberUpdatedWithFilter(
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
noinline filter: SimpleFilter<T>? = null,
|
noinline filter: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
||||||
noinline mapper: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
|
||||||
) : List<ChatMemberUpdated> = waitChatMemberUpdated<T>(
|
) : List<ChatMemberUpdated> = waitChatMemberUpdated<T>(
|
||||||
count,
|
count,
|
||||||
initRequest,
|
initRequest,
|
||||||
errorFactory,
|
errorFactory
|
||||||
filter,
|
|
||||||
) {
|
) {
|
||||||
if (mapper == null) {
|
if (filter == null) {
|
||||||
this
|
this
|
||||||
} else {
|
} else {
|
||||||
mapper(this)
|
filter(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,22 +44,19 @@ suspend fun BehaviourContext.waitChatMemberUpdated(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatMemberUpdatedUpdate>? = null,
|
filter: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
||||||
mapper: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
) = waitChatMemberUpdatedWithFilter<ChatMemberUpdatedUpdate>(count, initRequest, errorFactory, filter)
|
||||||
) = waitChatMemberUpdatedWithFilter<ChatMemberUpdatedUpdate>(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitCommonChatMemberUpdated(
|
suspend fun BehaviourContext.waitCommonChatMemberUpdated(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonChatMemberUpdatedUpdate>? = null,
|
filter: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
||||||
mapper: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
) = waitChatMemberUpdatedWithFilter<CommonChatMemberUpdatedUpdate>(count, initRequest, errorFactory, filter)
|
||||||
) = waitChatMemberUpdatedWithFilter<CommonChatMemberUpdatedUpdate>(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitMyChatMemberUpdated(
|
suspend fun BehaviourContext.waitMyChatMemberUpdated(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<MyChatMemberUpdatedUpdate>? = null,
|
filter: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
||||||
mapper: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null
|
) = waitChatMemberUpdatedWithFilter<MyChatMemberUpdatedUpdate>(count, initRequest, errorFactory, filter)
|
||||||
) = waitChatMemberUpdatedWithFilter<MyChatMemberUpdatedUpdate>(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|||||||
@@ -4,16 +4,13 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
|||||||
|
|
||||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
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.extensions.utils.withContent
|
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||||
import dev.inmo.tgbotapi.types.message.content.*
|
import dev.inmo.tgbotapi.types.message.content.*
|
||||||
import dev.inmo.tgbotapi.types.message.content.abstracts.*
|
import dev.inmo.tgbotapi.types.message.content.abstracts.*
|
||||||
import dev.inmo.tgbotapi.types.message.content.media.*
|
import dev.inmo.tgbotapi.types.message.content.media.*
|
||||||
import dev.inmo.tgbotapi.types.message.payments.InvoiceContent
|
import dev.inmo.tgbotapi.types.message.payments.InvoiceContent
|
||||||
import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate
|
|
||||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
|
|
||||||
import kotlinx.coroutines.flow.toList
|
import kotlinx.coroutines.flow.toList
|
||||||
|
|
||||||
typealias CommonMessageToContentMapper<T> = suspend CommonMessage<T>.() -> T?
|
typealias CommonMessageToContentMapper<T> = suspend CommonMessage<T>.() -> T?
|
||||||
@@ -23,32 +20,18 @@ private suspend fun <O> BehaviourContext.waitCommonMessage(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
includeMediaGroups: Boolean = true,
|
includeMediaGroups: Boolean = true,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
filter: SimpleFilter<CommonMessage<MessageContent>>? = null,
|
|
||||||
mapper: suspend CommonMessage<MessageContent>.() -> O?
|
mapper: suspend CommonMessage<MessageContent>.() -> O?
|
||||||
): List<O> = expectFlow(
|
): List<O> = expectFlow(
|
||||||
initRequest,
|
initRequest,
|
||||||
count,
|
count,
|
||||||
errorFactory
|
errorFactory
|
||||||
) {
|
) {
|
||||||
val messages = when (it) {
|
if (includeMediaGroups) {
|
||||||
is SentMediaGroupUpdate -> {
|
it.asSentMediaGroupUpdate() ?.data ?.mapNotNull {
|
||||||
if (includeMediaGroups) {
|
(it as CommonMessage<MessageContent>).mapper()
|
||||||
it.data.map { it as CommonMessage<MessageContent> }
|
} ?.let { return@expectFlow it }
|
||||||
} else {
|
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
is BaseSentMessageUpdate -> listOf(it.data)
|
|
||||||
else -> return@expectFlow emptyList()
|
|
||||||
}
|
|
||||||
messages.mapNotNull { message ->
|
|
||||||
val asCommonMessage = message as CommonMessage<MessageContent>
|
|
||||||
if (filter == null || filter(asCommonMessage)) {
|
|
||||||
asCommonMessage.mapper()
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
it.asBaseSentMessageUpdate() ?.data ?.asCommonMessage() ?.mapper().let(::listOfNotNull)
|
||||||
}.toList().toList()
|
}.toList().toList()
|
||||||
|
|
||||||
private suspend inline fun <reified T : MessageContent> BehaviourContext.waitContent(
|
private suspend inline fun <reified T : MessageContent> BehaviourContext.waitContent(
|
||||||
@@ -56,26 +39,20 @@ private suspend inline fun <reified T : MessageContent> BehaviourContext.waitCon
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
includeMediaGroups: Boolean = true,
|
includeMediaGroups: Boolean = true,
|
||||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
noinline filter: SimpleFilter<CommonMessage<T>>? = null,
|
noinline filter: CommonMessageToContentMapper<T>? = null
|
||||||
noinline mapper: CommonMessageToContentMapper<T>? = null
|
|
||||||
) : List<T> = waitCommonMessage<T>(
|
) : List<T> = waitCommonMessage<T>(
|
||||||
count,
|
count,
|
||||||
initRequest,
|
initRequest,
|
||||||
includeMediaGroups,
|
includeMediaGroups,
|
||||||
errorFactory,
|
errorFactory
|
||||||
filter ?.let {
|
|
||||||
{
|
|
||||||
it.withContent<T>() ?.let { filter(it) } == true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
if (content is T) {
|
if (content is T) {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val message = (this as CommonMessage<T>)
|
val message = (this as CommonMessage<T>)
|
||||||
if (mapper == null) {
|
if (filter == null) {
|
||||||
message.content
|
message.content
|
||||||
} else {
|
} else {
|
||||||
safelyWithoutExceptions { mapper(message) }
|
safelyWithoutExceptions { filter(message) }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
@@ -87,162 +64,140 @@ suspend fun BehaviourContext.waitContentMessage(
|
|||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = true,
|
includeMediaGroups: Boolean = true,
|
||||||
filter: SimpleFilter<CommonMessage<MessageContent>>? = null,
|
filter: CommonMessageToContentMapper<MessageContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<MessageContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitContact(
|
suspend fun BehaviourContext.waitContact(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<ContactContent>>? = null,
|
filter: CommonMessageToContentMapper<ContactContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<ContactContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitDice(
|
suspend fun BehaviourContext.waitDice(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<DiceContent>>? = null,
|
filter: CommonMessageToContentMapper<DiceContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<DiceContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitGame(
|
suspend fun BehaviourContext.waitGame(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<GameContent>>? = null,
|
filter: CommonMessageToContentMapper<GameContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<GameContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitLocation(
|
suspend fun BehaviourContext.waitLocation(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<LocationContent>>? = null,
|
filter: CommonMessageToContentMapper<LocationContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<LocationContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitPoll(
|
suspend fun BehaviourContext.waitPoll(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<PollContent>>? = null,
|
filter: CommonMessageToContentMapper<PollContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<PollContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitText(
|
suspend fun BehaviourContext.waitText(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<TextContent>>? = null,
|
filter: CommonMessageToContentMapper<TextContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<TextContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVenue(
|
suspend fun BehaviourContext.waitVenue(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<VenueContent>>? = null,
|
filter: CommonMessageToContentMapper<VenueContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<VenueContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitAudioMediaGroupContent(
|
suspend fun BehaviourContext.waitAudioMediaGroupContent(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = true,
|
includeMediaGroups: Boolean = true,
|
||||||
filter: SimpleFilter<CommonMessage<AudioMediaGroupContent>>? = null,
|
filter: CommonMessageToContentMapper<AudioMediaGroupContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<AudioMediaGroupContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitDocumentMediaGroupContent(
|
suspend fun BehaviourContext.waitDocumentMediaGroupContent(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = true,
|
includeMediaGroups: Boolean = true,
|
||||||
filter: SimpleFilter<CommonMessage<DocumentMediaGroupContent>>? = null,
|
filter: CommonMessageToContentMapper<DocumentMediaGroupContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<DocumentMediaGroupContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitMedia(
|
suspend fun BehaviourContext.waitMedia(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = false,
|
includeMediaGroups: Boolean = false,
|
||||||
filter: SimpleFilter<CommonMessage<MediaContent>>? = null,
|
filter: CommonMessageToContentMapper<MediaContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<MediaContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitAnyMediaGroupContent(
|
suspend fun BehaviourContext.waitAnyMediaGroupContent(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = true,
|
includeMediaGroups: Boolean = true,
|
||||||
filter: SimpleFilter<CommonMessage<MediaGroupContent>>? = null,
|
filter: CommonMessageToContentMapper<MediaGroupContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<MediaGroupContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVisualMediaGroupContent(
|
suspend fun BehaviourContext.waitVisualMediaGroupContent(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = true,
|
includeMediaGroups: Boolean = true,
|
||||||
filter: SimpleFilter<CommonMessage<VisualMediaGroupContent>>? = null,
|
filter: CommonMessageToContentMapper<VisualMediaGroupContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<VisualMediaGroupContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitAnimation(
|
suspend fun BehaviourContext.waitAnimation(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<AnimationContent>>? = null,
|
filter: CommonMessageToContentMapper<AnimationContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<AnimationContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitAudio(
|
suspend fun BehaviourContext.waitAudio(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = false,
|
includeMediaGroups: Boolean = false,
|
||||||
filter: SimpleFilter<CommonMessage<AudioContent>>? = null,
|
filter: CommonMessageToContentMapper<AudioContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<AudioContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitDocument(
|
suspend fun BehaviourContext.waitDocument(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = false,
|
includeMediaGroups: Boolean = false,
|
||||||
filter: SimpleFilter<CommonMessage<DocumentContent>>? = null,
|
filter: CommonMessageToContentMapper<DocumentContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<DocumentContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitPhoto(
|
suspend fun BehaviourContext.waitPhoto(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = false,
|
includeMediaGroups: Boolean = false,
|
||||||
filter: SimpleFilter<CommonMessage<PhotoContent>>? = null,
|
filter: CommonMessageToContentMapper<PhotoContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<PhotoContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitSticker(
|
suspend fun BehaviourContext.waitSticker(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<StickerContent>>? = null,
|
filter: CommonMessageToContentMapper<StickerContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<StickerContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVideo(
|
suspend fun BehaviourContext.waitVideo(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
includeMediaGroups: Boolean = false,
|
includeMediaGroups: Boolean = false,
|
||||||
filter: SimpleFilter<CommonMessage<VideoContent>>? = null,
|
filter: CommonMessageToContentMapper<VideoContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<VideoContent>? = null
|
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, includeMediaGroups, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVideoNote(
|
suspend fun BehaviourContext.waitVideoNote(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<VideoNoteContent>>? = null,
|
filter: CommonMessageToContentMapper<VideoNoteContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<VideoNoteContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVoice(
|
suspend fun BehaviourContext.waitVoice(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<VoiceContent>>? = null,
|
filter: CommonMessageToContentMapper<VoiceContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<VoiceContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitInvoice(
|
suspend fun BehaviourContext.waitInvoice(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<CommonMessage<InvoiceContent>>? = null,
|
filter: CommonMessageToContentMapper<InvoiceContent>? = null
|
||||||
mapper: CommonMessageToContentMapper<InvoiceContent>? = null
|
) = waitContent(count, initRequest, false, errorFactory, filter)
|
||||||
) = waitContent(count, initRequest, false, errorFactory, filter, mapper)
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter
|
|
||||||
import dev.inmo.tgbotapi.extensions.utils.asBaseSentMessageUpdate
|
import dev.inmo.tgbotapi.extensions.utils.asBaseSentMessageUpdate
|
||||||
import dev.inmo.tgbotapi.extensions.utils.asChatEventMessage
|
import dev.inmo.tgbotapi.extensions.utils.asChatEventMessage
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||||
@@ -19,19 +18,13 @@ private suspend fun <O> BehaviourContext.waitEventMessages(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<ChatEvent>>? = null,
|
|
||||||
mapper: suspend ChatEventMessage<ChatEvent>.() -> O?
|
mapper: suspend ChatEventMessage<ChatEvent>.() -> O?
|
||||||
): List<O> = expectFlow(
|
): List<O> = expectFlow(
|
||||||
initRequest,
|
initRequest,
|
||||||
count,
|
count,
|
||||||
errorFactory
|
errorFactory
|
||||||
) {
|
) {
|
||||||
val data = it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage()
|
it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage() ?.mapper().let(::listOfNotNull)
|
||||||
if (data != null && (filter == null || filter(data))) {
|
|
||||||
data.mapper().let(::listOfNotNull)
|
|
||||||
} else {
|
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}.toList().toList()
|
}.toList().toList()
|
||||||
|
|
||||||
|
|
||||||
@@ -39,25 +32,19 @@ private suspend inline fun <reified T : ChatEvent> BehaviourContext.waitEvents(
|
|||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
noinline filter: SimpleFilter<ChatEventMessage<T>>? = null,
|
noinline filter: EventMessageToEventMapper<T>? = null
|
||||||
noinline mapper: EventMessageToEventMapper<T>? = null
|
|
||||||
) : List<T> = waitEventMessages<T>(
|
) : List<T> = waitEventMessages<T>(
|
||||||
initRequest,
|
initRequest,
|
||||||
errorFactory,
|
errorFactory,
|
||||||
count,
|
count
|
||||||
filter ?.let {
|
|
||||||
{
|
|
||||||
(it.chatEvent as? T) ?.let { filter(it as ChatEventMessage<T>) } == true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
if (chatEvent is T) {
|
if (chatEvent is T) {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val message = (this as ChatEventMessage<T>)
|
val message = (this as ChatEventMessage<T>)
|
||||||
if (mapper == null) {
|
if (filter == null) {
|
||||||
message.chatEvent
|
message.chatEvent
|
||||||
} else {
|
} else {
|
||||||
mapper(message)
|
filter(message)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
@@ -68,144 +55,124 @@ suspend fun BehaviourContext.waitChannelEvents(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<ChannelEvent>>? = null,
|
filter: EventMessageToEventMapper<ChannelEvent>? = null
|
||||||
mapper: EventMessageToEventMapper<ChannelEvent>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitChatEvents(
|
suspend fun BehaviourContext.waitChatEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<ChatEvent>>? = null,
|
filter: EventMessageToEventMapper<ChatEvent>? = null
|
||||||
mapper: EventMessageToEventMapper<ChatEvent>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitVoiceChatEvents(
|
suspend fun BehaviourContext.waitVoiceChatEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<VoiceChatEvent>>? = null,
|
filter: EventMessageToEventMapper<VoiceChatEvent>? = null
|
||||||
mapper: EventMessageToEventMapper<VoiceChatEvent>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVoiceChatStartedEvents(
|
suspend fun BehaviourContext.waitVoiceChatStartedEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<VoiceChatStarted>>? = null,
|
filter: EventMessageToEventMapper<VoiceChatStarted>? = null
|
||||||
mapper: EventMessageToEventMapper<VoiceChatStarted>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVoiceChatEndedEvents(
|
suspend fun BehaviourContext.waitVoiceChatEndedEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<VoiceChatEnded>>? = null,
|
filter: EventMessageToEventMapper<VoiceChatEnded>? = null
|
||||||
mapper: EventMessageToEventMapper<VoiceChatEnded>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitVoiceChatParticipantsInvitedEvents(
|
suspend fun BehaviourContext.waitVoiceChatParticipantsInvitedEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<VoiceChatParticipantsInvited>>? = null,
|
filter: EventMessageToEventMapper<VoiceChatParticipantsInvited>? = null
|
||||||
mapper: EventMessageToEventMapper<VoiceChatParticipantsInvited>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitMessageAutoDeleteTimerChangedEvents(
|
suspend fun BehaviourContext.waitMessageAutoDeleteTimerChangedEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<MessageAutoDeleteTimerChanged>>? = null,
|
filter: EventMessageToEventMapper<MessageAutoDeleteTimerChanged>? = null
|
||||||
mapper: EventMessageToEventMapper<MessageAutoDeleteTimerChanged>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitCommonEvents(
|
suspend fun BehaviourContext.waitCommonEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<CommonEvent>>? = null,
|
filter: EventMessageToEventMapper<CommonEvent>? = null
|
||||||
mapper: EventMessageToEventMapper<CommonEvent>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitGroupEvents(
|
suspend fun BehaviourContext.waitGroupEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<GroupEvent>>? = null,
|
filter: EventMessageToEventMapper<GroupEvent>? = null
|
||||||
mapper: EventMessageToEventMapper<GroupEvent>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitSupergroupEvents(
|
suspend fun BehaviourContext.waitSupergroupEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<SupergroupEvent>>? = null,
|
filter: EventMessageToEventMapper<SupergroupEvent>? = null
|
||||||
mapper: EventMessageToEventMapper<SupergroupEvent>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitChannelChatCreatedEvents(
|
suspend fun BehaviourContext.waitChannelChatCreatedEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<ChannelChatCreated>>? = null,
|
filter: EventMessageToEventMapper<ChannelChatCreated>? = null
|
||||||
mapper: EventMessageToEventMapper<ChannelChatCreated>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitDeleteChatPhotoEvents(
|
suspend fun BehaviourContext.waitDeleteChatPhotoEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<DeleteChatPhoto>>? = null,
|
filter: EventMessageToEventMapper<DeleteChatPhoto>? = null
|
||||||
mapper: EventMessageToEventMapper<DeleteChatPhoto>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitGroupChatCreatedEvents(
|
suspend fun BehaviourContext.waitGroupChatCreatedEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<GroupChatCreated>>? = null,
|
filter: EventMessageToEventMapper<GroupChatCreated>? = null
|
||||||
mapper: EventMessageToEventMapper<GroupChatCreated>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitLeftChatMemberEvents(
|
suspend fun BehaviourContext.waitLeftChatMemberEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<LeftChatMember>>? = null,
|
filter: EventMessageToEventMapper<LeftChatMember>? = null
|
||||||
mapper: EventMessageToEventMapper<LeftChatMember>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitNewChatPhotoEvents(
|
suspend fun BehaviourContext.waitNewChatPhotoEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<NewChatPhoto>>? = null,
|
filter: EventMessageToEventMapper<NewChatPhoto>? = null
|
||||||
mapper: EventMessageToEventMapper<NewChatPhoto>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitNewChatMembersEvents(
|
suspend fun BehaviourContext.waitNewChatMembersEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<NewChatMembers>>? = null,
|
filter: EventMessageToEventMapper<NewChatMembers>? = null
|
||||||
mapper: EventMessageToEventMapper<NewChatMembers>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitNewChatTitleEvents(
|
suspend fun BehaviourContext.waitNewChatTitleEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<NewChatTitle>>? = null,
|
filter: EventMessageToEventMapper<NewChatTitle>? = null
|
||||||
mapper: EventMessageToEventMapper<NewChatTitle>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitPinnedMessageEvents(
|
suspend fun BehaviourContext.waitPinnedMessageEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<PinnedMessage>>? = null,
|
filter: EventMessageToEventMapper<PinnedMessage>? = null
|
||||||
mapper: EventMessageToEventMapper<PinnedMessage>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitProximityAlertTriggeredEvents(
|
suspend fun BehaviourContext.waitProximityAlertTriggeredEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<ProximityAlertTriggered>>? = null,
|
filter: EventMessageToEventMapper<ProximityAlertTriggered>? = null
|
||||||
mapper: EventMessageToEventMapper<ProximityAlertTriggered>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitSupergroupChatCreatedEvents(
|
suspend fun BehaviourContext.waitSupergroupChatCreatedEvents(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<ChatEventMessage<SupergroupChatCreated>>? = null,
|
filter: EventMessageToEventMapper<SupergroupChatCreated>? = null
|
||||||
mapper: EventMessageToEventMapper<SupergroupChatCreated>? = null
|
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||||
) = waitEvents(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
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.asInlineQueryUpdate
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||||
import dev.inmo.tgbotapi.types.InlineQueries.query.*
|
import dev.inmo.tgbotapi.types.InlineQueries.query.*
|
||||||
@@ -13,19 +12,13 @@ private suspend fun <O> BehaviourContext.waitInlineQueries(
|
|||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
filter: SimpleFilter<InlineQuery>? = null,
|
|
||||||
mapper: suspend InlineQuery.() -> O?
|
mapper: suspend InlineQuery.() -> O?
|
||||||
): List<O> = expectFlow(
|
): List<O> = expectFlow(
|
||||||
initRequest,
|
initRequest,
|
||||||
count,
|
count,
|
||||||
errorFactory
|
errorFactory
|
||||||
) {
|
) {
|
||||||
val data = it.asInlineQueryUpdate() ?.data
|
it.asInlineQueryUpdate() ?.data ?.mapper().let(::listOfNotNull)
|
||||||
if (data != null && (filter == null || filter(data))) {
|
|
||||||
data.mapper().let(::listOfNotNull)
|
|
||||||
} else {
|
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}.toList().toList()
|
}.toList().toList()
|
||||||
|
|
||||||
|
|
||||||
@@ -33,23 +26,17 @@ private suspend inline fun <reified T : InlineQuery> BehaviourContext.waitInline
|
|||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
noinline filter: SimpleFilter<T>? = null,
|
noinline filter: InlineQueryMapper<T>? = null
|
||||||
noinline mapper: InlineQueryMapper<T>? = null
|
|
||||||
) : List<T> = waitInlineQueries<T>(
|
) : List<T> = waitInlineQueries<T>(
|
||||||
count,
|
count,
|
||||||
initRequest,
|
initRequest,
|
||||||
errorFactory,
|
errorFactory
|
||||||
filter ?.let {
|
|
||||||
{
|
|
||||||
(it as? T) ?.let { casted -> filter(casted) } == true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
if (this is T) {
|
if (this is T) {
|
||||||
if (mapper == null) {
|
if (filter == null) {
|
||||||
this
|
this
|
||||||
} else {
|
} else {
|
||||||
mapper(this)
|
filter(this)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
@@ -60,21 +47,18 @@ suspend fun BehaviourContext.waitAnyInlineQuery(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<InlineQuery>? = null,
|
filter: InlineQueryMapper<InlineQuery>? = null
|
||||||
mapper: InlineQueryMapper<InlineQuery>? = null
|
) = waitInlines(count, initRequest, errorFactory, filter)
|
||||||
) = waitInlines(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|
||||||
suspend fun BehaviourContext.waitBaseInlineQuery(
|
suspend fun BehaviourContext.waitBaseInlineQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<BaseInlineQuery>? = null,
|
filter: InlineQueryMapper<BaseInlineQuery>? = null
|
||||||
mapper: InlineQueryMapper<BaseInlineQuery>? = null
|
) = waitInlines(count, initRequest, errorFactory, filter)
|
||||||
) = waitInlines(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
suspend fun BehaviourContext.waitLocationInlineQuery(
|
suspend fun BehaviourContext.waitLocationInlineQuery(
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<LocationInlineQuery>? = null,
|
filter: InlineQueryMapper<LocationInlineQuery>? = null
|
||||||
mapper: InlineQueryMapper<LocationInlineQuery>? = null
|
) = waitInlines(count, initRequest, errorFactory, filter)
|
||||||
) = waitInlines(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
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.asMessageUpdate
|
||||||
import dev.inmo.tgbotapi.extensions.utils.asPassportMessage
|
import dev.inmo.tgbotapi.extensions.utils.asPassportMessage
|
||||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||||
@@ -18,38 +17,30 @@ suspend fun <O> BehaviourContext.waitPassportMessages(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<PassportMessage>? = null,
|
|
||||||
mapper: suspend PassportMessage.() -> O?
|
mapper: suspend PassportMessage.() -> O?
|
||||||
): List<O> = expectFlow(
|
): List<O> = expectFlow(
|
||||||
initRequest,
|
initRequest,
|
||||||
count,
|
count,
|
||||||
errorFactory
|
errorFactory
|
||||||
) {
|
) {
|
||||||
val data = it.asMessageUpdate() ?.data ?.asPassportMessage() ?: return@expectFlow emptyList()
|
it.asMessageUpdate() ?.data ?.asPassportMessage() ?.mapper().let(::listOfNotNull)
|
||||||
if (filter == null || filter(data)) {
|
|
||||||
data.mapper().let(::listOfNotNull)
|
|
||||||
} else {
|
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}.toList().toList()
|
}.toList().toList()
|
||||||
|
|
||||||
suspend inline fun <reified T : EncryptedPassportElement> BehaviourContext.waitPassportMessagesWith(
|
suspend inline fun <reified T : EncryptedPassportElement> BehaviourContext.waitPassportMessagesWith(
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
noinline filter: SimpleFilter<PassportMessage>? = null,
|
noinline filter: PassportMessageMapper? = null
|
||||||
noinline mapper: PassportMessageMapper? = null
|
|
||||||
) : List<PassportData> = waitPassportMessages(
|
) : List<PassportData> = waitPassportMessages(
|
||||||
initRequest,
|
initRequest,
|
||||||
errorFactory,
|
errorFactory,
|
||||||
count,
|
count
|
||||||
filter
|
|
||||||
) {
|
) {
|
||||||
if (passportData.data.any { it is T }) {
|
if (passportData.data.any { it is T }) {
|
||||||
if (mapper == null) {
|
if (filter == null) {
|
||||||
passportData
|
passportData
|
||||||
} else {
|
} else {
|
||||||
mapper(this)
|
filter(this)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
@@ -60,6 +51,5 @@ suspend fun BehaviourContext.waitAnyPassportMessages(
|
|||||||
initRequest: Request<*>? = null,
|
initRequest: Request<*>? = null,
|
||||||
errorFactory: NullableRequestBuilder<*> = { null },
|
errorFactory: NullableRequestBuilder<*> = { null },
|
||||||
count: Int = 1,
|
count: Int = 1,
|
||||||
filter: SimpleFilter<PassportMessage>? = null,
|
filter: PassportMessageMapper? = null
|
||||||
mapper: PassportMessageMapper? = null
|
) = waitPassportMessagesWith<EncryptedPassportElement>(count, initRequest, errorFactory, filter)
|
||||||
) = waitPassportMessagesWith<EncryptedPassportElement>(count, initRequest, errorFactory, filter, mapper)
|
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.*
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.query.*
|
import dev.inmo.tgbotapi.types.InlineQueries.query.*
|
||||||
import dev.inmo.tgbotapi.types.InputMedia.*
|
import dev.inmo.tgbotapi.types.InputMedia.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.*
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.*
|
||||||
import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode
|
|
||||||
import dev.inmo.tgbotapi.types.actions.*
|
import dev.inmo.tgbotapi.types.actions.*
|
||||||
import dev.inmo.tgbotapi.types.buttons.*
|
import dev.inmo.tgbotapi.types.buttons.*
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.*
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.*
|
||||||
@@ -3107,12 +3106,3 @@ inline fun Any.asFromUser(): FromUser? = this as? FromUser
|
|||||||
|
|
||||||
@PreviewFeature
|
@PreviewFeature
|
||||||
inline fun Any.requireFromUser(): FromUser = this as FromUser
|
inline fun Any.requireFromUser(): FromUser = this as FromUser
|
||||||
|
|
||||||
@PreviewFeature
|
|
||||||
inline fun <T> Any.whenWithOptionalLanguageCode(block: (WithOptionalLanguageCode) -> T) = asWithOptionalLanguageCode() ?.let(block)
|
|
||||||
|
|
||||||
@PreviewFeature
|
|
||||||
inline fun Any.asWithOptionalLanguageCode(): WithOptionalLanguageCode? = this as? WithOptionalLanguageCode
|
|
||||||
|
|
||||||
@PreviewFeature
|
|
||||||
inline fun Any.requireWithOptionalLanguageCode(): WithOptionalLanguageCode = this as WithOptionalLanguageCode
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dev.inmo.tgbotapi.extensions.utils.extensions
|
package dev.inmo.tgbotapi.extensions.utils.extensions
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.extensions.utils.asFromUser
|
import dev.inmo.tgbotapi.extensions.utils.asFromUser
|
||||||
|
import dev.inmo.tgbotapi.extensions.utils.asFromUserMessage
|
||||||
import dev.inmo.tgbotapi.extensions.utils.asUser
|
import dev.inmo.tgbotapi.extensions.utils.asUser
|
||||||
import dev.inmo.tgbotapi.extensions.utils.shortcuts.chat
|
import dev.inmo.tgbotapi.extensions.utils.shortcuts.chat
|
||||||
import dev.inmo.tgbotapi.types.User
|
import dev.inmo.tgbotapi.types.User
|
||||||
|
|||||||
Reference in New Issue
Block a user