diff --git a/CHANGELOG.md b/CHANGELOG.md index 501b930656..f4fc57e948 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # TelegramBotAPI changelog +## 0.38.8 + +* `Common`: + * `Version`: + * `MicroUtils`: `0.9.12` -> `0.9.16` + * `Klock`: `2.6.2` -> `2.6.3` + * `Ktor`: `1.6.7` -> `1.6.8` +* `BehaviourBuilder`: + * Fixes in `onMediaGroup` and dependent functions + * Add several new extensions for `SimpleFilter`: + * `SimpleFilter#listAll` + * `SimpleFilter#listAny` + * `SimpleFilter#listNone` + ## 0.38.7 * `Common`: diff --git a/gradle.properties b/gradle.properties index 75f0d455ff..1eb82a8614 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,11 +8,11 @@ kotlin.incremental.js=true kotlin_version=1.6.10 kotlin_coroutines_version=1.6.0 kotlin_serialisation_runtime_version=1.3.2 -klock_version=2.6.2 +klock_version=2.6.3 uuid_version=0.4.0 -ktor_version=1.6.7 +ktor_version=1.6.8 -micro_utils_version=0.9.12 +micro_utils_version=0.9.16 javax_activation_version=1.1.1 @@ -20,6 +20,6 @@ javax_activation_version=1.1.1 dokka_version=1.6.10 library_group=dev.inmo -library_version=0.38.7 +library_version=0.38.8 github_release_plugin_version=2.2.12 diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt index a308ecf3c0..b523abbc3a 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt @@ -22,7 +22,11 @@ internal suspend inline fun >, Any> = ByChatMediaGroupMarkerFactory, noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver>> ) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) { - (it.asSentMediaGroupUpdate() ?.data ?.takeIf { it.all { it is T } } as? List>) ?.let(::listOfNotNull) + (it.asSentMediaGroupUpdate() ?.data ?.takeIf { messages -> + messages.all { message -> + message.content is T + } + } as? List>) ?.let(::listOfNotNull) } /** diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt index 6383a8cbfc..45cdf3b004 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/utils/SimpleFilter.kt @@ -4,6 +4,27 @@ typealias SimpleFilter = suspend (T) -> Boolean inline fun SimpleFilter(noinline block: SimpleFilter) = block +/** + * @return [SimpleFilter] which will return true in case when all the items in incoming data passed [this] filter + */ +fun SimpleFilter.listAll() = SimpleFilter> { + it.all { this@listAll(it) } +} + +/** + * @return [SimpleFilter] which will return true in case when there is any item in incoming data passed [this] filter + */ +fun SimpleFilter.listAny() = SimpleFilter> { + it.any { this@listAny(it) } +} + +/** + * @return [SimpleFilter] which will return true in case when there is no any item in incoming data passed [this] filter + */ +fun SimpleFilter.listNone() = SimpleFilter> { + it.none { this@listNone(it) } +} + /** * Makes an AND (&&) operation between [this] and [other] */