From 19a12199488309cf3ee52acfa51160442f54313b Mon Sep 17 00:00:00 2001 From: Nikky Date: Thu, 2 Nov 2023 19:16:45 +0100 Subject: [PATCH] fix parsing --- src/main/kotlin/moe/nikky/RoleChooserConfig.kt | 4 ++-- src/main/kotlin/moe/nikky/RoleManagementExtension.kt | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/moe/nikky/RoleChooserConfig.kt b/src/main/kotlin/moe/nikky/RoleChooserConfig.kt index 0137a95..6d8dfd2 100644 --- a/src/main/kotlin/moe/nikky/RoleChooserConfig.kt +++ b/src/main/kotlin/moe/nikky/RoleChooserConfig.kt @@ -72,8 +72,8 @@ data class RoleMappingConfig( val roleName: String, ) : Data { suspend fun reactionEmoji(guildBehavior: GuildBehavior): ReactionEmoji { - if(emoji.startsWith("<") && emoji.endsWith(">")) { - val id = emoji.substringAfterLast(":").substringBefore("<") + if(emoji.startsWith('<') && emoji.contains(":") && emoji.endsWith(">")) { + val id = emoji.substringAfterLast(":").substringBefore(">") return guildBehavior.emojis.first { it.id.toString() == id } .let { logger.traceF { "found emoji ${it.name}, turning into reaction emoji" } diff --git a/src/main/kotlin/moe/nikky/RoleManagementExtension.kt b/src/main/kotlin/moe/nikky/RoleManagementExtension.kt index 2304904..1c26707 100644 --- a/src/main/kotlin/moe/nikky/RoleManagementExtension.kt +++ b/src/main/kotlin/moe/nikky/RoleManagementExtension.kt @@ -63,6 +63,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.toList @@ -930,7 +931,13 @@ class RoleManagementExtension : Extension(), Klogging { roleChoosers = oldConfig.roleChoosers.mapValues { (_, roleChooserConfig) -> roleChooserConfig.copy( roleMapping = roleChooserConfig.roleMapping.map { mapping -> - val emoji = guild.emojis.firstOrNull { it.name == mapping.emoji || it.id.toString() == mapping.emoji } + + val emoji = if(mapping.emoji.startsWith("<") && mapping.emoji.endsWith(">")) { + val id = mapping.emoji.substringAfterLast(":").substringBefore(">") + guild.emojis.firstOrNull { it.id.toString() == id } + } else { + guild.emojis.firstOrNull { it.name == mapping.emoji || it.id.toString() == mapping.emoji } + } if(emoji != null) { mapping.copy( emojiName = emoji.name,