added template support to echo

replaced HashMaps for templates with concrete models, so the interface is easier known
added rendering method for objects directly
added default parameters available for commands
split up service beans for server/channel into management and service bean
added server reference in AChannel
refactored join/leave listener
This commit is contained in:
Sheldan
2020-03-17 19:41:25 +01:00
parent 0521a1ab44
commit 167bbb0f8b
41 changed files with 399 additions and 205 deletions

View File

@@ -6,6 +6,7 @@ import dev.sheldan.abstracto.command.execution.Configuration;
import dev.sheldan.abstracto.command.execution.Parameter;
import dev.sheldan.abstracto.command.meta.CommandRegistry;
import dev.sheldan.abstracto.command.meta.UnParsedCommandParameter;
import dev.sheldan.abstracto.commands.management.exception.CommandNotFoundException;
import net.dv8tion.jda.api.entities.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@@ -2,12 +2,12 @@ package dev.sheldan.abstracto.commands.management;
import dev.sheldan.abstracto.command.Command;
import dev.sheldan.abstracto.command.PostCommandExecution;
import dev.sheldan.abstracto.command.execution.Context;
import dev.sheldan.abstracto.command.execution.Parameter;
import dev.sheldan.abstracto.command.execution.Parameters;
import dev.sheldan.abstracto.command.execution.Result;
import dev.sheldan.abstracto.command.execution.*;
import dev.sheldan.abstracto.command.meta.UnParsedCommandParameter;
import net.dv8tion.jda.api.entities.Guild;
import dev.sheldan.abstracto.core.management.ChannelManagementService;
import dev.sheldan.abstracto.core.management.ServerManagementService;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import net.dv8tion.jda.api.entities.GuildChannel;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
@@ -29,6 +29,12 @@ public class CommandReceivedHandler extends ListenerAdapter {
@Autowired
private PostCommandExecution execution;
@Autowired
private ServerManagementService serverManagementService;
@Autowired
private ChannelManagementService channelManagementService;
@Override
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
if(!manager.isCommand(event.getMessage())) {
@@ -40,16 +46,23 @@ public class CommandReceivedHandler extends ListenerAdapter {
String withoutPrefix = parameters.get(0).substring(1);
Command foundCommand = manager.findCommandByParameters(withoutPrefix, unparsedParameter);
Parameters parsedParameters = getParsedParameters(unparsedParameter, foundCommand, event.getMessage());
Context context = Context.builder()
CommandContext commandContext = CommandContext.builder()
.author(event.getAuthor())
.guild(event.getGuild())
.channel(event.getTextChannel())
.message(event.getMessage())
.parameters(parsedParameters)
.jda(event.getJDA())
.commandTemplateContext(buildTemplateParameter(event))
.build();
Result result = foundCommand.execute(context);
execution.execute(context, result, foundCommand);
Result result = foundCommand.execute(commandContext);
execution.execute(commandContext, result, foundCommand);
}
private CommandTemplateContext buildTemplateParameter(MessageReceivedEvent event) {
AChannel channel = channelManagementService.loadChannel(event.getChannel().getIdLong());
AServer server = serverManagementService.loadServer(event.getGuild().getIdLong());
return CommandTemplateContext.builder().channel(channel).server(server).build();
}
public Parameters getParsedParameters(UnParsedCommandParameter unParsedCommandParameter, Command command, Message message){

View File

@@ -1,7 +0,0 @@
package dev.sheldan.abstracto.commands.management;
public class PostTargetException extends RuntimeException {
public PostTargetException(String message) {
super(message);
}
}

View File

@@ -2,16 +2,16 @@ package dev.sheldan.abstracto.commands.management;
import dev.sheldan.abstracto.command.Command;
import dev.sheldan.abstracto.command.PostCommandExecution;
import dev.sheldan.abstracto.command.execution.Context;
import dev.sheldan.abstracto.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.Result;
import org.springframework.stereotype.Service;
@Service
public class ReactionPostExecution implements PostCommandExecution {
@Override
public void execute(Context context, Result result, Command command) {
public void execute(CommandContext commandContext, Result result, Command command) {
if(command.getConfiguration().isCausesReaction()){
context.getMessage().addReaction("").queue();
commandContext.getMessage().addReaction("").queue();
}
}
}

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.commands.management;
package dev.sheldan.abstracto.commands.management.exception;
public class CommandNotFoundException extends RuntimeException {
}