mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-12 11:17:58 +00:00
[AB-225] adding parameter handler for messages
reworking parameter handling in command received handler adding string parameter handler to explicitly parse strings
This commit is contained in:
@@ -6,7 +6,9 @@ import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@@ -25,4 +27,8 @@ public class Parameter implements Serializable {
|
||||
private Boolean templated = false;
|
||||
@Builder.Default
|
||||
private List<ParameterValidator> validators = new ArrayList<>();
|
||||
@Builder.Default
|
||||
private Map<String, Object> additionalInfo = new HashMap<>();
|
||||
|
||||
public static final String ADDITIONAL_TYPES_KEY = "ADDITIONAL_TYPES";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.sheldan.abstracto.core.command.config;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ParseResult {
|
||||
private Parameter parameter;
|
||||
private Object result;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.command.execution;
|
||||
|
||||
public enum ParameterPieceType {
|
||||
STRING, ATTACHMENT
|
||||
STRING, ATTACHMENT, REFERENCED_MESSAGE
|
||||
}
|
||||
|
||||
@@ -17,6 +17,13 @@ public class UnParsedCommandParameter {
|
||||
this.parameters = new ArrayList<>();
|
||||
Matcher m = SPLIT_REGEX.matcher(parameters);
|
||||
boolean skippedCommand = false;
|
||||
if(message.getReferencedMessage() != null) {
|
||||
this.parameters.add(UnparsedCommandParameterPiece
|
||||
.builder()
|
||||
.value(message.getReferencedMessage())
|
||||
.type(ParameterPieceType.REFERENCED_MESSAGE)
|
||||
.build());
|
||||
}
|
||||
while (m.find()) {
|
||||
if(!skippedCommand) {
|
||||
skippedCommand = true;
|
||||
@@ -35,7 +42,11 @@ public class UnParsedCommandParameter {
|
||||
}
|
||||
}
|
||||
message.getAttachments().forEach(attachment ->
|
||||
this.parameters.add(UnparsedCommandParameterPiece.builder().value(attachment).type(ParameterPieceType.ATTACHMENT).build()));
|
||||
this.parameters.add(UnparsedCommandParameterPiece
|
||||
.builder()
|
||||
.value(attachment)
|
||||
.type(ParameterPieceType.ATTACHMENT)
|
||||
.build()));
|
||||
}
|
||||
private List<UnparsedCommandParameterPiece> parameters;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
@@ -9,7 +11,7 @@ import java.util.concurrent.CompletableFuture;
|
||||
public interface CommandParameterHandler {
|
||||
boolean handles(Class clazz);
|
||||
default boolean async() { return false; }
|
||||
default Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Class clazz, Message context) { return new Object();}
|
||||
default CompletableFuture<Object> handleAsync(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Class clazz, Message context) { return CompletableFuture.completedFuture(null); }
|
||||
default Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { return new Object();}
|
||||
default CompletableFuture<Object> handleAsync(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { return CompletableFuture.completedFuture(null); }
|
||||
Integer getPriority();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.parameter;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
public class CombinedParameter {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface CombinedParametersHandler extends CommandParameterHandler {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface MessageParameterHandler extends CommandParameterHandler {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface StringParameterHandler extends CommandParameterHandler {
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.core.command.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionResult;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameters;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter;
|
||||
@@ -28,4 +29,5 @@ public interface CommandService {
|
||||
ConditionResult isCommandExecutable(Command command, CommandContext commandContext);
|
||||
UnParsedCommandParameter getUnParsedCommandParameter(String messageContent, Message message);
|
||||
CompletableFuture<Parameters> getParametersForCommand(String commandName, Message messageContainingContent);
|
||||
Parameter cloneParameter(Parameter parameter);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user