diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt index faccc49787..00940c0ef0 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt @@ -46,24 +46,25 @@ internal inline fun BC.on noinline scenarioReceiver: CustomBehaviourContextAndTypeReceiver ): Job = launchInNewSubContext { val newInitialFilter = SimpleFilter { - it is T && initialFilter?.invoke(it) ?: true - }::invoke + it is T && (initialFilter ?.invoke(it) ?: true) + } + val newInitialFilterInvoke = newInitialFilter::invoke runCatching { - onCallbackQuery( - initialFilter, + this@launchInNewSubContext.onCallbackQuery( + newInitialFilter, subcontextUpdatesFilter, markerFactory, additionalSubcontextInitialAction, scenarioReceiver ) }.onFailure { - triggersHolder.handleableCallbackQueriesDataHolder.unregisterHandleable(newInitialFilter) + this@launchInNewSubContext.triggersHolder.handleableCallbackQueriesDataHolder.unregisterHandleable(newInitialFilterInvoke) }.onSuccess { - triggersHolder.handleableCallbackQueriesDataHolder.registerHandleable(newInitialFilter) + this@launchInNewSubContext.triggersHolder.handleableCallbackQueriesDataHolder.registerHandleable(newInitialFilterInvoke) it.invokeOnCompletion { runCatching { launchSafelyWithoutExceptions { - triggersHolder.handleableCallbackQueriesDataHolder.unregisterHandleable(newInitialFilter) + this@launchInNewSubContext.triggersHolder.handleableCallbackQueriesDataHolder.unregisterHandleable(newInitialFilterInvoke) } } } @@ -89,7 +90,7 @@ fun BC.onDataCallbackQuery( markerFactory: MarkerFactory? = ByUserCallbackQueryMarkerFactory, additionalSubcontextInitialAction: CustomBehaviourContextAndTwoTypesReceiver? = null, scenarioReceiver: CustomBehaviourContextAndTypeReceiver -) = onDataCallbackQueryCounted( +): Job = onDataCallbackQueryCounted( initialFilter, subcontextUpdatesFilter, markerFactory,