mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-24 13:44:33 +00:00
[AB-112] adding command parameter alternatives to bonk/pat to use the message author the command was replied to
This commit is contained in:
@@ -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.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
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.config.FeatureDefinition;
|
||||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig;
|
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.config.ImageGenerationSlashCommandNames;
|
||||||
import dev.sheldan.abstracto.imagegeneration.service.ImageGenerationService;
|
import dev.sheldan.abstracto.imagegeneration.service.ImageGenerationService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import static dev.sheldan.abstracto.core.command.config.Parameter.ADDITIONAL_TYPES_KEY;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class Bonk extends AbstractConditionableCommand {
|
public class Bonk extends AbstractConditionableCommand {
|
||||||
public static final String MEMBER_PARAMETER_KEY = "member";
|
public static final String MEMBER_PARAMETER_KEY = "member";
|
||||||
@@ -65,7 +68,11 @@ public class Bonk extends AbstractConditionableCommand {
|
|||||||
if(parameters.isEmpty()) {
|
if(parameters.isEmpty()) {
|
||||||
member = commandContext.getAuthor();
|
member = commandContext.getAuthor();
|
||||||
} else {
|
} 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));
|
File bonkGifFile = imageGenerationService.getBonkGif(member.getEffectiveAvatar().getUrl(imageSize));
|
||||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(BONK_EMBED_TEMPLATE_KEY, new Object());
|
MessageToSend messageToSend = templateService.renderEmbedTemplate(BONK_EMBED_TEMPLATE_KEY, new Object());
|
||||||
@@ -107,10 +114,13 @@ public class Bonk extends AbstractConditionableCommand {
|
|||||||
@Override
|
@Override
|
||||||
public CommandConfiguration getConfiguration() {
|
public CommandConfiguration getConfiguration() {
|
||||||
List<Parameter> parameters = new ArrayList<>();
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
Map<String, Object> parameterAlternatives = new HashMap<>();
|
||||||
|
parameterAlternatives.put(ADDITIONAL_TYPES_KEY, Arrays.asList(Message.class, Member.class));
|
||||||
Parameter memberParameter = Parameter
|
Parameter memberParameter = Parameter
|
||||||
.builder()
|
.builder()
|
||||||
.name(MEMBER_PARAMETER_KEY)
|
.name(MEMBER_PARAMETER_KEY)
|
||||||
.type(Member.class)
|
.type(CombinedParameter.class)
|
||||||
|
.additionalInfo(parameterAlternatives)
|
||||||
.templated(true)
|
.templated(true)
|
||||||
.optional(true)
|
.optional(true)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -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.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
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.config.FeatureDefinition;
|
||||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig;
|
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.config.ImageGenerationSlashCommandNames;
|
||||||
import dev.sheldan.abstracto.imagegeneration.service.ImageGenerationService;
|
import dev.sheldan.abstracto.imagegeneration.service.ImageGenerationService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import static dev.sheldan.abstracto.core.command.config.Parameter.ADDITIONAL_TYPES_KEY;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class Pat extends AbstractConditionableCommand {
|
public class Pat extends AbstractConditionableCommand {
|
||||||
public static final String MEMBER_PARAMETER_KEY = "member";
|
public static final String MEMBER_PARAMETER_KEY = "member";
|
||||||
@@ -65,7 +68,11 @@ public class Pat extends AbstractConditionableCommand {
|
|||||||
if(parameters.isEmpty()) {
|
if(parameters.isEmpty()) {
|
||||||
member = commandContext.getAuthor();
|
member = commandContext.getAuthor();
|
||||||
} else {
|
} 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));
|
File patGifFile = imageGenerationService.getPatGif(member.getEffectiveAvatar().getUrl(imageSize));
|
||||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(PAT_EMBED_TEMPLATE_KEY, new Object());
|
MessageToSend messageToSend = templateService.renderEmbedTemplate(PAT_EMBED_TEMPLATE_KEY, new Object());
|
||||||
@@ -107,10 +114,13 @@ public class Pat extends AbstractConditionableCommand {
|
|||||||
@Override
|
@Override
|
||||||
public CommandConfiguration getConfiguration() {
|
public CommandConfiguration getConfiguration() {
|
||||||
List<Parameter> parameters = new ArrayList<>();
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
Map<String, Object> parameterAlternatives = new HashMap<>();
|
||||||
|
parameterAlternatives.put(ADDITIONAL_TYPES_KEY, Arrays.asList(Message.class, Member.class));
|
||||||
Parameter memberParameter = Parameter
|
Parameter memberParameter = Parameter
|
||||||
.builder()
|
.builder()
|
||||||
.name(MEMBER_PARAMETER_KEY)
|
.name(MEMBER_PARAMETER_KEY)
|
||||||
.type(Member.class)
|
.type(CombinedParameter.class)
|
||||||
|
.additionalInfo(parameterAlternatives)
|
||||||
.templated(true)
|
.templated(true)
|
||||||
.optional(true)
|
.optional(true)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -53,9 +53,7 @@ public class CombinedParameterHandlerImpl implements CombinedParametersHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CompletableFuture<Object> exceptionFuture = new CompletableFuture<>();
|
futures.add(CompletableFuture.failedFuture(e));
|
||||||
futures.add(exceptionFuture);
|
|
||||||
exceptionFuture.completeExceptionally(e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user