mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-26 03:58:44 +00:00
rename scenario to behaviour context
This commit is contained in:
parent
3125c2fc1b
commit
383e722d07
@ -5,23 +5,23 @@ import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.startGettingOfUpdat
|
||||
import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
||||
suspend fun TelegramBot.buildScenarios(
|
||||
suspend fun TelegramBot.buildBehaviour(
|
||||
scope: CoroutineScope,
|
||||
flowUpdatesFilter: FlowsUpdatesFilter,
|
||||
block: ScenarioReceiver<Unit>
|
||||
block: BehaviourContextReceiver<Unit>
|
||||
) {
|
||||
Scenario(
|
||||
BehaviourContext(
|
||||
this,
|
||||
scope,
|
||||
flowUpdatesFilter
|
||||
).block()
|
||||
}
|
||||
|
||||
suspend fun TelegramBot.buildScenarios(
|
||||
suspend fun TelegramBot.buildBehaviour(
|
||||
scope: CoroutineScope,
|
||||
block: ScenarioReceiver<Unit>
|
||||
block: BehaviourContextReceiver<Unit>
|
||||
) = FlowsUpdatesFilter().also {
|
||||
buildScenarios(
|
||||
buildBehaviour(
|
||||
scope,
|
||||
it,
|
||||
block
|
@ -4,10 +4,10 @@ import dev.inmo.tgbotapi.bot.TelegramBot
|
||||
import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
||||
typealias ScenarioReceiver<T> = suspend Scenario.() -> T
|
||||
typealias ScenarioAndTypeReceiver<T, I> = suspend Scenario.(I) -> T
|
||||
typealias BehaviourContextReceiver<T> = suspend BehaviourContext.() -> T
|
||||
typealias BehaviourContextAndTypeReceiver<T, I> = suspend BehaviourContext.(I) -> T
|
||||
|
||||
data class Scenario(
|
||||
data class BehaviourContext(
|
||||
val bot: TelegramBot,
|
||||
val scope: CoroutineScope,
|
||||
val flowsUpdatesFilter: FlowsUpdatesFilter = FlowsUpdatesFilter()
|
@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.steps.expectations
|
||||
|
||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||
import dev.inmo.tgbotapi.extensions.steps.Scenario
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContext
|
||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
||||
import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
||||
@ -73,7 +73,7 @@ suspend fun <T> FlowsUpdatesFilter.expectFlow(
|
||||
* as is, but when it returns null, then will be called [cancelTrigger] (if it will return true - [cancelRequestFactory]
|
||||
* will be called too), [errorFactory] and then will be returned null
|
||||
*/
|
||||
suspend fun <T> Scenario.expectFlow(
|
||||
suspend fun <T> BehaviourContext.expectFlow(
|
||||
initRequest: Request<*>? = null,
|
||||
count: Int? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
@ -112,7 +112,7 @@ suspend fun <T> FlowsUpdatesFilter.expectOne(
|
||||
* as is, but when it returns null, then will be called [cancelTrigger] (if it will return true - [cancelRequestFactory]
|
||||
* will be called too), [errorFactory] and then will be returned null
|
||||
*/
|
||||
suspend fun <T> Scenario.expectOne(
|
||||
suspend fun <T> BehaviourContext.expectOne(
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
cancelRequestFactory: NullableRequestBuilder<*> = { null },
|
||||
|
@ -2,20 +2,15 @@
|
||||
|
||||
package dev.inmo.tgbotapi.extensions.steps.expectations
|
||||
|
||||
import dev.inmo.tgbotapi.extensions.steps.Scenario
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContext
|
||||
import dev.inmo.tgbotapi.extensions.utils.*
|
||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||
import dev.inmo.tgbotapi.types.CallbackQuery.*
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.*
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.*
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage
|
||||
import dev.inmo.tgbotapi.types.message.content.ContactContent
|
||||
import dev.inmo.tgbotapi.types.update.CallbackQueryUpdate
|
||||
import kotlinx.coroutines.flow.toList
|
||||
|
||||
typealias CallbackQueryMapper<T> = T.() -> T?
|
||||
|
||||
private suspend fun <O> Scenario.waitCallbackQueries(
|
||||
private suspend fun <O> BehaviourContext.waitCallbackQueries(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
@ -29,7 +24,7 @@ private suspend fun <O> Scenario.waitCallbackQueries(
|
||||
}.toList().toList()
|
||||
|
||||
|
||||
private suspend inline fun <reified T : CallbackQuery> Scenario.waitEvents(
|
||||
private suspend inline fun <reified T : CallbackQuery> BehaviourContext.waitEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||
@ -51,55 +46,55 @@ private suspend inline fun <reified T : CallbackQuery> Scenario.waitEvents(
|
||||
}
|
||||
|
||||
|
||||
suspend fun Scenario.waitDataCallbackQuery(
|
||||
suspend fun BehaviourContext.waitDataCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<DataCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitGameShortNameCallbackQuery(
|
||||
suspend fun BehaviourContext.waitGameShortNameCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<GameShortNameCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitInlineMessageIdCallbackQuery(
|
||||
suspend fun BehaviourContext.waitInlineMessageIdCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<InlineMessageIdCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitInlineMessageIdDataCallbackQuery(
|
||||
suspend fun BehaviourContext.waitInlineMessageIdDataCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<InlineMessageIdDataCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitInlineMessageIdGameShortNameCallbackQuery(
|
||||
suspend fun BehaviourContext.waitInlineMessageIdGameShortNameCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<InlineMessageIdGameShortNameCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitMessageCallbackQuery(
|
||||
suspend fun BehaviourContext.waitMessageCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<MessageCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitMessageDataCallbackQuery(
|
||||
suspend fun BehaviourContext.waitMessageDataCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<MessageDataCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitMessageGameShortNameCallbackQuery(
|
||||
suspend fun BehaviourContext.waitMessageGameShortNameCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: CallbackQueryMapper<MessageGameShortNameCallbackQuery>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitUnknownCallbackQuery(
|
||||
suspend fun BehaviourContext.waitUnknownCallbackQuery(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
package dev.inmo.tgbotapi.extensions.steps.expectations
|
||||
|
||||
import dev.inmo.tgbotapi.extensions.steps.Scenario
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContext
|
||||
import dev.inmo.tgbotapi.extensions.utils.asContentMessage
|
||||
import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate
|
||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||
@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.toList
|
||||
|
||||
typealias ContentMessageToContentMapper<T> = suspend ContentMessage<T>.() -> T?
|
||||
|
||||
private suspend fun <O> Scenario.waitContentMessage(
|
||||
private suspend fun <O> BehaviourContext.waitContentMessage(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
@ -28,7 +28,7 @@ private suspend fun <O> Scenario.waitContentMessage(
|
||||
it.asMessageUpdate() ?.data ?.asContentMessage() ?.mapper()
|
||||
}.toList().toList()
|
||||
|
||||
private suspend inline fun <reified T : MessageContent> Scenario.waitContent(
|
||||
private suspend inline fun <reified T : MessageContent> BehaviourContext.waitContent(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||
@ -51,127 +51,127 @@ private suspend inline fun <reified T : MessageContent> Scenario.waitContent(
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun Scenario.waitContact(
|
||||
suspend fun BehaviourContext.waitContact(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<ContactContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitDice(
|
||||
suspend fun BehaviourContext.waitDice(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<DiceContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitGame(
|
||||
suspend fun BehaviourContext.waitGame(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<GameContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitLocation(
|
||||
suspend fun BehaviourContext.waitLocation(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<LocationContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitPoll(
|
||||
suspend fun BehaviourContext.waitPoll(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<PollContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitText(
|
||||
suspend fun BehaviourContext.waitText(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<TextContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitVenue(
|
||||
suspend fun BehaviourContext.waitVenue(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<VenueContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitAudioMediaGroup(
|
||||
suspend fun BehaviourContext.waitAudioMediaGroup(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<AudioMediaGroupContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitDocumentMediaGroup(
|
||||
suspend fun BehaviourContext.waitDocumentMediaGroup(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<DocumentMediaGroupContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitMedia(
|
||||
suspend fun BehaviourContext.waitMedia(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<MediaContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitMediaGroup(
|
||||
suspend fun BehaviourContext.waitMediaGroup(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<MediaGroupContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitVisualMediaGroup(
|
||||
suspend fun BehaviourContext.waitVisualMediaGroup(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<VisualMediaGroupContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitAnimation(
|
||||
suspend fun BehaviourContext.waitAnimation(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<AnimationContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitAudio(
|
||||
suspend fun BehaviourContext.waitAudio(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<AudioContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitDocument(
|
||||
suspend fun BehaviourContext.waitDocument(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<DocumentContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitPhoto(
|
||||
suspend fun BehaviourContext.waitPhoto(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<PhotoContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitSticker(
|
||||
suspend fun BehaviourContext.waitSticker(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<StickerContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitVideo(
|
||||
suspend fun BehaviourContext.waitVideo(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<VideoContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitVideoNote(
|
||||
suspend fun BehaviourContext.waitVideoNote(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<VideoNoteContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitVoice(
|
||||
suspend fun BehaviourContext.waitVoice(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: ContentMessageToContentMapper<VoiceContent>? = null
|
||||
) = waitContent(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitInvoice(
|
||||
suspend fun BehaviourContext.waitInvoice(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
|
@ -2,18 +2,17 @@
|
||||
|
||||
package dev.inmo.tgbotapi.extensions.steps.expectations
|
||||
|
||||
import dev.inmo.tgbotapi.extensions.steps.Scenario
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContext
|
||||
import dev.inmo.tgbotapi.extensions.utils.*
|
||||
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.abstracts.ChatEventMessage
|
||||
import dev.inmo.tgbotapi.types.message.content.ContactContent
|
||||
import kotlinx.coroutines.flow.toList
|
||||
|
||||
typealias EventMessageToEventMapper<T> = suspend ChatEventMessage<T>.() -> T?
|
||||
|
||||
private suspend fun <O> Scenario.waitEventMessages(
|
||||
private suspend fun <O> BehaviourContext.waitEventMessages(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
@ -27,7 +26,7 @@ private suspend fun <O> Scenario.waitEventMessages(
|
||||
}.toList().toList()
|
||||
|
||||
|
||||
private suspend inline fun <reified T : ChatEvent> Scenario.waitEvents(
|
||||
private suspend inline fun <reified T : ChatEvent> BehaviourContext.waitEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
noinline errorFactory: NullableRequestBuilder<*> = { null },
|
||||
@ -50,93 +49,93 @@ private suspend inline fun <reified T : ChatEvent> Scenario.waitEvents(
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun Scenario.waitChannelEvents(
|
||||
suspend fun BehaviourContext.waitChannelEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<ChannelEvent>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
|
||||
suspend fun Scenario.waitChatEvents(
|
||||
suspend fun BehaviourContext.waitChatEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<ChatEvent>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitCommonEvents(
|
||||
suspend fun BehaviourContext.waitCommonEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<CommonEvent>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitGroupEvents(
|
||||
suspend fun BehaviourContext.waitGroupEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<GroupEvent>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitSupergroupEvents(
|
||||
suspend fun BehaviourContext.waitSupergroupEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<SupergroupEvent>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
|
||||
suspend fun Scenario.waitChannelChatCreatedEvents(
|
||||
suspend fun BehaviourContext.waitChannelChatCreatedEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<ChannelChatCreated>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitDeleteChatPhotoEvents(
|
||||
suspend fun BehaviourContext.waitDeleteChatPhotoEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<DeleteChatPhoto>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitGroupChatCreatedEvents(
|
||||
suspend fun BehaviourContext.waitGroupChatCreatedEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<GroupChatCreated>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitLeftChatMemberEvents(
|
||||
suspend fun BehaviourContext.waitLeftChatMemberEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<LeftChatMember>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitNewChatPhotoEvents(
|
||||
suspend fun BehaviourContext.waitNewChatPhotoEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<NewChatPhoto>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitNewChatMembersEvents(
|
||||
suspend fun BehaviourContext.waitNewChatMembersEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<NewChatMembers>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitNewChatTitleEvents(
|
||||
suspend fun BehaviourContext.waitNewChatTitleEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<NewChatTitle>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitPinnedMessageEvents(
|
||||
suspend fun BehaviourContext.waitPinnedMessageEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<PinnedMessage>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitProximityAlertTriggeredEvents(
|
||||
suspend fun BehaviourContext.waitProximityAlertTriggeredEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
filter: EventMessageToEventMapper<ProximityAlertTriggered>? = null
|
||||
) = waitEvents(count, initRequest, errorFactory, filter)
|
||||
suspend fun Scenario.waitSupergroupChatCreatedEvents(
|
||||
suspend fun BehaviourContext.waitSupergroupChatCreatedEvents(
|
||||
count: Int = 1,
|
||||
initRequest: Request<*>? = null,
|
||||
errorFactory: NullableRequestBuilder<*> = { null },
|
||||
|
@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.extensions.steps.triggers_handling
|
||||
|
||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
||||
import dev.inmo.tgbotapi.extensions.steps.Scenario
|
||||
import dev.inmo.tgbotapi.extensions.steps.ScenarioAndTypeReceiver
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContext
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContextAndTypeReceiver
|
||||
import dev.inmo.tgbotapi.extensions.steps.expectations.expectFlow
|
||||
import dev.inmo.tgbotapi.extensions.utils.*
|
||||
import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat
|
||||
@ -14,10 +14,10 @@ import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.*
|
||||
import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
||||
import kotlinx.coroutines.flow.filter
|
||||
|
||||
internal suspend inline fun <reified T : CallbackQuery> Scenario.onCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
internal suspend inline fun <reified T : CallbackQuery> BehaviourContext.onCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
noinline additionalFilter: (suspend (T) -> Boolean)? = null,
|
||||
noinline scenarioReceiver: ScenarioAndTypeReceiver<Unit, T>
|
||||
noinline scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, T>
|
||||
) = flowsUpdatesFilter.expectFlow(bot) {
|
||||
it.asCallbackQueryUpdate() ?.data ?.let { query ->
|
||||
if (query is T) {
|
||||
@ -27,14 +27,14 @@ internal suspend inline fun <reified T : CallbackQuery> Scenario.onCallbackQuery
|
||||
}
|
||||
}
|
||||
}.subscribeSafelyWithoutExceptions(scope) { triggerQuery ->
|
||||
val (jobToCancel, scenario) = if (includeFilterByChatInSubScenario) {
|
||||
val (jobToCancel, scenario) = if (includeFilterByChatInBehaviourSubContext) {
|
||||
val subFilter = FlowsUpdatesFilter()
|
||||
val subScenario = copy(flowsUpdatesFilter = subFilter)
|
||||
val subBehaviourContext = copy(flowsUpdatesFilter = subFilter)
|
||||
|
||||
flowsUpdatesFilter.allUpdatesFlow.filter {
|
||||
val chat = it.sourceChat() ?: return@filter false
|
||||
chat.id.chatId == triggerQuery.user.id.chatId
|
||||
}.subscribeSafelyWithoutExceptions(scope, subFilter.asUpdateReceiver) to subScenario
|
||||
}.subscribeSafelyWithoutExceptions(scope, subFilter.asUpdateReceiver) to subBehaviourContext
|
||||
} else {
|
||||
null to this
|
||||
}
|
||||
@ -43,49 +43,49 @@ internal suspend inline fun <reified T : CallbackQuery> Scenario.onCallbackQuery
|
||||
}
|
||||
|
||||
|
||||
suspend fun Scenario.onDataCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
suspend fun BehaviourContext.onDataCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (DataCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, DataCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, DataCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
|
||||
suspend fun Scenario.onGameShortNameCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
suspend fun BehaviourContext.onGameShortNameCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (GameShortNameCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, GameShortNameCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onInlineMessageIdCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, GameShortNameCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onInlineMessageIdCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (InlineMessageIdCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, InlineMessageIdCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onInlineMessageIdDataCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, InlineMessageIdCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onInlineMessageIdDataCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (InlineMessageIdDataCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, InlineMessageIdDataCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onInlineMessageIdGameShortNameCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, InlineMessageIdDataCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onInlineMessageIdGameShortNameCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (InlineMessageIdGameShortNameCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, InlineMessageIdGameShortNameCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onMessageCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, InlineMessageIdGameShortNameCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onMessageCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (MessageCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, MessageCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onMessageDataCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, MessageCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onMessageDataCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (MessageDataCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, MessageDataCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onMessageGameShortNameCallbackQuery(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, MessageDataCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onMessageGameShortNameCallbackQuery(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (MessageGameShortNameCallbackQuery) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, MessageGameShortNameCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onUnknownCallbackQueryType(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, MessageGameShortNameCallbackQuery>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onUnknownCallbackQueryType(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (UnknownCallbackQueryType) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, UnknownCallbackQueryType>
|
||||
) = onCallbackQuery(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, UnknownCallbackQueryType>
|
||||
) = onCallbackQuery(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
|
@ -7,13 +7,13 @@ import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.content.TextContent
|
||||
import kotlinx.coroutines.Job
|
||||
|
||||
suspend fun Scenario.command(
|
||||
suspend fun BehaviourContext.command(
|
||||
commandRegex: Regex,
|
||||
requireOnlyCommandInMessage: Boolean = true,
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<TextContent>>
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<TextContent>>
|
||||
): Job = onText(
|
||||
includeFilterByChatInSubScenario,
|
||||
includeFilterByChatInBehaviourSubContext,
|
||||
{ message ->
|
||||
val content = message.content
|
||||
val textSources = content.textSources
|
||||
@ -27,4 +27,9 @@ suspend fun Scenario.command(
|
||||
scenarioReceiver
|
||||
)
|
||||
|
||||
|
||||
suspend inline fun BehaviourContext.onCommand(
|
||||
commandRegex: Regex,
|
||||
requireOnlyCommandInMessage: Boolean = true,
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
noinline scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<TextContent>>
|
||||
): Job = command(commandRegex, requireOnlyCommandInMessage, includeFilterByChatInBehaviourSubContext, scenarioReceiver)
|
||||
|
@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.extensions.steps.triggers_handling
|
||||
|
||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
||||
import dev.inmo.tgbotapi.extensions.steps.Scenario
|
||||
import dev.inmo.tgbotapi.extensions.steps.ScenarioAndTypeReceiver
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContext
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContextAndTypeReceiver
|
||||
import dev.inmo.tgbotapi.extensions.steps.expectations.expectFlow
|
||||
import dev.inmo.tgbotapi.extensions.utils.asContentMessage
|
||||
import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate
|
||||
@ -19,10 +19,10 @@ import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
||||
import kotlinx.coroutines.flow.filter
|
||||
|
||||
|
||||
internal suspend inline fun <reified T : MessageContent> Scenario.onContent(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
internal suspend inline fun <reified T : MessageContent> BehaviourContext.onContent(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
noinline additionalFilter: (suspend (ContentMessage<T>) -> Boolean)? = null,
|
||||
noinline scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<T>>
|
||||
noinline scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<T>>
|
||||
) = flowsUpdatesFilter.expectFlow(bot) {
|
||||
it.asMessageUpdate() ?.data ?.asContentMessage() ?.let { message ->
|
||||
if (message.content is T) {
|
||||
@ -33,14 +33,14 @@ internal suspend inline fun <reified T : MessageContent> Scenario.onContent(
|
||||
}
|
||||
}
|
||||
}.subscribeSafelyWithoutExceptions(scope) { triggerMessage ->
|
||||
val (jobToCancel, scenario) = if (includeFilterByChatInSubScenario) {
|
||||
val (jobToCancel, scenario) = if (includeFilterByChatInBehaviourSubContext) {
|
||||
val subFilter = FlowsUpdatesFilter()
|
||||
val subScenario = copy(flowsUpdatesFilter = subFilter)
|
||||
val subBehaviourContext = copy(flowsUpdatesFilter = subFilter)
|
||||
|
||||
flowsUpdatesFilter.allUpdatesFlow.filter {
|
||||
val chat = it.sourceChat() ?: return@filter false
|
||||
chat.id.chatId == triggerMessage.chat.id.chatId
|
||||
}.subscribeSafelyWithoutExceptions(scope, subFilter.asUpdateReceiver) to subScenario
|
||||
}.subscribeSafelyWithoutExceptions(scope, subFilter.asUpdateReceiver) to subBehaviourContext
|
||||
} else {
|
||||
null to this
|
||||
}
|
||||
@ -48,113 +48,113 @@ internal suspend inline fun <reified T : MessageContent> Scenario.onContent(
|
||||
jobToCancel ?.cancel()
|
||||
}
|
||||
|
||||
suspend fun Scenario.onContact(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
suspend fun BehaviourContext.onContact(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<ContactContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<ContactContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onDice(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<ContactContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onDice(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<DiceContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<DiceContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onGame(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<DiceContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onGame(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<GameContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<GameContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onLocation(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<GameContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onLocation(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<LocationContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<LocationContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onPoll(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<LocationContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onPoll(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<PollContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<PollContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onText(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<PollContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onText(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<TextContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<TextContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onVenue(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<TextContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onVenue(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<VenueContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<VenueContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onAudioMediaGroup(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<VenueContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onAudioMediaGroup(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<AudioMediaGroupContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<AudioMediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onDocumentMediaGroup(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<AudioMediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onDocumentMediaGroup(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<DocumentMediaGroupContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<DocumentMediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onMediaCollection(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<DocumentMediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onMediaCollection(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<MediaCollectionContent<TelegramMediaFile>>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<MediaCollectionContent<TelegramMediaFile>>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onMedia(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<MediaCollectionContent<TelegramMediaFile>>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onMedia(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<MediaContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<MediaContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onMediaGroup(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<MediaContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onMediaGroup(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<MediaGroupContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<MediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onVisualMediaGroup(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<MediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onVisualMediaGroup(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<VisualMediaGroupContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<VisualMediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onAnimation(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<VisualMediaGroupContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onAnimation(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<AnimationContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<AnimationContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onAudio(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<AnimationContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onAudio(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<AudioContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<AudioContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onDocument(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<AudioContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onDocument(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<DocumentContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<DocumentContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onPhoto(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<DocumentContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onPhoto(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<PhotoContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<PhotoContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onSticker(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<PhotoContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onSticker(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<StickerContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<StickerContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onVideo(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<StickerContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onVideo(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<VideoContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<VideoContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onVideoNote(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<VideoContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onVideoNote(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<VideoNoteContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<VideoNoteContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onVoice(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<VideoNoteContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onVoice(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<VoiceContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<VoiceContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onInvoice(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<VoiceContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onInvoice(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ContentMessage<InvoiceContent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ContentMessage<InvoiceContent>>
|
||||
) = onContent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ContentMessage<InvoiceContent>>
|
||||
) = onContent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
|
@ -3,27 +3,24 @@ package dev.inmo.tgbotapi.extensions.steps.triggers_handling
|
||||
|
||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
||||
import dev.inmo.tgbotapi.extensions.steps.Scenario
|
||||
import dev.inmo.tgbotapi.extensions.steps.ScenarioAndTypeReceiver
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContext
|
||||
import dev.inmo.tgbotapi.extensions.steps.BehaviourContextAndTypeReceiver
|
||||
import dev.inmo.tgbotapi.extensions.steps.expectations.expectFlow
|
||||
import dev.inmo.tgbotapi.extensions.utils.*
|
||||
import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat
|
||||
import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.*
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.*
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.content.*
|
||||
import dev.inmo.tgbotapi.types.message.content.abstracts.*
|
||||
import dev.inmo.tgbotapi.types.message.content.media.*
|
||||
import dev.inmo.tgbotapi.types.message.payments.InvoiceContent
|
||||
import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
||||
import kotlinx.coroutines.flow.filter
|
||||
|
||||
internal suspend inline fun <reified T : ChatEvent> Scenario.onEvent(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
internal suspend inline fun <reified T : ChatEvent> BehaviourContext.onEvent(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
noinline additionalFilter: (suspend (ChatEventMessage<T>) -> Boolean)? = null,
|
||||
noinline scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<T>>
|
||||
noinline scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<T>>
|
||||
) = flowsUpdatesFilter.expectFlow(bot) {
|
||||
it.asMessageUpdate() ?.data ?.asChatEventMessage() ?.let { message ->
|
||||
if (message.chatEvent is T) {
|
||||
@ -34,14 +31,14 @@ internal suspend inline fun <reified T : ChatEvent> Scenario.onEvent(
|
||||
}
|
||||
}
|
||||
}.subscribeSafelyWithoutExceptions(scope) { triggerMessage ->
|
||||
val (jobToCancel, scenario) = if (includeFilterByChatInSubScenario) {
|
||||
val (jobToCancel, scenario) = if (includeFilterByChatInBehaviourSubContext) {
|
||||
val subFilter = FlowsUpdatesFilter()
|
||||
val subScenario = copy(flowsUpdatesFilter = subFilter)
|
||||
val subBehaviourContext = copy(flowsUpdatesFilter = subFilter)
|
||||
|
||||
flowsUpdatesFilter.allUpdatesFlow.filter {
|
||||
val chat = it.sourceChat() ?: return@filter false
|
||||
chat.id.chatId == triggerMessage.chat.id.chatId
|
||||
}.subscribeSafelyWithoutExceptions(scope, subFilter.asUpdateReceiver) to subScenario
|
||||
}.subscribeSafelyWithoutExceptions(scope, subFilter.asUpdateReceiver) to subBehaviourContext
|
||||
} else {
|
||||
null to this
|
||||
}
|
||||
@ -49,79 +46,79 @@ internal suspend inline fun <reified T : ChatEvent> Scenario.onEvent(
|
||||
jobToCancel ?.cancel()
|
||||
}
|
||||
|
||||
suspend fun Scenario.onChannelEvent(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
suspend fun BehaviourContext.onChannelEvent(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<ChannelEvent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<ChannelEvent>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onChatEvent(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<ChannelEvent>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onChatEvent(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<ChatEvent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<ChatEvent>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onCommonEvent(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<ChatEvent>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onCommonEvent(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<CommonEvent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<CommonEvent>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onGroupEvent(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<CommonEvent>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onGroupEvent(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<GroupEvent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<GroupEvent>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onSupergroupEvent(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<GroupEvent>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onSupergroupEvent(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<SupergroupEvent>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<SupergroupEvent>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<SupergroupEvent>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
|
||||
suspend fun Scenario.onChannelChatCreated(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
suspend fun BehaviourContext.onChannelChatCreated(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<ChannelChatCreated>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<ChannelChatCreated>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onDeleteChatPhoto(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<ChannelChatCreated>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onDeleteChatPhoto(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<DeleteChatPhoto>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<DeleteChatPhoto>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onGroupChatCreated(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<DeleteChatPhoto>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onGroupChatCreated(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<GroupChatCreated>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<GroupChatCreated>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onLeftChatMember(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<GroupChatCreated>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onLeftChatMember(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<LeftChatMember>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<LeftChatMember>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onNewChatMembers(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<LeftChatMember>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onNewChatMembers(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<NewChatMembers>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<NewChatMembers>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onNewChatPhoto(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<NewChatMembers>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onNewChatPhoto(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<NewChatPhoto>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<NewChatPhoto>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onNewChatTitle(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<NewChatPhoto>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onNewChatTitle(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<NewChatTitle>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<NewChatTitle>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onPinnedMessage(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<NewChatTitle>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onPinnedMessage(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<PinnedMessage>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<PinnedMessage>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onProximityAlertTriggered(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<PinnedMessage>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onProximityAlertTriggered(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<ProximityAlertTriggered>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<ProximityAlertTriggered>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
suspend fun Scenario.onSupergroupChatCreated(
|
||||
includeFilterByChatInSubScenario: Boolean = true,
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<ProximityAlertTriggered>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
suspend fun BehaviourContext.onSupergroupChatCreated(
|
||||
includeFilterByChatInBehaviourSubContext: Boolean = true,
|
||||
additionalFilter: (suspend (ChatEventMessage<SupergroupChatCreated>) -> Boolean)? = null,
|
||||
scenarioReceiver: ScenarioAndTypeReceiver<Unit, ChatEventMessage<SupergroupChatCreated>>
|
||||
) = onEvent(includeFilterByChatInSubScenario, additionalFilter, scenarioReceiver)
|
||||
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatEventMessage<SupergroupChatCreated>>
|
||||
) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver)
|
||||
|
Loading…
Reference in New Issue
Block a user