TelegramBotApiLibraries/cache/admins/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/admins/MessageSenderVerification.kt

44 lines
1.2 KiB
Kotlin
Raw Normal View History

2021-02-23 07:18:22 +00:00
package dev.inmo.tgbotapi.libraries.cache.admins
2022-11-10 15:25:31 +00:00
import dev.inmo.tgbotapi.types.IdChatIdentifier
2021-02-23 07:18:22 +00:00
import dev.inmo.tgbotapi.types.UserId
import dev.inmo.tgbotapi.types.message.abstracts.*
2022-09-10 12:54:25 +00:00
suspend inline fun AdminsCacheAPI.isAdmin(message: Message) = when (message) {
2021-02-23 07:21:04 +00:00
is CommonGroupContentMessage<*> -> isAdmin(message.chat.id, message.user.id)
2021-02-23 07:18:22 +00:00
is AnonymousGroupContentMessage<*> -> true
else -> false
}
2022-09-10 12:54:25 +00:00
suspend inline fun AdminsCacheAPI.verifyMessageFromAdmin(message: Message) = isAdmin(message)
suspend inline fun <R : Any> AdminsCacheAPI.doIfAdmin(
2022-11-10 15:25:31 +00:00
chatId: IdChatIdentifier,
2022-09-10 12:54:25 +00:00
userId: UserId,
block: () -> R
) = if(isAdmin(chatId, userId)) {
block()
} else {
null
}
suspend inline fun <R : Any> AdminsCacheAPI.doIfAdmin(
message: Message,
block: () -> R
) = if(isAdmin(message)) {
block()
} else {
null
}
suspend inline fun <R> ContentMessage<*>.doIfAdmin(adminsCacheAPI: AdminsCacheAPI, block: () -> R): R? {
val verified = adminsCacheAPI.isAdmin(this)
2021-02-23 07:18:22 +00:00
return if (verified) {
block()
} else {
null
}
}
2022-09-10 12:54:25 +00:00
suspend inline fun <R> ContentMessage<*>.doAfterVerification(adminsCacheAPI: AdminsCacheAPI, block: () -> R) = doIfAdmin(adminsCacheAPI, block)