From 71c1445439ec42372837b743376668c4f2a2ffa8 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:30:06 +0200 Subject: [PATCH] [AB-112] adding command parameter alternatives to bonk/pat to use the message author the command was replied to --- .../imagegeneration/command/Bonk.java | 18 ++++++++++++++---- .../abstracto/imagegeneration/command/Pat.java | 18 ++++++++++++++---- .../handler/CombinedParameterHandlerImpl.java | 4 +--- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Bonk.java b/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Bonk.java index feff46de1..84347ce75 100644 --- a/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Bonk.java +++ b/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Bonk.java @@ -7,6 +7,7 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; +import dev.sheldan.abstracto.core.command.handler.parameter.CombinedParameter; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; @@ -21,16 +22,18 @@ import dev.sheldan.abstracto.imagegeneration.config.ImageGenerationFeatureDefini import dev.sheldan.abstracto.imagegeneration.config.ImageGenerationSlashCommandNames; import dev.sheldan.abstracto.imagegeneration.service.ImageGenerationService; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.File; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.concurrent.CompletableFuture; +import static dev.sheldan.abstracto.core.command.config.Parameter.ADDITIONAL_TYPES_KEY; + @Component public class Bonk extends AbstractConditionableCommand { public static final String MEMBER_PARAMETER_KEY = "member"; @@ -65,7 +68,11 @@ public class Bonk extends AbstractConditionableCommand { if(parameters.isEmpty()) { member = commandContext.getAuthor(); } else { - member = (Member) parameters.get(0); + if(parameters.get(0) instanceof Message) { + member = ((Message) parameters.get(0)).getMember(); + } else { + member = (Member) parameters.get(0); + } } File bonkGifFile = imageGenerationService.getBonkGif(member.getEffectiveAvatar().getUrl(imageSize)); MessageToSend messageToSend = templateService.renderEmbedTemplate(BONK_EMBED_TEMPLATE_KEY, new Object()); @@ -107,10 +114,13 @@ public class Bonk extends AbstractConditionableCommand { @Override public CommandConfiguration getConfiguration() { List parameters = new ArrayList<>(); + Map parameterAlternatives = new HashMap<>(); + parameterAlternatives.put(ADDITIONAL_TYPES_KEY, Arrays.asList(Message.class, Member.class)); Parameter memberParameter = Parameter .builder() .name(MEMBER_PARAMETER_KEY) - .type(Member.class) + .type(CombinedParameter.class) + .additionalInfo(parameterAlternatives) .templated(true) .optional(true) .build(); diff --git a/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Pat.java b/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Pat.java index 071e1803d..dac9a7088 100644 --- a/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Pat.java +++ b/abstracto-application/abstracto-modules/image-generation/image-generation-impl/src/main/java/dev/sheldan/abstracto/imagegeneration/command/Pat.java @@ -7,6 +7,7 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; +import dev.sheldan.abstracto.core.command.handler.parameter.CombinedParameter; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; @@ -21,16 +22,18 @@ import dev.sheldan.abstracto.imagegeneration.config.ImageGenerationFeatureDefini import dev.sheldan.abstracto.imagegeneration.config.ImageGenerationSlashCommandNames; import dev.sheldan.abstracto.imagegeneration.service.ImageGenerationService; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.File; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.concurrent.CompletableFuture; +import static dev.sheldan.abstracto.core.command.config.Parameter.ADDITIONAL_TYPES_KEY; + @Component public class Pat extends AbstractConditionableCommand { public static final String MEMBER_PARAMETER_KEY = "member"; @@ -65,7 +68,11 @@ public class Pat extends AbstractConditionableCommand { if(parameters.isEmpty()) { member = commandContext.getAuthor(); } else { - member = (Member) parameters.get(0); + if(parameters.get(0) instanceof Message) { + member = ((Message) parameters.get(0)).getMember(); + } else { + member = (Member) parameters.get(0); + } } File patGifFile = imageGenerationService.getPatGif(member.getEffectiveAvatar().getUrl(imageSize)); MessageToSend messageToSend = templateService.renderEmbedTemplate(PAT_EMBED_TEMPLATE_KEY, new Object()); @@ -107,10 +114,13 @@ public class Pat extends AbstractConditionableCommand { @Override public CommandConfiguration getConfiguration() { List parameters = new ArrayList<>(); + Map parameterAlternatives = new HashMap<>(); + parameterAlternatives.put(ADDITIONAL_TYPES_KEY, Arrays.asList(Message.class, Member.class)); Parameter memberParameter = Parameter .builder() .name(MEMBER_PARAMETER_KEY) - .type(Member.class) + .type(CombinedParameter.class) + .additionalInfo(parameterAlternatives) .templated(true) .optional(true) .build(); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java index 7e13b0c84..2e5e5f67c 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java @@ -53,9 +53,7 @@ public class CombinedParameterHandlerImpl implements CombinedParametersHandler { } } } catch (Exception e) { - CompletableFuture exceptionFuture = new CompletableFuture<>(); - futures.add(exceptionFuture); - exceptionFuture.completeExceptionally(e); + futures.add(CompletableFuture.failedFuture(e)); } } }