From 91259094edddb9d02065384950df00336bdae2de Mon Sep 17 00:00:00 2001 From: kageru Date: Sun, 12 Apr 2020 00:58:34 +0200 Subject: [PATCH] Permissions: match role purely by name --- src/main/kotlin/moe/kageru/kagebot/Util.kt | 4 ++-- .../kotlin/moe/kageru/kagebot/command/Permissions.kt | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/moe/kageru/kagebot/Util.kt b/src/main/kotlin/moe/kageru/kagebot/Util.kt index c3d1643..8de5424 100644 --- a/src/main/kotlin/moe/kageru/kagebot/Util.kt +++ b/src/main/kotlin/moe/kageru/kagebot/Util.kt @@ -20,9 +20,9 @@ object Util { return if (condition) op(this) else this } - fun hasOneOf(messageAuthor: MessageAuthor, roles: Set): Boolean { + fun hasOneOf(messageAuthor: MessageAuthor, roles: Set): Boolean { return messageAuthor.asUser().asOption().flatMap { user -> - user.roles().find { it in roles } + user.roles().find { it.name in roles } }.nonEmpty() } diff --git a/src/main/kotlin/moe/kageru/kagebot/command/Permissions.kt b/src/main/kotlin/moe/kageru/kagebot/command/Permissions.kt index c8bd7df..fadf61d 100644 --- a/src/main/kotlin/moe/kageru/kagebot/command/Permissions.kt +++ b/src/main/kotlin/moe/kageru/kagebot/command/Permissions.kt @@ -1,6 +1,7 @@ package moe.kageru.kagebot.command import arrow.core.Option +import arrow.core.toOption import moe.kageru.kagebot.Util import moe.kageru.kagebot.extensions.unwrap import org.javacord.api.entity.permission.Role @@ -11,12 +12,8 @@ class Permissions( hasNoneOf: List?, private val onlyDM: Boolean = false ) { - private val hasOneOf: Option> = resolveRoles(hasOneOf) - private val hasNoneOf: Option> = resolveRoles(hasNoneOf) - - private fun resolveRoles(hasOneOf: List?): Option> { - return Option.fromNullable(hasOneOf?.mapTo(mutableSetOf(), { Util.findRole(it).unwrap() })) - } + private val hasOneOf: Option> = hasOneOf?.toSet().toOption() + private val hasNoneOf: Option> = hasNoneOf?.toSet().toOption() fun isAllowed(message: MessageCreateEvent): Boolean = when { message.messageAuthor.isBotOwner -> true