From a87c21273d653e11a7d4da9820345f75b6283bcd Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 17 Apr 2022 00:22:00 +0600 Subject: [PATCH] BehaviourContext#on*Message extensions --- CHANGELOG.md | 2 + .../expectations/WaitContent.kt | 7 +- .../expectations/WaitContentMessage.kt | 281 ++++++++++++++++++ .../triggers_handling/ContentTriggers.kt | 50 ++-- 4 files changed, 312 insertions(+), 28 deletions(-) create mode 100644 tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e78c0d740..6b177dc752 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ * `Core`: * Fixes in `mention` creation * Deprecate `StorageFileInfo` +* `BehaviourBuilder`: + * In the expectations a lot of `on*Message` extensions have been added (like `onContentMessage`). These extensions could be useful when with the `Content` its message info is important ## 0.38.12 diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt index 44dbd7d524..5960fd0c4a 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt @@ -23,7 +23,7 @@ import kotlinx.coroutines.flow.toList typealias CommonMessageToContentMapper = suspend CommonMessage.() -> T? -private suspend fun BehaviourContext.waitCommonMessage( +private suspend fun BehaviourContext.waitCommonContent( count: Int = 1, initRequest: Request<*>? = null, includeMediaGroups: Boolean = true, @@ -77,7 +77,7 @@ private suspend inline fun BehaviourContext.waitCon noinline errorFactory: NullableRequestBuilder<*> = { null }, noinline filter: SimpleFilter>? = null, noinline mapper: CommonMessageToContentMapper? = null -) : List = waitCommonMessage( +) : List = waitCommonContent( count, initRequest, includeMediaGroups, @@ -90,7 +90,8 @@ private suspend inline fun BehaviourContext.waitCon contentConverter(mapper) ).toList() -suspend fun BehaviourContext.waitContentMessage( + +suspend fun BehaviourContext.waitContent( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt new file mode 100644 index 0000000000..914087e158 --- /dev/null +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContentMessage.kt @@ -0,0 +1,281 @@ +@file:Suppress("unused") + +package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations + +import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions +import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext +import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter +import dev.inmo.tgbotapi.extensions.utils.withContent +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage +import dev.inmo.tgbotapi.types.message.content.* +import dev.inmo.tgbotapi.types.message.content.abstracts.* +import dev.inmo.tgbotapi.types.message.content.media.* +import dev.inmo.tgbotapi.types.message.content.media.AudioMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.media.DocumentMediaGroupContent +import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent +import dev.inmo.tgbotapi.types.message.payments.InvoiceContent +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.toList + +typealias CommonMessageToCommonMessageMapper = suspend CommonMessage.() -> CommonMessage? + +internal suspend fun BehaviourContext.waitCommonMessage( + count: Int = 1, + initRequest: Request<*>? = null, + includeMediaGroups: Boolean = true, + errorFactory: NullableRequestBuilder<*> = { null }, + filter: SimpleFilter>? = null, + mapper: suspend CommonMessage.() -> CommonMessage? +): Flow> = expectFlow( + initRequest, + count, + errorFactory +) { + val messages = when (it) { + is SentMediaGroupUpdate -> { + if (includeMediaGroups) { + it.data.map { it as CommonMessage } + } else { + emptyList() + } + } + is BaseSentMessageUpdate -> listOf(it.data) + else -> return@expectFlow emptyList() + } + messages.mapNotNull { message -> + val asCommonMessage = message as CommonMessage + if (filter == null || filter(asCommonMessage)) { + asCommonMessage.mapper() + } else { + null + } + } +} + +internal inline fun contentMessageConverter( + noinline mapper: CommonMessageToCommonMessageMapper? = null +): suspend CommonMessage.() -> CommonMessage? = mapper ?.let { + { + if (content is T) { + @Suppress("UNCHECKED_CAST") + val message = (this as CommonMessage) + safelyWithoutExceptions { mapper(message) } + } else { + null + } + } +} ?: { + @Suppress("UNCHECKED_CAST") + if (content is T) this as CommonMessage else null +} + +private suspend inline fun BehaviourContext.waitContentMessage( + count: Int = 1, + initRequest: Request<*>? = null, + includeMediaGroups: Boolean = true, + noinline errorFactory: NullableRequestBuilder<*> = { null }, + noinline filter: SimpleFilter>? = null, + noinline mapper: CommonMessageToCommonMessageMapper? = null +) : List> = waitCommonMessage( + count, + initRequest, + includeMediaGroups, + errorFactory, + filter ?.let { + { + it.withContent() ?.let { filter(it) } == true + } + }, + contentMessageConverter(mapper) +).toList() + +suspend fun BehaviourContext.waitContentMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = true, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitContactMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitDiceMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitGameMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitLocationMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitLiveLocationMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitStaticLocationMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitPollMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitTextMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitVenueMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitAudioMediaGroupContentMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = true, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitDocumentMediaGroupContentMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = true, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitMediaMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = false, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitAnyMediaGroupContentMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = true, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitVisualMediaGroupContentMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = true, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitTextedMediaContentMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = true, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitAnimationMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitAudioMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = false, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitDocumentMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = false, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitPhotoMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = false, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitStickerMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitVideoMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + includeMediaGroups: Boolean = false, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, includeMediaGroups, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitVideoNoteMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitVoiceMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) +suspend fun BehaviourContext.waitInvoiceMessage( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: SimpleFilter>? = null, + mapper: CommonMessageToCommonMessageMapper? = null +) = waitContentMessage(count, initRequest, false, errorFactory, filter, mapper) diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt index d6d0b019d2..4f51259fb4 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt @@ -24,7 +24,7 @@ import dev.inmo.tgbotapi.types.update.abstracts.Update typealias CommonMessageFilter = SimpleFilter> inline fun CommonMessageFilter(noinline block: CommonMessageFilter) = block -internal suspend inline fun BC.onContent( +internal suspend inline fun BC.onContentMessageWithType( noinline initialFilter: CommonMessageFilter? = null, noinline subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update>? = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, @@ -57,7 +57,7 @@ suspend fun BC.onContentMessage( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -81,7 +81,7 @@ suspend fun BC.onContact( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -105,7 +105,7 @@ suspend fun BC.onDice( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -129,7 +129,7 @@ suspend fun BC.onGame( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -153,7 +153,7 @@ suspend fun BC.onLocation( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -177,7 +177,7 @@ suspend fun BC.onLiveLocation( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -201,7 +201,7 @@ suspend fun BC.onStaticLocation( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -225,7 +225,7 @@ suspend fun BC.onPoll( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -249,7 +249,7 @@ suspend fun BC.onText( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -273,7 +273,7 @@ suspend fun BC.onVenue( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -297,7 +297,7 @@ suspend fun BC.onAudioMediaGroup( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -321,7 +321,7 @@ suspend fun BC.onDocumentMediaGroupContent( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -345,7 +345,7 @@ suspend fun BC.onTextedMediaContent( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -369,7 +369,7 @@ suspend fun BC.onMediaCollection( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver>, Update> = MessageFilterByChat, markerFactory: MarkerFactory>, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver>> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -393,7 +393,7 @@ suspend fun BC.onMedia( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -417,7 +417,7 @@ suspend fun BC.onAnimation( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -441,7 +441,7 @@ suspend fun BC.onAudio( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -465,7 +465,7 @@ suspend fun BC.onDocument( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -489,7 +489,7 @@ suspend fun BC.onPhoto( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -513,7 +513,7 @@ suspend fun BC.onSticker( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -537,7 +537,7 @@ suspend fun BC.onVideo( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -561,7 +561,7 @@ suspend fun BC.onVideoNote( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -585,7 +585,7 @@ suspend fun BC.onVoice( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory, @@ -609,7 +609,7 @@ suspend fun BC.onInvoice( subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver, Update> = MessageFilterByChat, markerFactory: MarkerFactory, Any> = ByChatMessageMarkerFactory, scenarioReceiver: CustomBehaviourContextAndTypeReceiver> -) = onContent( +) = onContentMessageWithType( initialFilter, subcontextUpdatesFilter, markerFactory,