diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ShowEmote.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ShowEmote.java new file mode 100644 index 000000000..b3f66de6a --- /dev/null +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ShowEmote.java @@ -0,0 +1,53 @@ +package dev.sheldan.abstracto.utility.command; + +import dev.sheldan.abstracto.command.Command; +import dev.sheldan.abstracto.command.HelpInfo; +import dev.sheldan.abstracto.command.execution.*; +import dev.sheldan.abstracto.templating.TemplateService; +import dev.sheldan.abstracto.utility.Utility; +import dev.sheldan.abstracto.utility.models.template.ShowEmoteLog; +import net.dv8tion.jda.api.entities.Emote; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class ShowEmote implements Command { + + private static final String SHOW_EMOTE_RESPONSE_TEMPLATE = "showEmote_response"; + + @Autowired + private TemplateService templateService; + + @Override + public Result execute(CommandContext commandContext) { + List parameters = commandContext.getParameters().getParameters(); + Object emoteParameter = parameters.get(0); + if(!(emoteParameter instanceof Emote)) { + return Result.fromError("No custom emote found."); + } + Emote emote = (Emote) emoteParameter; + ShowEmoteLog emoteLog = (ShowEmoteLog) ContextConverter.fromCommandContext(commandContext, ShowEmoteLog.class); + emoteLog.setEmote(emote); + String message = templateService.renderTemplate(SHOW_EMOTE_RESPONSE_TEMPLATE, emoteLog); + commandContext.getChannel().sendMessage(message).queue(); + return Result.fromSuccess(); + } + + @Override + public CommandConfiguration getConfiguration() { + List parameters = new ArrayList<>(); + parameters.add(Parameter.builder().name("emote").type(Emote.class).optional(false).build()); + HelpInfo helpInfo = HelpInfo.builder().templated(true).build(); + return CommandConfiguration.builder() + .name("showEmote") + .module(Utility.UTILITY) + .templated(true) + .causesReaction(false) + .parameters(parameters) + .help(helpInfo) + .build(); + } +} diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/accept/accept_description_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/accept/accept_description_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/accept/accept_description_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/accept/accept_description_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/accept/accept_long_help_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/accept/accept_long_help_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/accept/accept_long_help_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/accept/accept_long_help_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/accept/accept_usage_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/accept/accept_usage_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/accept/accept_usage_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/accept/accept_usage_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/reject/reject_description_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/reject/reject_description_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/reject/reject_description_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/reject/reject_description_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/reject/reject_long_help_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/reject/reject_long_help_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/reject/reject_long_help_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/reject/reject_long_help_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/reject/reject_usage_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/reject/reject_usage_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/reject/reject_usage_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/reject/reject_usage_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_description_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_description_en_US.ftl new file mode 100644 index 000000000..ef9c39b82 --- /dev/null +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_description_en_US.ftl @@ -0,0 +1 @@ +Retrieves the URL to the given emote. \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_long_help_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_long_help_en_US.ftl new file mode 100644 index 000000000..d3cee623a --- /dev/null +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_long_help_en_US.ftl @@ -0,0 +1 @@ +Shows the URL and the name of the given emote. \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_response_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_response_en_US.ftl new file mode 100644 index 000000000..8ae845e6e --- /dev/null +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_response_en_US.ftl @@ -0,0 +1 @@ +**Name**: ${emote.name} **Link**: ${emote.imageUrl} \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_usage_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_usage_en_US.ftl new file mode 100644 index 000000000..dbbd9d278 --- /dev/null +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/showEmote/showEmote_usage_en_US.ftl @@ -0,0 +1 @@ +showEmote \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_description_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_description_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_description_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_description_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_log_embed_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_log_embed_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_log_embed_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_log_embed_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_long_help_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_long_help_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_long_help_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_long_help_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_usage_en_US.ftl b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_usage_en_US.ftl similarity index 100% rename from abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/suggest/suggest_usage_en_US.ftl rename to abstracto-application/abstracto-modules/utility/utility-impl/src/main/resources/templates/commands/suggest/suggest_usage_en_US.ftl diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/ShowEmoteLog.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/ShowEmoteLog.java new file mode 100644 index 000000000..8a4ac8368 --- /dev/null +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/ShowEmoteLog.java @@ -0,0 +1,14 @@ +package dev.sheldan.abstracto.utility.models.template; + +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Emote; + +@Getter +@Setter +@SuperBuilder +public class ShowEmoteLog extends UserInitiatedServerContext { + private Emote emote; +} diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/SuggestionLog.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/SuggestionLog.java index e11d0d88f..ebd626147 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/SuggestionLog.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/SuggestionLog.java @@ -7,7 +7,9 @@ import lombok.Setter; import lombok.experimental.SuperBuilder; import net.dv8tion.jda.api.entities.Member; -@Getter @Setter @SuperBuilder +@Getter +@Setter +@SuperBuilder public class SuggestionLog extends UserInitiatedServerContext { private Suggestion suggestion; private Member suggester; diff --git a/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/post/ReactionPostExecution.java b/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/post/ReactionPostExecution.java index c87a9deb8..07c42f8be 100644 --- a/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/post/ReactionPostExecution.java +++ b/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/post/ReactionPostExecution.java @@ -13,6 +13,9 @@ public class ReactionPostExecution implements PostCommandExecution { public void execute(CommandContext commandContext, Result result, Command command) { if(result.getResult().equals(ResultState.ERROR)) { commandContext.getMessage().addReaction("⚠️").queue(); + if(result.getMessage() != null && result.getThrowable() == null){ + commandContext.getChannel().sendMessage(result.getMessage()).queue(); + } } else { if(command.getConfiguration().isCausesReaction()){ commandContext.getMessage().addReaction("⭐").queue(); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTargetCommand.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTargetCommand.java index 01b6d2900..2942cb80e 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTargetCommand.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTargetCommand.java @@ -1,12 +1,12 @@ package dev.sheldan.abstracto.core.commands.channels; import dev.sheldan.abstracto.command.Command; -import dev.sheldan.abstracto.command.execution.CommandConfiguration; -import dev.sheldan.abstracto.command.execution.CommandContext; -import dev.sheldan.abstracto.command.execution.Parameter; -import dev.sheldan.abstracto.command.execution.Result; +import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.management.ChannelManagementService; import dev.sheldan.abstracto.core.management.PostTargetManagement; +import dev.sheldan.abstracto.core.models.command.PostTargetErrorModel; +import dev.sheldan.abstracto.core.service.PostTargetService; +import dev.sheldan.abstracto.templating.TemplateService; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.GuildChannel; @@ -21,16 +21,36 @@ import java.util.List; @Slf4j public class PostTargetCommand implements Command { + public static final String POST_TARGET_NO_TARGET_TEMPLATE = "posttarget_no_target"; + public static final String POST_TARGET_INVALID_TARGET_TEMPLATE = "posttarget_invalid_target"; @Autowired private PostTargetManagement postTargetManagement; + @Autowired + private PostTargetService postTargetService; + @Autowired private ChannelManagementService channelManagementService; + @Autowired + private TemplateService templateService; + @Override public Result execute(CommandContext commandContext) { - GuildChannel channel = (GuildChannel) commandContext.getParameters().getParameters().get(1); + if(commandContext.getParameters().getParameters().isEmpty()) { + PostTargetErrorModel postTargetErrorModel = (PostTargetErrorModel) ContextConverter.fromCommandContext(commandContext, PostTargetErrorModel.class); + postTargetErrorModel.setValidPostTargets(postTargetService.getAvailablePostTargets()); + String errorMessage = templateService.renderTemplate(POST_TARGET_NO_TARGET_TEMPLATE, postTargetErrorModel); + return Result.fromError(errorMessage); + } String targetName = (String) commandContext.getParameters().getParameters().get(0); + if(!postTargetService.validPostTarget(targetName)) { + PostTargetErrorModel postTargetErrorModel = (PostTargetErrorModel) ContextConverter.fromCommandContext(commandContext, PostTargetErrorModel.class); + postTargetErrorModel.setValidPostTargets(postTargetService.getAvailablePostTargets()); + String errorMessage = templateService.renderTemplate(POST_TARGET_INVALID_TARGET_TEMPLATE, postTargetErrorModel); + return Result.fromError(errorMessage); + } + GuildChannel channel = (GuildChannel) commandContext.getParameters().getParameters().get(1); Guild guild = channel.getGuild(); postTargetManagement.createOrUpdate(targetName, guild.getIdLong(), channel.getIdLong()); log.info("Setting posttarget {} in {} to {}", targetName, guild.getIdLong(), channel.getId()); @@ -39,8 +59,8 @@ public class PostTargetCommand implements Command { @Override public CommandConfiguration getConfiguration() { - Parameter channel = Parameter.builder().name("channel").type(TextChannel.class).description("The channel to post towards").build(); - Parameter postTargetName = Parameter.builder().name("name").type(String.class).description("The name of the post target to redirect").build(); + Parameter channel = Parameter.builder().name("channel").type(TextChannel.class).optional(true).description("The channel to post towards").build(); + Parameter postTargetName = Parameter.builder().name("name").type(String.class).optional(true).description("The name of the post target to redirect").build(); List parameters = Arrays.asList(postTargetName, channel); return CommandConfiguration.builder() .name("posttarget") diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java index 4c06ab50e..b44811df8 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java @@ -6,7 +6,7 @@ import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.command.execution.Result; -import dev.sheldan.abstracto.core.commands.utility.model.EchoModel; +import dev.sheldan.abstracto.core.models.command.EchoModel; import dev.sheldan.abstracto.templating.TemplateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java index dfb99cdbb..921492547 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java @@ -4,7 +4,7 @@ import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.command.execution.Result; -import dev.sheldan.abstracto.core.commands.utility.model.PingModel; +import dev.sheldan.abstracto.core.models.command.PingModel; import dev.sheldan.abstracto.templating.TemplateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java index e1bb46167..cc9af4eed 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java @@ -1,5 +1,6 @@ package dev.sheldan.abstracto.core.service; +import dev.sheldan.abstracto.core.DynamicKeyLoader; import dev.sheldan.abstracto.core.exception.ConfigurationException; import dev.sheldan.abstracto.core.management.PostTargetManagement; import dev.sheldan.abstracto.core.management.ServerManagementService; @@ -12,6 +13,7 @@ import net.dv8tion.jda.api.entities.TextChannel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.List; import java.util.concurrent.CompletableFuture; @@ -28,6 +30,9 @@ public class PostTargetServiceBean implements PostTargetService { @Autowired private Bot botService; + @Autowired + private DynamicKeyLoader dynamicKeyLoader; + @Override public CompletableFuture sendTextInPostTarget(String text, PostTarget target) { TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target); @@ -77,4 +82,15 @@ public class PostTargetServiceBean implements PostTargetService { PostTarget postTarget = this.getPostTarget(postTargetName, serverId); return this.sendEmbedInPostTarget(embed, postTarget); } + + @Override + public boolean validPostTarget(String name) { + List possiblePostTargets = dynamicKeyLoader.getPostTargetsAsList(); + return possiblePostTargets.contains(name); + } + + @Override + public List getAvailablePostTargets() { + return dynamicKeyLoader.getPostTargetsAsList(); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java index ed028e250..a2a009df8 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java @@ -8,6 +8,7 @@ import dev.sheldan.abstracto.core.models.database.PostTarget; import dev.sheldan.abstracto.core.management.ChannelManagementService; import dev.sheldan.abstracto.core.management.PostTargetManagement; import dev.sheldan.abstracto.core.management.ServerManagementService; +import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.repository.PostTargetRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -31,11 +32,13 @@ public class PostTargetManagementBean implements PostTargetManagement { @Autowired private DynamicKeyLoader dynamicKeyLoader; + @Autowired + private PostTargetService postTargetService; + @Override public void createPostTarget(String name, AServer server, AChannel targetChannel) { - List possiblePostTargets = dynamicKeyLoader.getPostTargetsAsList(); - if(!possiblePostTargets.contains(name)) { - throw new ConfigurationException("PostTarget not found. Possible values are: " + String.join(", ", possiblePostTargets)); + if(!postTargetService.validPostTarget(name)) { + throw new ConfigurationException("PostTarget not found. Possible values are: " + String.join(", ", dynamicKeyLoader.getPostTargetsAsList())); } log.info("Creating post target {} pointing towards {}", name, targetChannel); postTargetRepository.save(PostTarget.builder().name(name).channelReference(targetChannel).serverReference(server).build()); diff --git a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_description_en_US.ftl b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_description_en_US.ftl new file mode 100644 index 000000000..05a541a96 --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_description_en_US.ftl @@ -0,0 +1 @@ +Sets the target of the given posts to a channel. \ No newline at end of file diff --git a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_invalid_target_en_US.ftl b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_invalid_target_en_US.ftl new file mode 100644 index 000000000..6051fe818 --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_invalid_target_en_US.ftl @@ -0,0 +1 @@ +The provided post target is invalid. <#include "posttarget_no_target"> \ No newline at end of file diff --git a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_long_help_en_US.ftl b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_long_help_en_US.ftl new file mode 100644 index 000000000..2ba1c6cdd --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_long_help_en_US.ftl @@ -0,0 +1,2 @@ +Sets the target of the given posts to a channel. You have to mention the channel with #. +The available post targets will be printed when executed with no parameters. \ No newline at end of file diff --git a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_no_target_en_US.ftl b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_no_target_en_US.ftl new file mode 100644 index 000000000..fb7b706a5 --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_no_target_en_US.ftl @@ -0,0 +1 @@ +The available post targets are: ${validPostTargets?join(", ")} \ No newline at end of file diff --git a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_usage_en_US.ftl b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_usage_en_US.ftl new file mode 100644 index 000000000..99b53751e --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/posttarget/posttarget_usage_en_US.ftl @@ -0,0 +1 @@ +posttarget \ No newline at end of file diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/EchoModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/EchoModel.java similarity index 74% rename from abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/EchoModel.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/EchoModel.java index b577d0fc2..23f1a1d49 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/EchoModel.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/EchoModel.java @@ -1,8 +1,7 @@ -package dev.sheldan.abstracto.core.commands.utility.model; +package dev.sheldan.abstracto.core.models.command; import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; -import lombok.Builder; import lombok.Getter; import lombok.experimental.SuperBuilder; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/PingModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/PingModel.java similarity index 74% rename from abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/PingModel.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/PingModel.java index 22cf95f5b..c3b22897b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/PingModel.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/PingModel.java @@ -1,7 +1,6 @@ -package dev.sheldan.abstracto.core.commands.utility.model; +package dev.sheldan.abstracto.core.models.command; import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; -import lombok.Builder; import lombok.Getter; import lombok.experimental.SuperBuilder; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/PostTargetErrorModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/PostTargetErrorModel.java new file mode 100644 index 000000000..2c0bfe7a1 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/command/PostTargetErrorModel.java @@ -0,0 +1,15 @@ +package dev.sheldan.abstracto.core.models.command; + +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +@Setter +@Getter +@SuperBuilder +public class PostTargetErrorModel extends UserInitiatedServerContext { + private List validPostTargets; +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java index cf37a09c3..a36f65b8d 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java @@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.models.database.PostTarget; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; +import java.util.List; import java.util.concurrent.CompletableFuture; public interface PostTargetService { @@ -11,4 +12,6 @@ public interface PostTargetService { CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, PostTarget target); CompletableFuture sendTextInPostTarget(String text, String postTargetName, Long serverId); CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, String postTargetName, Long serverId); + boolean validPostTarget(String name); + List getAvailablePostTargets(); }