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)
|