From aae9927af338cc478ad3d4e0f178dcab1423fa59 Mon Sep 17 00:00:00 2001 From: NovaFox161 Date: Thu, 16 Sep 2021 22:40:51 -0500 Subject: [PATCH] command registrar will no longer always update commands on boot --- .../network/discord/GlobalCommandRegistrar.kt | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/server/src/main/kotlin/org/dreamexposure/discal/server/network/discord/GlobalCommandRegistrar.kt b/server/src/main/kotlin/org/dreamexposure/discal/server/network/discord/GlobalCommandRegistrar.kt index 53f3d6d5..88bca84e 100644 --- a/server/src/main/kotlin/org/dreamexposure/discal/server/network/discord/GlobalCommandRegistrar.kt +++ b/server/src/main/kotlin/org/dreamexposure/discal/server/network/discord/GlobalCommandRegistrar.kt @@ -1,6 +1,5 @@ package org.dreamexposure.discal.server.network.discord -import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import discord4j.common.JacksonResources import discord4j.discordjson.json.ApplicationCommandData @@ -15,12 +14,11 @@ import org.springframework.stereotype.Component @Component class GlobalCommandRegistrar( - private val objectMapper: ObjectMapper, private val restClient: RestClient ) : ApplicationRunner { override fun run(args: ApplicationArguments?) { - val d4jMapper = JacksonResources.createFromObjectMapper(objectMapper) + val d4jMapper = JacksonResources.create() val matcher = PathMatchingResourcePatternResolver() val applicationService = restClient.applicationService @@ -53,11 +51,7 @@ class GlobalCommandRegistrar( continue } - val changed = discordCommand.description() != command.description().toOptional().orElse("") - || discordCommand.options() != command.options() - || discordCommand.defaultPermission() != command.defaultPermission() - - if (changed) { + if (hasChanged(discordCommand, command)) { updated++ applicationService.modifyGlobalApplicationCommand(applicationId, discordCommandId, command).block() } @@ -66,4 +60,17 @@ class GlobalCommandRegistrar( //Send log message with details on changes... LOGGER.info(DEFAULT, "Slash commands: $added Added | $updated Updated | $removed Removed") } + + private fun hasChanged(discordCommand: ApplicationCommandData, command: ApplicationCommandRequest): Boolean { + //Check description + if (!discordCommand.description().equals(command.description())) return true + + //Check default perm + val dCommandPerm = discordCommand.defaultPermission().toOptional().orElse(true) + val commandPerm = command.defaultPermission().toOptional().orElse(true) + if (dCommandPerm != commandPerm) return true + + //Check options + return !discordCommand.options().equals(command.options()) + } }