diff --git a/CHANGELOG.md b/CHANGELOG.md index cd0f9d8e5e..f8fbffb0d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,8 @@ * Extensions for `FlowUpdatesFilter` were added: * `FlowsUpdatesFilter#allSentMessagesFlow` (combination of `messageFlow` and `channelPostFlow`) * `FlowsUpdatesFilter#allSentMediaGroupsFlow` (combination of `messageMediaGroupFlow` and `channelPostMediaGroupFlow`) + * `FlowsUpdatesFilter#sentMessages` + * `FlowsUpdatesFilter#sentMessagesWithMediaGroups` * `FlowsUpdatesFilter#photoMessagesWithMediaGroups` * `FlowsUpdatesFilter#imageMessagesWithMediaGroups` * `FlowsUpdatesFilter#videoMessagesWithMediaGroups` diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/FlowsAggregation.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/FlowsAggregation.kt index eba50df519..89398c7e10 100644 --- a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/FlowsAggregation.kt +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/FlowsAggregation.kt @@ -29,3 +29,11 @@ fun Flow>.flatMap(): Flow = flow { } } } + +fun Flow.flatMap(mapper: (T) -> Iterable): Flow = flow { + collect { + mapper(it).forEach { + emit(it) + } + } +} diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/FlowsUpdatesFilter.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/FlowsUpdatesFilter.kt index 2f968339d8..ff7a3705f1 100644 --- a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/FlowsUpdatesFilter.kt +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/FlowsUpdatesFilter.kt @@ -75,6 +75,18 @@ inline fun FlowsUpdatesFilter.filterMediaGroupMes } ?: messageMediaGroupFlow).filterMediaGroupMessages() } +fun FlowsUpdatesFilter.sentMessages( + scopeToIncludeChannels: CoroutineScope? = null +): Flow> = filterContentMessages(scopeToIncludeChannels) +fun FlowsUpdatesFilter.sentMessagesWithMediaGroups( + scopeToIncludeChannels: CoroutineScope? = null +): Flow> = merge( + sentMessages(scopeToIncludeChannels), + mediaGroupMessages(scopeToIncludeChannels).flatMap { + it.mapNotNull { it as? ContentMessage } + } +) + fun Flow.animationMessages() = filterContentMessages() fun FlowsUpdatesFilter.animationMessages( scopeToIncludeChannels: CoroutineScope? = null