package dev.inmo.tgbotapi.extensions.utils.chat_events import com.github.insanusmokrassar.TelegramBotAPI.types.message.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ChatEventMessage import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.mapNotNull import kotlin.reflect.KClass fun Flow.divideBySource(contentType: KClass) = mapNotNull { if (contentType.isInstance(it)) { @Suppress("UNCHECKED_CAST") it as T } else { null } } fun Flow.onlyChannelEvents() = divideBySource(ChannelEventMessage::class) fun Flow.onlyGroupEvents() = divideBySource(CommonGroupEventMessage::class) fun Flow.onlySupergroupEvents() = divideBySource(CommonSupergroupEventMessage::class)