@file:Suppress("unused") package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.content.* import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.lowLevelRiskFeatureMessage import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map @RiskFeature(lowLevelRiskFeatureMessage) suspend inline fun BehaviourContext.waitEditedContent( initRequest: Request<*>? = null, includeMediaGroups: Boolean = true, noinline errorFactory: NullableRequestBuilder<*> = { null } ): Flow = waitEditedContentMessage(initRequest, includeMediaGroups, errorFactory).map { it.content } suspend fun BehaviourContext.waitEditedMessageContent( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = true ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedContentMessage( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = true ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedContact( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedDice( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedGame( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedLocation( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedLiveLocation( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedStaticLocation( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedText( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedVenue( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedAudioMediaGroupContent( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = true ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedDocumentMediaGroupContent( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = true ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedMedia( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = false ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedAnyMediaGroupContent( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = true ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedVisualMediaGroupContent( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = true ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedTextedMediaContent( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = true ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedAnimation( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedAudio( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = false ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedDocument( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = false ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedPhoto( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = false ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedSticker( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedVideo( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, includeMediaGroups: Boolean = false ) = waitEditedContent(initRequest, includeMediaGroups, errorFactory) suspend fun BehaviourContext.waitEditedVideoNote( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedVoice( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory) suspend fun BehaviourContext.waitEditedInvoice( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null } ) = waitEditedContent(initRequest, false, errorFactory)