From 9d40e598f1018d45c71ef92195f467f8973e49c1 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 16 May 2022 18:58:19 +0600 Subject: [PATCH] buildBehaciour returns BehaviourContext --- CHANGELOG.md | 3 ++ .../behaviour_builder/BehaviourBuilders.kt | 42 +++++++++---------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3182764c0a..89f0ff080e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 1.1.1 +* `Behaviour Builder`: + * Extension `TelegramBot#buildBehaviour` now returns `BehaviourContext` + ## 1.1.0 * `Utils`: diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt index 41e193218c..7b426e9a6a 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourBuilders.kt @@ -7,8 +7,7 @@ import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.longPolling import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.startGettingOfUpdatesByLongPolling import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter import dev.inmo.tgbotapi.utils.PreviewFeature -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.plus +import kotlinx.coroutines.* /** * This function is used in [buildBehaviour] extensions to provide default [CoroutineScope] and allow to avoid all @@ -30,18 +29,18 @@ suspend fun TelegramBot.buildBehaviour( scope: CoroutineScope = defaultCoroutineScopeProvider(), defaultExceptionsHandler: ExceptionHandler? = null, block: BehaviourContextReceiver -) { - BehaviourContext( - this, - scope.let { - if (defaultExceptionsHandler == null) { - it - } else { - it + ContextSafelyExceptionHandler(defaultExceptionsHandler) - } - }, - flowUpdatesFilter - ).block() +): BehaviourContext = BehaviourContext( + this, + scope.let { + if (defaultExceptionsHandler == null) { + it + } else { + it + ContextSafelyExceptionHandler(defaultExceptionsHandler) + } + }, + flowUpdatesFilter +).apply { + block() } /** @@ -56,15 +55,14 @@ suspend fun TelegramBot.buildBehaviourWithLongPolling( scope: CoroutineScope = defaultCoroutineScopeProvider(), defaultExceptionsHandler: ExceptionHandler? = null, block: BehaviourContextReceiver -) = FlowsUpdatesFilter().let { - buildBehaviour( - it, - scope, - defaultExceptionsHandler, - block +): Job { + val behaviourContext = buildBehaviour( + scope = scope, + defaultExceptionsHandler = defaultExceptionsHandler, + block = block ) - longPolling( - it, + return longPolling( + behaviourContext, scope = scope ) }