2021-09-13 17:30:01 +00:00
|
|
|
@file:Suppress("unused")
|
|
|
|
|
2021-03-12 08:36:10 +00:00
|
|
|
package dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling
|
|
|
|
|
|
|
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.*
|
2021-09-13 17:30:01 +00:00
|
|
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.filters.ChatMemberUpdatedFilterByChat
|
2021-08-03 05:46:23 +00:00
|
|
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.SimpleFilter
|
2021-06-26 06:15:52 +00:00
|
|
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.ByChatChatMemberUpdatedMarkerFactory
|
|
|
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.MarkerFactory
|
2021-03-12 08:36:10 +00:00
|
|
|
import dev.inmo.tgbotapi.types.ChatMemberUpdated
|
|
|
|
import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate
|
|
|
|
import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate
|
|
|
|
import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate
|
2021-09-13 17:30:01 +00:00
|
|
|
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
2021-03-12 08:36:10 +00:00
|
|
|
|
2021-03-12 09:03:11 +00:00
|
|
|
internal suspend inline fun <reified U : ChatMemberUpdatedUpdate> BehaviourContext.onChatMemberUpdatedInternal(
|
2021-09-13 17:30:01 +00:00
|
|
|
noinline initialFilter: SimpleFilter<ChatMemberUpdated>? = null,
|
|
|
|
noinline subcontextUpdatesFilter: BehaviourContextAndTwoTypesReceiver<Boolean, ChatMemberUpdated, Update>? = ChatMemberUpdatedFilterByChat,
|
2021-06-26 06:15:52 +00:00
|
|
|
markerFactory: MarkerFactory<ChatMemberUpdated, Any> = ByChatChatMemberUpdatedMarkerFactory,
|
2021-03-12 08:36:10 +00:00
|
|
|
noinline scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatMemberUpdated>
|
2021-09-13 17:30:01 +00:00
|
|
|
) = on(markerFactory, initialFilter, subcontextUpdatesFilter, scenarioReceiver) {
|
|
|
|
((it as? U) ?.data) ?.let(::listOfNotNull)
|
2021-06-26 06:15:52 +00:00
|
|
|
}
|
2021-03-12 08:36:10 +00:00
|
|
|
|
|
|
|
suspend fun BehaviourContext.onChatMemberUpdated(
|
2021-09-13 17:30:01 +00:00
|
|
|
includeFilterByChatInBehaviourSubContext: Boolean,
|
2021-08-03 05:46:23 +00:00
|
|
|
additionalFilter: SimpleFilter<ChatMemberUpdated>? = null,
|
2021-06-26 06:15:52 +00:00
|
|
|
markerFactory: MarkerFactory<ChatMemberUpdated, Any> = ByChatChatMemberUpdatedMarkerFactory,
|
2021-03-12 08:36:10 +00:00
|
|
|
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatMemberUpdated>
|
2021-03-12 09:03:11 +00:00
|
|
|
) = onChatMemberUpdatedInternal<ChatMemberUpdatedUpdate>(
|
2021-03-12 08:36:10 +00:00
|
|
|
additionalFilter,
|
2021-09-13 17:30:01 +00:00
|
|
|
if (includeFilterByChatInBehaviourSubContext) ChatMemberUpdatedFilterByChat else null,
|
2021-06-26 06:15:52 +00:00
|
|
|
markerFactory,
|
2021-03-12 08:36:10 +00:00
|
|
|
scenarioReceiver
|
|
|
|
)
|
|
|
|
|
|
|
|
suspend fun BehaviourContext.onCommonChatMemberUpdated(
|
2021-09-13 17:30:01 +00:00
|
|
|
includeFilterByChatInBehaviourSubContext: Boolean,
|
2021-08-03 05:46:23 +00:00
|
|
|
additionalFilter: SimpleFilter<ChatMemberUpdated>? = null,
|
2021-06-26 06:15:52 +00:00
|
|
|
markerFactory: MarkerFactory<ChatMemberUpdated, Any> = ByChatChatMemberUpdatedMarkerFactory,
|
2021-03-12 08:36:10 +00:00
|
|
|
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatMemberUpdated>
|
2021-03-12 09:03:11 +00:00
|
|
|
) = onChatMemberUpdatedInternal<CommonChatMemberUpdatedUpdate>(
|
2021-03-12 08:36:10 +00:00
|
|
|
additionalFilter,
|
2021-09-13 17:30:01 +00:00
|
|
|
if (includeFilterByChatInBehaviourSubContext) ChatMemberUpdatedFilterByChat else null,
|
2021-06-26 06:15:52 +00:00
|
|
|
markerFactory,
|
2021-03-12 08:36:10 +00:00
|
|
|
scenarioReceiver
|
|
|
|
)
|
|
|
|
|
|
|
|
suspend fun BehaviourContext.onMyChatMemberUpdated(
|
2021-09-13 17:30:01 +00:00
|
|
|
includeFilterByChatInBehaviourSubContext: Boolean,
|
2021-08-03 05:46:23 +00:00
|
|
|
additionalFilter: SimpleFilter<ChatMemberUpdated>? = null,
|
2021-06-26 06:15:52 +00:00
|
|
|
markerFactory: MarkerFactory<ChatMemberUpdated, Any> = ByChatChatMemberUpdatedMarkerFactory,
|
2021-03-12 08:36:10 +00:00
|
|
|
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatMemberUpdated>
|
2021-03-12 09:03:11 +00:00
|
|
|
) = onChatMemberUpdatedInternal<MyChatMemberUpdatedUpdate>(
|
2021-03-12 08:36:10 +00:00
|
|
|
additionalFilter,
|
2021-09-13 17:30:01 +00:00
|
|
|
if (includeFilterByChatInBehaviourSubContext) ChatMemberUpdatedFilterByChat else null,
|
|
|
|
markerFactory,
|
|
|
|
scenarioReceiver
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
suspend fun BehaviourContext.onChatMemberUpdated(
|
|
|
|
initialFilter: SimpleFilter<ChatMemberUpdated>? = null,
|
|
|
|
subcontextUpdatesFilter: BehaviourContextAndTwoTypesReceiver<Boolean, ChatMemberUpdated, Update>? = ChatMemberUpdatedFilterByChat,
|
|
|
|
markerFactory: MarkerFactory<ChatMemberUpdated, Any> = ByChatChatMemberUpdatedMarkerFactory,
|
|
|
|
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatMemberUpdated>
|
|
|
|
) = onChatMemberUpdatedInternal<ChatMemberUpdatedUpdate>(
|
|
|
|
initialFilter,
|
|
|
|
subcontextUpdatesFilter,
|
|
|
|
markerFactory,
|
|
|
|
scenarioReceiver
|
|
|
|
)
|
|
|
|
|
|
|
|
suspend fun BehaviourContext.onCommonChatMemberUpdated(
|
|
|
|
initialFilter: SimpleFilter<ChatMemberUpdated>? = null,
|
|
|
|
subcontextUpdatesFilter: BehaviourContextAndTwoTypesReceiver<Boolean, ChatMemberUpdated, Update>? = ChatMemberUpdatedFilterByChat,
|
|
|
|
markerFactory: MarkerFactory<ChatMemberUpdated, Any> = ByChatChatMemberUpdatedMarkerFactory,
|
|
|
|
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatMemberUpdated>
|
|
|
|
) = onChatMemberUpdatedInternal<CommonChatMemberUpdatedUpdate>(
|
|
|
|
initialFilter,
|
|
|
|
subcontextUpdatesFilter,
|
|
|
|
markerFactory,
|
|
|
|
scenarioReceiver
|
|
|
|
)
|
|
|
|
|
|
|
|
suspend fun BehaviourContext.onMyChatMemberUpdated(
|
|
|
|
initialFilter: SimpleFilter<ChatMemberUpdated>? = null,
|
|
|
|
subcontextUpdatesFilter: BehaviourContextAndTwoTypesReceiver<Boolean, ChatMemberUpdated, Update>? = ChatMemberUpdatedFilterByChat,
|
|
|
|
markerFactory: MarkerFactory<ChatMemberUpdated, Any> = ByChatChatMemberUpdatedMarkerFactory,
|
|
|
|
scenarioReceiver: BehaviourContextAndTypeReceiver<Unit, ChatMemberUpdated>
|
|
|
|
) = onChatMemberUpdatedInternal<MyChatMemberUpdatedUpdate>(
|
|
|
|
initialFilter,
|
|
|
|
subcontextUpdatesFilter,
|
2021-06-26 06:15:52 +00:00
|
|
|
markerFactory,
|
2021-03-12 08:36:10 +00:00
|
|
|
scenarioReceiver
|
|
|
|
)
|