2020-10-04 10:57:39 +00:00
|
|
|
package dev.inmo.tgbotapi.extensions.utils.chat_events
|
2020-05-10 10:25:42 +00:00
|
|
|
|
|
|
|
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 <T : ChatEventMessage> Flow<ChatEventMessage>.divideBySource(contentType: KClass<T>) = mapNotNull {
|
|
|
|
if (contentType.isInstance(it)) {
|
|
|
|
@Suppress("UNCHECKED_CAST")
|
|
|
|
it as T
|
|
|
|
} else {
|
|
|
|
null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-05-10 10:33:44 +00:00
|
|
|
fun Flow<ChatEventMessage>.onlyChannelEvents() = divideBySource(ChannelEventMessage::class)
|
2020-09-26 23:20:18 +00:00
|
|
|
fun Flow<ChatEventMessage>.onlyGroupEvents() = divideBySource(CommonGroupEventMessage::class)
|
|
|
|
fun Flow<ChatEventMessage>.onlySupergroupEvents() = divideBySource(CommonSupergroupEventMessage::class)
|