diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt index 0093fa5111..e792af6007 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt @@ -8,6 +8,7 @@ import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage import kotlinx.coroutines.flow.toList @@ -63,6 +64,39 @@ suspend fun BehaviourContext.waitChatEvents( count: Int = 1, filter: EventMessageToEventMapper? = null ) = waitEvents(count, initRequest, errorFactory, filter) + +suspend fun BehaviourContext.waitVoiceChatEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) +suspend fun BehaviourContext.waitVoiceChatStartedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) +suspend fun BehaviourContext.waitVoiceChatEndedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) +suspend fun BehaviourContext.waitVoiceChatParticipantsInvitedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) + +suspend fun BehaviourContext.waitMessageAutoDeleteTimerChangedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) + suspend fun BehaviourContext.waitCommonEvents( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt index d5b9404550..7e7a8b8a27 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt @@ -8,6 +8,7 @@ import dev.inmo.tgbotapi.extensions.utils.* import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage internal suspend inline fun BehaviourContext.onEvent( @@ -43,6 +44,31 @@ suspend fun BehaviourContext.onChatEvent( additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, scenarioReceiver: BehaviourContextAndTypeReceiver> ) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatStartedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatEndedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatParticipantsInvitedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onMessageAutoDeleteTimerChangedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) suspend fun BehaviourContext.onCommonEvent( includeFilterByChatInBehaviourSubContext: Boolean = true, additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null,