discord-kagebot/src/main/kotlin/moe/kageru/kagebot/command/Permissions.kt

24 lines
825 B
Kotlin
Raw Normal View History

package moe.kageru.kagebot.command
2019-11-11 19:58:21 +01:00
import arrow.core.Option
2020-04-12 00:58:34 +02:00
import arrow.core.toOption
import moe.kageru.kagebot.Util
import org.javacord.api.event.message.MessageCreateEvent
class Permissions(
2019-11-14 15:10:30 +01:00
hasOneOf: List<String>?,
hasNoneOf: List<String>?,
2023-08-14 10:14:19 +02:00
private val onlyDM: Boolean = false,
) {
2020-04-12 00:58:34 +02:00
private val hasOneOf: Option<Set<String>> = hasOneOf?.toSet().toOption()
private val hasNoneOf: Option<Set<String>> = hasNoneOf?.toSet().toOption()
2019-11-14 15:10:30 +01:00
fun isAllowed(message: MessageCreateEvent): Boolean = when {
message.messageAuthor.isBotOwner -> true
onlyDM && !message.isPrivateMessage -> false
// returns true if the Option is empty (case for no restrictions)
else -> hasOneOf.forall { Util.hasOneOf(message.messageAuthor, it) } &&
hasNoneOf.forall { !Util.hasOneOf(message.messageAuthor, it) }
}
}