diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/Variants.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/Variants.kt index 4289c347a5..63ed115bef 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/Variants.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/Variants.kt @@ -12,10 +12,20 @@ suspend fun BehaviourContext.parallel( inline infix fun Deferred.withAction(noinline callback: suspend (T) -> O) = DeferredAction(this, callback) -suspend fun BehaviourContext.oneOf( +inline fun Deferred.asAction() = DeferredAction(this) { it } + +suspend fun BehaviourContext.oneOfActions( deferredActions: Iterable> ) = deferredActions.invokeFirstOf(scope) -suspend fun BehaviourContext.oneOf( +suspend fun BehaviourContext.oneOfActions( vararg deferredActions: DeferredAction<*, O> +) = this@oneOfActions.oneOfActions(deferredActions.toList()) + +suspend fun BehaviourContext.oneOf( + deferredActions: Iterable> +) = oneOfActions(deferredActions.map { it.asAction() }) + +suspend fun BehaviourContext.oneOf( + vararg deferredActions: Deferred ) = oneOf(deferredActions.toList())