From a8c2dfe15ae19f830c66e590e324797b452dec03 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Sun, 16 Feb 2025 00:46:49 +0100 Subject: [PATCH] [AB-xxx] removing all message command implementations of lesser used message commands --- .../entertainment/command/EightBall.java | 16 +- .../entertainment/command/Roulette.java | 17 +- .../command/economy/CreditGamble.java | 22 +- .../command/economy/CreditLeaderboard.java | 34 +-- .../command/economy/Credits.java | 26 +-- .../entertainment/command/economy/Slots.java | 24 +-- .../command/economy/TransferCredits.java | 25 +-- .../entertainment/command/games/Mines.java | 55 +---- .../experience/command/DisableExpForRole.java | 18 +- .../experience/command/DisableExpGain.java | 13 +- .../experience/command/EnableExpForRole.java | 17 +- .../experience/command/EnableExpGain.java | 13 +- .../command/ExpLevelUpNotification.java | 9 +- .../experience/command/ExpScale.java | 11 +- .../command/ListDisabledExperienceRoles.java | 16 +- .../giveaway/command/AddGiveawayKey.java | 200 +++++++++--------- .../giveaway/command/CancelGiveaway.java | 1 + .../giveaway/command/GreateGiveaway.java | 1 + .../giveaway/command/GreateKeyGiveaway.java | 1 + .../moderation/command/DeleteNote.java | 10 +- .../moderation/command/DeleteWarning.java | 10 +- .../moderation/command/Infractions.java | 33 +-- .../abstracto/moderation/command/Mute.java | 41 +--- .../abstracto/moderation/command/Mutes.java | 40 +--- .../moderation/command/MyWarnings.java | 20 +- .../abstracto/moderation/command/Purge.java | 16 +- .../moderation/command/SlowMode.java | 28 +-- .../abstracto/moderation/command/UnBan.java | 12 +- .../abstracto/moderation/command/UnMute.java | 16 +- .../moderation/command/UserNoteCommand.java | 15 +- .../moderation/command/UserNotes.java | 41 +--- .../moderation/command/Warnings.java | 42 +--- .../abstracto/modmail/command/Close.java | 23 +- .../abstracto/modmail/command/Contact.java | 36 +--- .../abstracto/remind/command/Reminders.java | 16 +- .../abstracto/remind/command/Snooze.java | 12 +- .../abstracto/remind/command/UnRemind.java | 9 +- .../starboard/command/StarStats.java | 25 +-- .../abstracto/suggestion/command/Accept.java | 12 +- .../abstracto/suggestion/command/Reject.java | 12 +- .../suggestion/command/ShowSuggestion.java | 18 +- .../suggestion/command/UnSuggest.java | 10 +- .../abstracto/suggestion/command/Veto.java | 12 +- .../abstracto/utility/command/ServerInfo.java | 15 +- .../abstracto/utility/command/ShowAvatar.java | 25 +-- .../abstracto/utility/command/ShowEmote.java | 8 - .../abstracto/utility/command/UserInfo.java | 36 +--- .../DictionaryApiDefinitionCommand.java | 19 +- .../WikipediaArticleSummaryCommand.java | 19 +- .../commands/channels/AddToChannelGroup.java | 13 +- .../commands/channels/CreateChannelGroup.java | 12 +- .../commands/channels/DeleteChannelGroup.java | 9 +- .../channels/DisableChannelGroup.java | 9 +- .../commands/channels/DisablePostTarget.java | 12 +- .../commands/channels/EnableChannelGroup.java | 8 +- .../commands/channels/EnablePostTarget.java | 12 +- .../commands/channels/ListChannelGroups.java | 9 +- .../commands/channels/PostTargetCommand.java | 18 +- .../channels/RemoveFromChannelGroup.java | 15 +- .../core/commands/config/ClearCache.java | 9 +- .../core/commands/config/ResetConfig.java | 20 +- .../core/commands/config/SetConfig.java | 11 +- .../config/features/DisableFeature.java | 32 +-- .../commands/config/features/DisableMode.java | 13 +- .../config/features/EnableFeature.java | 42 +--- .../commands/config/features/EnableMode.java | 13 +- .../config/features/FeatureModes.java | 27 +-- .../commands/config/features/Features.java | 14 +- .../config/features/MakeAffected.java | 14 +- .../commands/config/features/MakeImmune.java | 13 +- .../commands/config/features/ShowEffects.java | 15 +- .../config/profanity/AddProfanityRegex.java | 18 +- .../profanity/CreateProfanityGroup.java | 9 +- .../profanity/DeleteProfanityGroup.java | 9 +- .../profanity/RemoveProfanityRegex.java | 11 +- .../config/profanity/ShowProfanityConfig.java | 15 +- .../config/template/GetCustomTemplate.java | 17 +- .../commands/config/template/GetTemplate.java | 17 +- .../config/template/ResetTemplate.java | 14 +- .../commands/config/template/SetTemplate.java | 24 +-- .../core/commands/help/Documentation.java | 13 +- .../abstracto/core/commands/utility/Echo.java | 21 +- .../abstracto/core/commands/utility/Ping.java | 1 - .../core/commands/utility/SetEmote.java | 11 +- 84 files changed, 181 insertions(+), 1489 deletions(-) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/EightBall.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/EightBall.java index afa544dcf..ca2f5be34 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/EightBall.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/EightBall.java @@ -6,15 +6,12 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.UserCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.utils.ContextUtils; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; @@ -41,24 +38,12 @@ public class EightBall extends AbstractConditionableCommand { @Autowired private TemplateService templateService; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - String text = (String) commandContext.getParameters().getParameters().get(0); - MessageToSend messageToSend = getMessageToSend(text, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromIgnored()); - } - - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String text = slashCommandParameterService.getCommandOption(TEXT_PARAMETER, event, String.class); @@ -108,6 +93,7 @@ public class EightBall extends AbstractConditionableCommand { .module(EntertainmentModuleDefinition.ENTERTAINMENT) .templated(true) .supportsEmbedException(true) + .slashCommandOnly(true) .causesReaction(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/Roulette.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/Roulette.java index 0ba686e6d..955649e07 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/Roulette.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/Roulette.java @@ -6,12 +6,9 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.UserCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; -import dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames; @@ -30,8 +27,6 @@ public class Roulette extends AbstractConditionableCommand { public static final String ROULETTE_RESPONSE_TEMPLATE_KEY = "roulette_response"; public static final String ROULETTE_COMMAND = "roulette"; - @Autowired - private ChannelService channelService; @Autowired private EntertainmentService entertainmentService; @@ -39,17 +34,6 @@ public class Roulette extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - boolean rouletteResult = entertainmentService.executeRoulette(commandContext.getAuthor()); - RouletteResponseModel responseModel = RouletteResponseModel - .builder() - .result(rouletteResult) - .build(); - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(ROULETTE_RESPONSE_TEMPLATE_KEY, responseModel, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { boolean rouletteResult = entertainmentService.executeRoulette(event.getMember()); @@ -84,6 +68,7 @@ public class Roulette extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .module(EntertainmentModuleDefinition.ENTERTAINMENT) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(true) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditGamble.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditGamble.java index 72aacfc7f..3ae712f43 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditGamble.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditGamble.java @@ -4,17 +4,12 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.CommandConfiguration; 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.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; -import dev.sheldan.abstracto.core.templating.model.MessageToSend; -import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames; @@ -43,22 +38,6 @@ public class CreditGamble extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Autowired - private TemplateService templateService; - - @Autowired - private ChannelService channelService; - - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); - CreditGambleResult result = economyService.triggerCreditGamble(aUserInAServer); - CreditGambleResultModel model = CreditGambleResultModel.fromCreditGambleResult(result); - MessageToSend messageToSend = templateService.renderEmbedTemplate(CREDIT_GAMBLE_RESPONSE, model, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(interactionHook -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(event.getMember()); @@ -89,6 +68,7 @@ public class CreditGamble extends AbstractConditionableCommand { .async(true) .module(EntertainmentModuleDefinition.ENTERTAINMENT) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditLeaderboard.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditLeaderboard.java index 47c64db6d..d6928d323 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditLeaderboard.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/CreditLeaderboard.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.CommandConfiguration; 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.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -12,12 +11,9 @@ import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.MemberService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; -import dev.sheldan.abstracto.core.templating.model.MessageToSend; -import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.core.utils.CompletableFutureList; import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; @@ -56,38 +52,9 @@ public class CreditLeaderboard extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Autowired - private ChannelService channelService; - - @Autowired - private TemplateService templateService; - @Autowired private MemberService memberService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - AServer server = serverManagementService.loadServer(commandContext.getGuild()); - List parameters = commandContext.getParameters().getParameters(); - // parameter is optional, in case its not present, we default to the 0th page - Integer page = !parameters.isEmpty() ? (Integer) parameters.get(0) : 1; - List creditLeaderboard = economyService.getCreditLeaderboard(server, page); - AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); - CreditsLeaderboardEntry ownRank = economyService.getRankOfUser(aUserInAServer); - CreditsLeaderboardResponseModel model = CreditsLeaderboardResponseModel - .builder() - .entries(creditLeaderboard) - .ownRank(ownRank) - .build(); - return enrichModelWithMembers(model, commandContext.getGuild().getIdLong()) - .thenCompose(model1 -> { - MessageToSend message = templateService.renderEmbedTemplate(CREDIT_LEADERBOARD_RESPONSE, model1, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(message, commandContext.getChannel())); - }) - .thenApply(unused -> CommandResult.fromSuccess()); - } - - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { event.deferReply().queue(); @@ -165,6 +132,7 @@ public class CreditLeaderboard extends AbstractConditionableCommand { .templated(true) .async(true) .slashCommandConfig(slashCommandConfig) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(false) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Credits.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Credits.java index 04e55f6f0..4683c1367 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Credits.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Credits.java @@ -4,17 +4,12 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.CommandConfiguration; 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.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; -import dev.sheldan.abstracto.core.templating.model.MessageToSend; -import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames; @@ -44,26 +39,6 @@ public class Credits extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Autowired - private TemplateService templateService; - - @Autowired - private ChannelService channelService; - - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); - CreditsLeaderboardEntry rankEntry = economyService.getRankOfUser(targetUser); - rankEntry.setMember(commandContext.getAuthor()); - CreditsModel model = CreditsModel - .builder() - .entry(rankEntry) - .build(); - MessageToSend messageToSend = templateService.renderEmbedTemplate(CREDITS_RESPONSE, model, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(interactionHook -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(event.getMember()); @@ -98,6 +73,7 @@ public class Credits extends AbstractConditionableCommand { .async(true) .module(EntertainmentModuleDefinition.ENTERTAINMENT) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Slots.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Slots.java index 338612bed..2d318ae18 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Slots.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/Slots.java @@ -5,18 +5,13 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; -import dev.sheldan.abstracto.core.templating.model.MessageToSend; -import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames; @@ -52,24 +47,6 @@ public class Slots extends AbstractConditionableCommand { @Autowired private UserInServerManagementService userInServerManagementService; - @Autowired - private TemplateService templateService; - - @Autowired - private ChannelService channelService; - - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Integer bid = (Integer) commandContext.getParameters().getParameters().get(0); - Member member = commandContext.getAuthor(); - AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(member); - SlotsResult slotsResult = economyUserServiceBean.triggerSlots(aUserInAServer, bid.longValue()); - SlotsResponseModel responseModel = SlotsResponseModel.fromSlotsResult(slotsResult); - MessageToSend messageToSend = templateService.renderEmbedTemplate(SLOTS_RESPONSE, responseModel, member.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long bid = slashCommandParameterService.getCommandOption(BID_PARAMETER, event, Integer.class).longValue(); @@ -111,6 +88,7 @@ public class Slots extends AbstractConditionableCommand { .async(true) .module(EntertainmentModuleDefinition.ENTERTAINMENT) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java index 6ffebe364..b17dd2c84 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.CommandConfiguration; 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.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -12,9 +11,7 @@ import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.template.display.MemberDisplay; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames; @@ -48,27 +45,6 @@ public class TransferCredits extends AbstractConditionableCommand { @Autowired private EconomyService economyService; - @Autowired - private ChannelService channelService; - - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Member targetMember = (Member) parameters.get(0); - Integer amount = (Integer) parameters.get(1); - AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(targetMember); - AUserInAServer sourceUser = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); - economyService.transferCredits(sourceUser, targetUser, amount.longValue()); - TransferCreditsModel responseModel = TransferCreditsModel - .builder() - .sourceMember(MemberDisplay.fromMember(commandContext.getAuthor())) - .targetMember(MemberDisplay.fromMember(targetMember)) - .credits(amount) - .build(); - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(TRANSFER_CREDITS_RESPONSE, responseModel, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Member targetMember = slashCommandParameterService.getCommandOption(MEMBER_PARAMETER, event, Member.class); @@ -123,6 +99,7 @@ public class TransferCredits extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .module(EntertainmentModuleDefinition.ENTERTAINMENT) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .parameters(parameters) .causesReaction(false) diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/games/Mines.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/games/Mines.java index a0c14f0c4..37de06e36 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/games/Mines.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/games/Mines.java @@ -5,19 +5,16 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.UserCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.models.ServerUser; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.FeatureFlagService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.core.utils.ContextUtils; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames; @@ -26,7 +23,6 @@ import dev.sheldan.abstracto.entertainment.model.command.games.MineBoard; import dev.sheldan.abstracto.entertainment.model.database.EconomyUser; import dev.sheldan.abstracto.entertainment.service.GameService; import dev.sheldan.abstracto.entertainment.service.management.EconomyUserManagementService; -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.stereotype.Component; @@ -65,9 +61,6 @@ public class Mines extends AbstractConditionableCommand { @Autowired private EconomyUserManagementService economyUserManagementService; - @Autowired - private ChannelService channelService; - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Integer width = 5; @@ -120,53 +113,6 @@ public class Mines extends AbstractConditionableCommand { }); } - - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Integer width = 5; - List parameters = commandContext.getParameters().getParameters(); - if(!parameters.isEmpty()) { - width = (Integer) parameters.get(0); - } - Integer height = 5; - if(parameters.size() >= 2) { - height = (Integer) parameters.get(1); - } - Integer mines = 5; - if(parameters.size() >= 3) { - mines = (Integer) parameters.get(2); - } - Integer credit = null; - Long serverId = commandContext.getGuild().getIdLong(); - boolean economyEnabled = featureFlagService.getFeatureFlagValue(EntertainmentFeatureDefinition.ECONOMY, serverId); - if(economyEnabled){ - credit = 50; - if(parameters.size() == 4) { - credit = (Integer) parameters.get(3); - } - - Optional userOptional = economyUserManagementService.getUser(ServerUser.fromMember(commandContext.getAuthor())); - if(!userOptional.isPresent()) { - throw new NotEnoughCreditsException(); - } - EconomyUser user = userOptional.get(); - if(user.getCredits() < credit) { - throw new NotEnoughCreditsException(); - } - } - MineBoard board = gameService.createBoard(width, height, mines, serverId); - board.setCreditsEnabled(economyEnabled); - board.setUserId(commandContext.getAuthor().getIdLong()); - board.setServerId(serverId); - board.setCredits(credit); - MessageToSend messageToSend = templateService.renderEmbedTemplate(MINE_BOARD_TEMPLATE_KEY, board, serverId); - List> futures = channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel()); - return FutureUtils.toSingleFutureGeneric(futures) - .thenAccept(unused -> gameService.persistMineBoardMessage(board, futures.get(0).join(), serverId)) - .thenApply(unused -> CommandResult.fromSuccess()); - - } - @Override public CommandConfiguration getConfiguration() { List parameters = new ArrayList<>(); @@ -227,6 +173,7 @@ public class Mines extends AbstractConditionableCommand { .async(true) .module(EntertainmentModuleDefinition.ENTERTAINMENT) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpForRole.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpForRole.java index 98a63b154..ac9d27fe2 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpForRole.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpForRole.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -48,22 +47,6 @@ public class DisableExpForRole extends AbstractConditionableCommand { private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Role role = (Role) parameters.get(0); - ARole actualRole = roleManagementService.findRole(role.getIdLong()); - if(!actualRole.getServer().getId().equals(commandContext.getGuild().getIdLong())) { - throw new EntityGuildMismatchException(); - } - // as we manage experience disabled roles via the existence of them in a table, we should not do anything - // in case it is used a second time as a disabled experience role - if(!disabledExpRoleManagementService.isExperienceDisabledForRole(actualRole)) { - disabledExpRoleManagementService.setRoleToBeDisabledForExp(actualRole); - } - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Role role = slashCommandParameterService.getCommandOption(ROLE_PARAMETER, event, Role.class); @@ -106,6 +89,7 @@ public class DisableExpForRole extends AbstractConditionableCommand { .name(DISABLE_EXP_FOR_ROLE_COMMAND) .module(ExperienceModuleDefinition.EXPERIENCE) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .causesReaction(true) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpGain.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpGain.java index cc13c11d0..712f74e3c 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpGain.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/DisableExpGain.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -47,17 +46,6 @@ public class DisableExpGain extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - Member para = (Member) commandContext.getParameters().getParameters().get(0); - if(!para.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(para); - aUserExperienceService.disableExperienceForUser(userInAServer); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Member para = slashCommandParameterService.getCommandOption(MEMBER_PARAMETER, event, Member.class); @@ -98,6 +86,7 @@ public class DisableExpGain extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .causesReaction(true) .supportsEmbedException(true) + .slashCommandOnly(true) .templated(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpForRole.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpForRole.java index caf7f54be..27778d64b 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpForRole.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpForRole.java @@ -6,12 +6,10 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.exception.SlashCommandParameterMissingException; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; -import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.database.ARole; import dev.sheldan.abstracto.core.service.management.RoleManagementService; @@ -50,20 +48,6 @@ public class EnableExpForRole extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - ARole role = (ARole) commandContext.getParameters().getParameters().get(0); - ARole actualRole = roleManagementService.findRole(role.getId()); - if(!actualRole.getServer().getId().equals(commandContext.getGuild().getIdLong())) { - throw new EntityGuildMismatchException(); - } - // If its not disabled for the role, we can remove it - if(disabledExpRoleManagementService.isExperienceDisabledForRole(actualRole)) { - disabledExpRoleManagementService.removeRoleToBeDisabledForExp(actualRole); - } - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { ARole actualRole; @@ -112,6 +96,7 @@ public class EnableExpForRole extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .causesReaction(true) .supportsEmbedException(true) + .slashCommandOnly(true) .parameters(parameters) .help(helpInfo) .build(); diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpGain.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpGain.java index b5d27f37b..b080e1aa3 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpGain.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/EnableExpGain.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -48,17 +47,6 @@ public class EnableExpGain extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - Member member = (Member) commandContext.getParameters().getParameters().get(0); - if(!member.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(member); - aUserExperienceService.enableExperienceForUser(userInAServer); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Member member = slashCommandParameterService.getCommandOption(MEMBER_PARAMETER, event, Member.class); @@ -100,6 +88,7 @@ public class EnableExpGain extends AbstractConditionableCommand { .causesReaction(true) .supportsEmbedException(true) .templated(true) + .slashCommandOnly(true) .parameters(parameters) .help(helpInfo) .build(); diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpLevelUpNotification.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpLevelUpNotification.java index ec2f36b6d..b04840fff 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpLevelUpNotification.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpLevelUpNotification.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.CommandConfiguration; 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.config.FeatureDefinition; import dev.sheldan.abstracto.core.config.FeatureMode; @@ -45,13 +44,6 @@ public class ExpLevelUpNotification extends AbstractConditionableCommand { @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CommandResult execute(CommandContext commandContext) { - Boolean newValue = (Boolean) commandContext.getParameters().getParameters().get(0); - updateExpLevelNotification(commandContext.getAuthor(), newValue); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Boolean newValue = slashCommandParameterService.getCommandOption(FLAG_PARAMETER, event, Boolean.class); @@ -97,6 +89,7 @@ public class ExpLevelUpNotification extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .causesReaction(true) .supportsEmbedException(true) + .slashCommandOnly(true) .templated(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpScale.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpScale.java index eb3e45eaa..c5afa974b 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpScale.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ExpScale.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -45,15 +44,6 @@ public class ExpScale extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - Double scale = (Double) commandContext.getParameters().getParameters().get(0); - Long guildId = commandContext.getGuild().getIdLong(); - configService.setDoubleValue(ExperienceFeatureConfig.EXP_MULTIPLIER_KEY, guildId, scale); - log.info("Setting experience scale to {} for {}", scale, guildId); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Double newScale = slashCommandParameterService.getCommandOption(SCALE_PARAMETER, event, Double.class); @@ -90,6 +80,7 @@ public class ExpScale extends AbstractConditionableCommand { .name(EXP_SCALE_COMMAND) .module(ExperienceModuleDefinition.EXPERIENCE) .causesReaction(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .templated(true) .supportsEmbedException(true) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ListDisabledExperienceRoles.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ListDisabledExperienceRoles.java index 89e200d52..b8e316571 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ListDisabledExperienceRoles.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/ListDisabledExperienceRoles.java @@ -5,26 +5,22 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.FullRole; import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.RoleService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.experience.config.ExperienceFeatureDefinition; import dev.sheldan.abstracto.experience.config.ExperienceSlashCommandNames; import dev.sheldan.abstracto.experience.model.database.ADisabledExpRole; import dev.sheldan.abstracto.experience.model.template.DisabledExperienceRolesModel; import dev.sheldan.abstracto.experience.service.management.DisabledExpRoleManagementService; import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; @@ -50,9 +46,6 @@ public class ListDisabledExperienceRoles extends AbstractConditionableCommand { @Autowired private RoleService roleService; - @Autowired - private ChannelService channelService; - @Autowired private ServerManagementService serverManagementService; @@ -62,14 +55,6 @@ public class ListDisabledExperienceRoles extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Long serverId = commandContext.getGuild().getIdLong(); - MessageToSend messageToSend = getResponseModel(serverId, commandContext.getAuthor()); - List> futures = channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel()); - return FutureUtils.toSingleFutureGeneric(futures).thenApply(aVoid -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long serverId = event.getGuild().getIdLong(); @@ -124,6 +109,7 @@ public class ListDisabledExperienceRoles extends AbstractConditionableCommand { .templated(true) .supportsEmbedException(true) .causesReaction(true) + .slashCommandOnly(true) .async(true) .aliases(aliases) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/AddGiveawayKey.java b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/AddGiveawayKey.java index 3f824b893..7737ca93c 100644 --- a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/AddGiveawayKey.java +++ b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/AddGiveawayKey.java @@ -27,112 +27,112 @@ import org.springframework.stereotype.Component; @Component public class AddGiveawayKey extends AbstractConditionableCommand { - private static final String KEY_PARAMETER = "key"; - private static final String DESCRIPTION_PARAMETER = "description"; - private static final String BENEFACTOR_PARAMETER = "benefactor"; - private static final String NAME_PARAMETER = "name"; - private static final String ADD_GIVEAWAY_KEY_COMMAND_NAME = "addGiveawayKey"; - private static final String ADD_GIVEAWAY_KEY_RESPONSE = "addGiveawayKey_response"; + private static final String KEY_PARAMETER = "key"; + private static final String DESCRIPTION_PARAMETER = "description"; + private static final String BENEFACTOR_PARAMETER = "benefactor"; + private static final String NAME_PARAMETER = "name"; + private static final String ADD_GIVEAWAY_KEY_COMMAND_NAME = "addGiveawayKey"; + private static final String ADD_GIVEAWAY_KEY_RESPONSE = "addGiveawayKey_response"; - @Autowired - private InteractionService interactionService; + @Autowired + private InteractionService interactionService; - @Autowired - private GiveawayKeyManagementService giveawayKeyManagementService; + @Autowired + private GiveawayKeyManagementService giveawayKeyManagementService; - @Autowired - private SlashCommandParameterService slashCommandParameterService; + @Autowired + private SlashCommandParameterService slashCommandParameterService; - @Override - public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { - String key = slashCommandParameterService.getCommandOption(KEY_PARAMETER, event, String.class); - String name = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); - String description; - if(slashCommandParameterService.hasCommandOption(DESCRIPTION_PARAMETER, event)) { - description = slashCommandParameterService.getCommandOption(DESCRIPTION_PARAMETER, event, String.class); - } else { - description = null; + @Override + public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { + String key = slashCommandParameterService.getCommandOption(KEY_PARAMETER, event, String.class); + String name = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); + String description; + if (slashCommandParameterService.hasCommandOption(DESCRIPTION_PARAMETER, event)) { + description = slashCommandParameterService.getCommandOption(DESCRIPTION_PARAMETER, event, String.class); + } else { + description = null; + } + Member benefactor; + if (slashCommandParameterService.hasCommandOption(BENEFACTOR_PARAMETER, event)) { + benefactor = slashCommandParameterService.getCommandOption(BENEFACTOR_PARAMETER, event, Member.class); + } else { + benefactor = null; + } + giveawayKeyManagementService.createGiveawayKey(event.getMember(), benefactor, key, description, name); + return interactionService.replyEmbed(ADD_GIVEAWAY_KEY_RESPONSE, event) + .thenApply(interactionHook -> CommandResult.fromSuccess()); } - Member benefactor; - if(slashCommandParameterService.hasCommandOption(BENEFACTOR_PARAMETER, event)) { - benefactor = slashCommandParameterService.getCommandOption(BENEFACTOR_PARAMETER, event, Member.class); - } else { - benefactor = null; + + @Override + public CommandConfiguration getConfiguration() { + Parameter giveawayKey = Parameter + .builder() + .templated(true) + .name(KEY_PARAMETER) + .type(String.class) + .build(); + + Parameter giveawayKeyDescription = Parameter + .builder() + .templated(true) + .name(DESCRIPTION_PARAMETER) + .type(String.class) + .optional(true) + .build(); + + + Parameter giveawayKeyBenefactor = Parameter + .builder() + .templated(true) + .name(BENEFACTOR_PARAMETER) + .type(Member.class) + .optional(true) + .build(); + + Parameter giveawayKeyName = Parameter + .builder() + .templated(true) + .name(NAME_PARAMETER) + .type(String.class) + .build(); + + List parameters = Arrays.asList(giveawayKeyName, giveawayKey, giveawayKeyBenefactor, giveawayKeyDescription); + HelpInfo helpInfo = HelpInfo + .builder() + .templated(true) + .build(); + + SlashCommandConfig slashCommandConfig = SlashCommandConfig + .builder() + .enabled(true) + .rootCommandName(GiveawaySlashCommandNames.GIVEAWAY) + .defaultPrivilege(SlashCommandPrivilegeLevels.INVITER) + .groupName("keys") + .commandName("add") + .build(); + + return CommandConfiguration.builder() + .name(ADD_GIVEAWAY_KEY_COMMAND_NAME) + .module(UtilityModuleDefinition.UTILITY) + .templated(true) + .slashCommandOnly(true) + .slashCommandConfig(slashCommandConfig) + .async(true) + .supportsEmbedException(true) + .causesReaction(false) + .parameters(parameters) + .help(helpInfo) + .build(); } - giveawayKeyManagementService.createGiveawayKey(event.getMember(), benefactor, key, description, name); - return interactionService.replyEmbed(ADD_GIVEAWAY_KEY_RESPONSE, event) - .thenApply(interactionHook -> CommandResult.fromSuccess()); - } - @Override - public CommandConfiguration getConfiguration() { - Parameter giveawayKey = Parameter - .builder() - .templated(true) - .name(KEY_PARAMETER) - .type(String.class) - .build(); + @Override + public FeatureDefinition getFeature() { + return GiveawayFeatureDefinition.GIVEAWAY; + } - Parameter giveawayKeyDescription = Parameter - .builder() - .templated(true) - .name(DESCRIPTION_PARAMETER) - .type(String.class) - .optional(true) - .build(); - - - Parameter giveawayKeyBenefactor = Parameter - .builder() - .templated(true) - .name(BENEFACTOR_PARAMETER) - .type(Member.class) - .optional(true) - .build(); - - Parameter giveawayKeyName = Parameter - .builder() - .templated(true) - .name(NAME_PARAMETER) - .type(String.class) - .build(); - - List parameters = Arrays.asList(giveawayKeyName, giveawayKey, giveawayKeyBenefactor, giveawayKeyDescription); - HelpInfo helpInfo = HelpInfo - .builder() - .templated(true) - .build(); - - SlashCommandConfig slashCommandConfig = SlashCommandConfig - .builder() - .enabled(true) - .rootCommandName(GiveawaySlashCommandNames.GIVEAWAY) - .defaultPrivilege(SlashCommandPrivilegeLevels.INVITER) - .groupName("keys") - .commandName("add") - .build(); - - return CommandConfiguration.builder() - .name(ADD_GIVEAWAY_KEY_COMMAND_NAME) - .module(UtilityModuleDefinition.UTILITY) - .templated(true) - .slashCommandOnly(true) - .slashCommandConfig(slashCommandConfig) - .async(true) - .supportsEmbedException(true) - .causesReaction(false) - .parameters(parameters) - .help(helpInfo) - .build(); - } - - @Override - public FeatureDefinition getFeature() { - return GiveawayFeatureDefinition.GIVEAWAY; - } - - @Override - public List getFeatureModeLimitations() { - return Arrays.asList(GiveawayMode.KEY_GIVEAWAYS); - } + @Override + public List getFeatureModeLimitations() { + return Arrays.asList(GiveawayMode.KEY_GIVEAWAYS); + } } diff --git a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/CancelGiveaway.java b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/CancelGiveaway.java index bc1ab57d4..fb43056fa 100644 --- a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/CancelGiveaway.java +++ b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/CancelGiveaway.java @@ -90,6 +90,7 @@ public class CancelGiveaway extends AbstractConditionableCommand { .name(COMMAND_NAME) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .async(true) .supportsEmbedException(true) diff --git a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateGiveaway.java b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateGiveaway.java index 8d198c3ee..467181dd2 100644 --- a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateGiveaway.java +++ b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateGiveaway.java @@ -179,6 +179,7 @@ public class GreateGiveaway extends AbstractConditionableCommand { .name(COMMAND_NAME) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .async(true) .supportsEmbedException(true) diff --git a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateKeyGiveaway.java b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateKeyGiveaway.java index 401f0646f..5f5971b8b 100644 --- a/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateKeyGiveaway.java +++ b/abstracto-application/abstracto-modules/giveaway/giveaway-impl/src/main/java/dev/sheldan/abstracto/giveaway/command/GreateKeyGiveaway.java @@ -143,6 +143,7 @@ public class GreateKeyGiveaway extends AbstractConditionableCommand { .templated(true) .slashCommandConfig(slashCommandConfig) .async(true) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(false) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteNote.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteNote.java index d14dbbfed..c84b1f1de 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteNote.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteNote.java @@ -3,7 +3,6 @@ package dev.sheldan.abstracto.moderation.command; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; @@ -40,14 +39,6 @@ public class DeleteNote extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - Long id = (Long) commandContext.getParameters().getParameters().get(0); - UserNote existingNote = userNoteManagementService.loadNote(commandContext.getGuild().getIdLong(), id); - userNoteManagementService.deleteNote(existingNote); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long userNoteId = slashCommandParameterService.getCommandOption(ID_PARAMETER, event, Integer.class).longValue(); @@ -87,6 +78,7 @@ public class DeleteNote extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .module(ModerationModuleDefinition.MODERATION) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(true) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteWarning.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteWarning.java index 5aef9c816..8d366aabd 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteWarning.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/DeleteWarning.java @@ -3,7 +3,6 @@ package dev.sheldan.abstracto.moderation.command; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; @@ -39,14 +38,6 @@ public class DeleteWarning extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - Long warnId = (Long) commandContext.getParameters().getParameters().get(0); - Warning warning = warnManagementService.findById(warnId, commandContext.getGuild().getIdLong()); - warnManagementService.deleteWarning(warning); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long warnId = slashCommandParameterService.getCommandOption(WARN_ID_PARAMETER, event, Long.class, Integer.class).longValue(); @@ -89,6 +80,7 @@ public class DeleteWarning extends AbstractConditionableCommand { .templated(true) .supportsEmbedException(true) .aliases(aliases) + .slashCommandOnly(true) .causesReaction(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Infractions.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Infractions.java index 648a943de..ee23f646f 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Infractions.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Infractions.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.CommandConfiguration; 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.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; @@ -17,12 +16,10 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.template.display.MemberDisplay; import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.PaginatorService; -import dev.sheldan.abstracto.core.service.UserService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.moderation.config.ModerationModuleDefinition; import dev.sheldan.abstracto.moderation.config.ModerationSlashCommandNames; import dev.sheldan.abstracto.moderation.config.feature.ModerationFeatureDefinition; @@ -76,35 +73,6 @@ public class Infractions extends AbstractConditionableCommand { @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List infractions; - if(!commandContext.getParameters().getParameters().isEmpty()) { - Member member = (Member) commandContext.getParameters().getParameters().get(0); - if(!member.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - infractions = infractionManagementService.getInfractionsForUser(userInServerManagementService.loadOrCreateUser(member)); - } else { - AServer server = serverManagementService.loadServer(commandContext.getGuild()); - infractions = infractionManagementService.getInfractionsForServer(server); - } - if(infractions.isEmpty()) { - MessageToSend messageToSend = templateService.renderEmbedTemplate(NO_INFRACTIONS_TEMPLATE_KEY, new Object(), commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - - } else { - List convertedInfractions = fromInfractions(infractions); - InfractionsModel model = InfractionsModel - .builder() - .entries(convertedInfractions) - .build(); - return paginatorService.createPaginatorFromTemplate(INFRACTIONS_RESPONSE_TEMPLATE, model, commandContext.getChannel(), commandContext.getAuthor().getIdLong()) - .thenApply(unused -> CommandResult.fromSuccess()); - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { List infractions; @@ -195,6 +163,7 @@ public class Infractions extends AbstractConditionableCommand { .name(INFRACTIONS_COMMAND) .module(ModerationModuleDefinition.MODERATION) .templated(true) + .slashCommandOnly(true) .async(true) .causesReaction(false) .slashCommandConfig(slashCommandConfig) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mute.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mute.java index f65737d07..f4a1daf5b 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mute.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mute.java @@ -3,20 +3,15 @@ package dev.sheldan.abstracto.moderation.command; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.condition.CommandCondition; import dev.sheldan.abstracto.core.command.config.*; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; -import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.ServerChannelMessage; import dev.sheldan.abstracto.core.models.ServerUser; -import dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.core.utils.ParseUtils; import dev.sheldan.abstracto.core.utils.SnowflakeUtils; import dev.sheldan.abstracto.moderation.config.ModerationModuleDefinition; @@ -30,7 +25,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.Duration; -import java.time.Instant; import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -61,40 +55,6 @@ public class Mute extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Autowired - private ChannelService channelService; - - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Member member = (Member) parameters.get(0); - Guild guild = commandContext.getGuild(); - if(!member.getGuild().equals(guild)) { - throw new EntityGuildMismatchException(); - } - Duration duration = (Duration) parameters.get(1); - String defaultReason = templateService.renderSimpleTemplate(MUTE_DEFAULT_REASON_TEMPLATE, guild.getIdLong()); - String reason = parameters.size() == 3 ? (String) parameters.get(2) : defaultReason; - Instant oldTimeoutDate = null; - if(member.getTimeOutEnd() != null && member.isTimedOut()) { - oldTimeoutDate = member.getTimeOutEnd().toInstant(); - } - ServerUser userToMute = ServerUser.fromMember(member); - ServerUser mutingUser = ServerUser.fromMember(commandContext.getAuthor()); - Long serverId = commandContext.getGuild().getIdLong(); - ServerChannelMessage serverChannelMessage = ServerChannelMessage.fromMessage(commandContext.getMessage()); - return muteService.muteMemberWithLog(userToMute, mutingUser, reason, duration, commandContext.getGuild(), serverChannelMessage, oldTimeoutDate) - .thenCompose(muteResult -> { - if(muteResult == NOTIFICATION_FAILED) { - MessageToSend errorNotification = templateService.renderEmbedTemplate(MUTE_NOTIFICATION_NOT_POSSIBLE_TEMPLATE_KEY, new Object(), serverId); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(errorNotification, commandContext.getChannel())); - } else { - return CompletableFuture.completedFuture(null); - } - }) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Guild guild = event.getGuild(); @@ -182,6 +142,7 @@ public class Mute extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .effects(effectConfig) .causesReaction(true) + .slashCommandOnly(true) .supportsEmbedException(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mutes.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mutes.java index b3ec62a2f..2c2301409 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mutes.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Mutes.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -13,13 +12,11 @@ import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.PaginatorService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.moderation.config.ModerationModuleDefinition; import dev.sheldan.abstracto.moderation.config.ModerationSlashCommandNames; import dev.sheldan.abstracto.moderation.config.feature.ModerationFeatureDefinition; @@ -56,9 +53,6 @@ public class Mutes extends AbstractConditionableCommand { @Autowired private TemplateService templateService; - @Autowired - private ChannelService channelService; - @Autowired private MuteEntryConverter muteEntryConverter; @@ -74,39 +68,6 @@ public class Mutes extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List mutesToDisplay; - if(commandContext.getParameters().getParameters().isEmpty()) { - AServer server = serverManagementService.loadServer(commandContext.getGuild().getIdLong()); - mutesToDisplay = muteManagementService.getAllMutes(server); - } else { - Member member = (Member) commandContext.getParameters().getParameters().get(0); - if(!member.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - mutesToDisplay = muteManagementService.getAllMutesOf(userInServerManagementService.loadOrCreateUser(member)); - } - if(mutesToDisplay.isEmpty()) { - MessageToSend messageToSend = templateService.renderEmbedTemplate(NO_MUTES_TEMPLATE_KEY, new Object(), commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } else { - return muteEntryConverter.fromMutes(mutesToDisplay) - .thenCompose(muteEntries -> self.renderMutes(commandContext, muteEntries) - .thenApply(unused -> CommandResult.fromIgnored())); - } - } - - @Transactional - public CompletableFuture renderMutes(CommandContext commandContext, List mutes) { - MutesModel model = MutesModel - .builder() - .mutes(mutes) - .build(); - return paginatorService.createPaginatorFromTemplate(MUTES_DISPLAY_TEMPLATE_KEY, model, commandContext.getChannel(), commandContext.getAuthor().getIdLong()); - } - @Transactional public CompletableFuture renderMutes(SlashCommandInteractionEvent event, List mutes) { MutesModel model = MutesModel @@ -168,6 +129,7 @@ public class Mutes extends AbstractConditionableCommand { .name(MUTES_COMMAND) .module(ModerationModuleDefinition.MODERATION) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .async(true) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/MyWarnings.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/MyWarnings.java index fd71124e1..f832ffee0 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/MyWarnings.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/MyWarnings.java @@ -5,12 +5,10 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; import dev.sheldan.abstracto.moderation.config.ModerationModuleDefinition; import dev.sheldan.abstracto.moderation.config.ModerationSlashCommandNames; @@ -31,8 +29,6 @@ public class MyWarnings extends AbstractConditionableCommand { public static final String MY_WARNINGS_RESPONSE_EMBED_TEMPLATE = "myWarnings_response"; private static final String MY_WARNINGS_COMMAND = "myWarnings"; - @Autowired - private ChannelService channelService; @Autowired private WarnManagementService warnManagementService; @@ -43,21 +39,6 @@ public class MyWarnings extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); - Long currentWarnCount = warnManagementService.getActiveWarnCountForUser(userInAServer); - Long totalWarnCount = warnManagementService.getTotalWarnsForUser(userInAServer); - MyWarningsModel model = MyWarningsModel - .builder() - .member(commandContext.getAuthor()) - .totalWarnCount(totalWarnCount) - .currentWarnCount(currentWarnCount) - .build(); - channelService.sendEmbedTemplateInMessageChannel(MY_WARNINGS_RESPONSE_EMBED_TEMPLATE, model, commandContext.getChannel()); - return CommandResult.fromIgnored(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(event.getMember()); @@ -92,6 +73,7 @@ public class MyWarnings extends AbstractConditionableCommand { .templated(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) + .slashCommandOnly(true) .causesReaction(true) .aliases(aliases) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Purge.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Purge.java index 347f4f3f0..6d7ebb903 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Purge.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Purge.java @@ -3,7 +3,6 @@ package dev.sheldan.abstracto.moderation.command; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; @@ -43,20 +42,6 @@ public class Purge extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Integer amountOfMessages = (Integer) commandContext.getParameters().getParameters().get(0); - Member memberToPurgeMessagesOf = null; - if(commandContext.getParameters().getParameters().size() == 2) { - memberToPurgeMessagesOf = (Member) commandContext.getParameters().getParameters().get(1); - if(!memberToPurgeMessagesOf.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - } - return purgeService.purgeMessagesInChannel(amountOfMessages, commandContext.getChannel(), commandContext.getMessage(), memberToPurgeMessagesOf) - .thenApply(aVoid -> CommandResult.fromSelfDestruct()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Integer amountOfMessages = slashCommandParameterService.getCommandOption(AMOUNT_PARAMETER, event, Integer.class); @@ -113,6 +98,7 @@ public class Purge extends AbstractConditionableCommand { .name(PURGE_COMMAND) .module(ModerationModuleDefinition.MODERATION) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .async(true) .supportsEmbedException(true) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/SlowMode.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/SlowMode.java index cf5d31d3e..75b675d11 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/SlowMode.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/SlowMode.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -44,32 +43,6 @@ public class SlowMode extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - TextChannel channel; - String durationString = (String) commandContext.getParameters().getParameters().get(0); - Duration duration; - if(durationString.equalsIgnoreCase("off")) { - duration = Duration.ZERO; - } else { - duration = ParseUtils.parseDuration(durationString); - } - if(commandContext.getParameters().getParameters().size() == 2) { - channel = (TextChannel) commandContext.getParameters().getParameters().get(1); - if(!channel.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - } else { - if(commandContext.getChannel() instanceof TextChannel) { - channel = (TextChannel) commandContext.getChannel(); - } else { - throw new IllegalArgumentException("Not a text channel."); - } - } - return slowModeService.setSlowMode(channel, duration) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { TextChannel channel; @@ -134,6 +107,7 @@ public class SlowMode extends AbstractConditionableCommand { .templated(true) .slashCommandConfig(slashCommandConfig) .async(true) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(true) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnBan.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnBan.java index c164cd927..fe802c1c5 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnBan.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnBan.java @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -45,16 +44,6 @@ public class UnBan extends AbstractConditionableCommand { @Autowired private UserService userService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - String userIdStr = (String) parameters.get(0); - Long userId = Long.parseLong(userIdStr); - return userService.retrieveUserForId(userId) - .thenCompose(user -> banService.unbanUser(commandContext.getGuild(), user, commandContext.getAuthor())) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String userIdStr = slashCommandParameterService.getCommandOption(USER_PARAMETER, event, String.class); @@ -96,6 +85,7 @@ public class UnBan extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .causesReaction(true) + .slashCommandOnly(true) .parameters(parameters) .help(helpInfo) .build(); diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnMute.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnMute.java index 525ac507c..5ef652cb3 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnMute.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UnMute.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -42,20 +41,6 @@ public class UnMute extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Member member = (Member) parameters.get(0); - if(!member.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - ServerUser userToUnmute = ServerUser.fromMember(member); - ServerUser unMutingMember = ServerUser.fromMember(commandContext.getAuthor()); - return muteService.unMuteUser(userToUnmute, unMutingMember, commandContext.getGuild()).thenApply(aVoid -> - CommandResult.fromSuccess() - ); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Member targetMember = slashCommandParameterService.getCommandOption(USER_PARAMETER, event, Member.class); @@ -98,6 +83,7 @@ public class UnMute extends AbstractConditionableCommand { .async(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) + .slashCommandOnly(true) .causesReaction(true) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNoteCommand.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNoteCommand.java index ee6cc4978..ce3f2b62d 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNoteCommand.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNoteCommand.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -47,19 +46,6 @@ public class UserNoteCommand extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Member member = (Member) parameters.get(0); - if(!member.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - String text = (String) parameters.get(1); - AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(member); - userNoteManagementService.createUserNote(userInAServer, text); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Member member = slashCommandParameterService.getCommandOption(USER_PARAMETER, event, Member.class); @@ -110,6 +96,7 @@ public class UserNoteCommand extends AbstractConditionableCommand { .supportsEmbedException(true) .causesReaction(true) .parameters(parameters) + .slashCommandOnly(true) .help(helpInfo) .build(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNotes.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNotes.java index 73f12efd6..0ebde356b 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNotes.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/UserNotes.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -15,10 +14,8 @@ import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.FullUserInServer; import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.moderation.config.ModerationModuleDefinition; import dev.sheldan.abstracto.moderation.config.ModerationSlashCommandNames; import dev.sheldan.abstracto.moderation.config.feature.ModerationFeatureDefinition; @@ -47,9 +44,6 @@ public class UserNotes extends AbstractConditionableCommand { @Autowired private UserInServerManagementService userInServerManagementService; - @Autowired - private ChannelService channelService; - @Autowired private UserNotesConverter userNotesConverter; @@ -62,40 +56,6 @@ public class UserNotes extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - List userNotes; - - ListNotesModel model = ListNotesModel - .builder() - .member(commandContext.getAuthor()) - .build(); - if(parameters.size() == 1) { - Member member = (Member) parameters.get(0); - if(!member.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(member); - userNotes = userNoteManagementService.loadNotesForUser(userInAServer); - FullUserInServer specifiedUser = FullUserInServer - .builder() - .aUserInAServer(userInAServer) - .member(member) - .build(); - model.setSpecifiedUser(specifiedUser); - } else { - AServer server = serverManagementService.loadServer(commandContext.getGuild()); - userNotes = userNoteManagementService.loadNotesForServer(server); - } - CompletableFuture> listCompletableFuture = userNotesConverter.fromNotes(userNotes); - return listCompletableFuture.thenCompose(noteEntryModels -> { - model.setUserNotes(noteEntryModels); - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(USER_NOTES_RESPONSE_TEMPLATE, model, commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromIgnored()); - }); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { List userNotes; @@ -157,6 +117,7 @@ public class UserNotes extends AbstractConditionableCommand { .name(USER_NOTES_COMMAND) .module(ModerationModuleDefinition.MODERATION) .templated(true) + .slashCommandOnly(true) .async(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warnings.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warnings.java index c24e8be55..f02388f19 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warnings.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warnings.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -13,13 +12,11 @@ import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.PaginatorService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.moderation.config.ModerationModuleDefinition; import dev.sheldan.abstracto.moderation.config.ModerationSlashCommandNames; import dev.sheldan.abstracto.moderation.config.feature.ModerationFeatureDefinition; @@ -66,50 +63,12 @@ public class Warnings extends AbstractConditionableCommand { @Autowired private TemplateService templateService; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List warnsToDisplay; - if(!commandContext.getParameters().getParameters().isEmpty()) { - Member member = (Member) commandContext.getParameters().getParameters().get(0); - if(!member.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - warnsToDisplay = warnManagementService.getAllWarnsForUser(userInServerManagementService.loadOrCreateUser(member)); - } else { - AServer server = serverManagementService.loadServer(commandContext.getGuild()); - warnsToDisplay = warnManagementService.getAllWarningsOfServer(server); - } - if(warnsToDisplay.isEmpty()) { - MessageToSend messageToSend = templateService.renderEmbedTemplate(NO_WARNINGS_TEMPLATE_KEY, new Object(), commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - - } else { - return warnEntryConverter.fromWarnings(warnsToDisplay) - .thenCompose(warnEntries -> self.renderWarnings(commandContext, warnEntries)) - .thenApply(unused -> CommandResult.fromIgnored()); - } - } - - @Transactional - public CompletableFuture renderWarnings(CommandContext commandContext, List warnEntries) { - WarningsModel model = WarningsModel - .builder() - .warnings(warnEntries) - .build(); - - return paginatorService.createPaginatorFromTemplate(WARNINGS_RESPONSE_TEMPLATE, model, commandContext.getChannel(), commandContext.getAuthor().getIdLong()); - } - @Transactional public CompletableFuture renderWarnings(SlashCommandInteractionEvent event, List warnEntries) { WarningsModel model = WarningsModel @@ -175,6 +134,7 @@ public class Warnings extends AbstractConditionableCommand { .templated(true) .async(true) .causesReaction(false) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Close.java b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Close.java index 7e25c5837..c8ca5facc 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Close.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Close.java @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -69,27 +68,6 @@ public class Close extends AbstractConditionableCommand { @Autowired private Close self; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - // the default value of the note is configurable via template - String note = parameters.size() == 1 ? (String) parameters.get(0) : templateService.renderTemplate(MODMAIL_CLOSE_DEFAULT_NOTE_TEMPLATE_KEY, new Object(), commandContext.getGuild() - .getIdLong()); - ModMailThread modMailThread = modMailThreadManagementService.getByChannelId(commandContext.getChannel().getIdLong()); - if(ModMailThreadState.CLOSED.equals(modMailThread.getState()) || ModMailThreadState.CLOSING.equals(modMailThread.getState())) { - throw new ModMailThreadClosedException(); - } - ClosingContext context = ClosingContext - .builder() - .closingMember(commandContext.getAuthor()) - .notifyUser(true) - .log(true) - .note(note) - .build(); - return modMailThreadService.closeModMailThread(modMailThread, context, commandContext.getUndoActions()) - .thenApply(aVoid -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String note; @@ -183,6 +161,7 @@ public class Close extends AbstractConditionableCommand { .help(helpInfo) .slashCommandConfig(slashCommandConfig) .async(true) + .slashCommandOnly(true) .supportsEmbedException(true) .templated(true) .causesReaction(false) diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Contact.java b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Contact.java index dad8ac17b..40aed2ad1 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Contact.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/command/Contact.java @@ -5,18 +5,14 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; -import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.template.display.MemberNameDisplay; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.modmail.config.ModMailFeatureDefinition; import dev.sheldan.abstracto.modmail.config.ModMailSlashCommandNames; import dev.sheldan.abstracto.modmail.model.database.ModMailThread; @@ -24,8 +20,6 @@ import dev.sheldan.abstracto.modmail.model.template.ModMailThreadExistsModel; import dev.sheldan.abstracto.modmail.service.ModMailThreadService; import dev.sheldan.abstracto.modmail.service.management.ModMailThreadManagementService; import lombok.extern.slf4j.Slf4j; -import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -60,41 +54,12 @@ public class Contact extends AbstractConditionableCommand { @Autowired private UserInServerManagementService userManagementService; - @Autowired - private ChannelService channelService; - @Autowired private InteractionService interactionService; @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Member targetUser = (Member) commandContext.getParameters().getParameters().get(0); - if(!targetUser.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - AUserInAServer user = userManagementService.loadOrCreateUser(targetUser); - // if this AUserInAServer already has an open thread, we should instead post a message - // containing a link to the channel, instead of opening a new one - if(modMailThreadManagementService.hasOpenModMailThreadForUser(user)) { - log.info("Modmail thread for user {} in server {} already exists. Notifying user {}.", commandContext.getAuthor().getId(), commandContext.getGuild().getId(), user.getUserReference().getId()); - ModMailThread existingThread = modMailThreadManagementService.getOpenModMailThreadForUser(user); - ModMailThreadExistsModel model = ModMailThreadExistsModel - .builder() - .existingModMailThread(existingThread) - .executingMemberDisplay(MemberNameDisplay.fromMember(targetUser)) - .build(); - List> futures = channelService.sendEmbedTemplateInMessageChannel(MODMAIL_THREAD_ALREADY_EXISTS_TEMPLATE, model, commandContext.getChannel()); - return FutureUtils.toSingleFutureGeneric(futures).thenApply(aVoid -> CommandResult.fromIgnored()); - } else { - return modMailThreadService.createModMailThreadForUser(targetUser.getUser(), targetUser.getGuild(), null, false, commandContext.getUndoActions(), false) - .thenCompose(unused -> modMailThreadService.sendContactNotification(targetUser.getUser(), unused, commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { User user = slashCommandParameterService.getCommandOption(USER_PARMETER, event, User.class); @@ -149,6 +114,7 @@ public class Contact extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .async(true) .help(helpInfo) + .slashCommandOnly(true) .supportsEmbedException(true) .templated(true) .causesReaction(true) diff --git a/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Reminders.java b/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Reminders.java index 4a8adae6e..d54bb6f9d 100644 --- a/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Reminders.java +++ b/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Reminders.java @@ -6,20 +6,17 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.UserCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.database.AUser; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.template.display.UserDisplay; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.core.utils.ContextUtils; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.remind.config.RemindFeatureDefinition; import dev.sheldan.abstracto.remind.config.RemindSlashCommandNames; import dev.sheldan.abstracto.remind.model.database.Reminder; @@ -47,9 +44,6 @@ public class Reminders extends AbstractConditionableCommand { @Autowired private ReminderManagementService reminderManagementService; - @Autowired - private ChannelService channelService; - @Autowired private UserInServerManagementService userInServerManagementService; @@ -65,15 +59,6 @@ public class Reminders extends AbstractConditionableCommand { @Autowired private UserManagementService userManagementService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Long serverId = commandContext.getGuild().getIdLong(); - Member member = commandContext.getAuthor(); - MessageToSend messageToSend = getServerReminders(serverId, member); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromIgnored()); - } - private MessageToSend getServerReminders(Long serverId, Member member) { AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(member); List activeReminders = reminderManagementService.getActiveRemindersForUser(aUserInAServer); @@ -147,6 +132,7 @@ public class Reminders extends AbstractConditionableCommand { return CommandConfiguration.builder() .name("reminders") .async(true) + .slashCommandOnly(true) .module(UtilityModuleDefinition.UTILITY) .templated(true) .slashCommandConfig(slashCommandConfig) diff --git a/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Snooze.java b/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Snooze.java index 5abdfb45d..db46758fa 100644 --- a/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Snooze.java +++ b/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/Snooze.java @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -46,16 +45,6 @@ public class Snooze extends AbstractConditionableCommand { @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CommandResult execute(CommandContext commandContext) { - List newParameters = commandContext.getParameters().getParameters(); - Long reminderId = (Long) newParameters.get(0); - Duration newDuration = (Duration) newParameters.get(1); - AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); - reminderService.snoozeReminder(reminderId, aUserInAServer, newDuration); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long reminderId = slashCommandParameterService.getCommandOption(REMINDER_ID_PARAMETER, event, Long.class, Integer.class).longValue(); @@ -100,6 +89,7 @@ public class Snooze extends AbstractConditionableCommand { .templated(true) .supportsEmbedException(true) .causesReaction(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/UnRemind.java b/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/UnRemind.java index 6f5baf095..8ac9b3761 100644 --- a/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/UnRemind.java +++ b/abstracto-application/abstracto-modules/remind/remind-impl/src/main/java/dev/sheldan/abstracto/remind/command/UnRemind.java @@ -3,7 +3,6 @@ package dev.sheldan.abstracto.remind.command; import dev.sheldan.abstracto.core.command.UtilityModuleDefinition; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -47,13 +46,6 @@ public class UnRemind extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - Long reminderId = (Long) commandContext.getParameters().getParameters().get(0); - reminderService.unRemind(reminderId, userInServerManagementService.loadOrCreateUser(commandContext.getAuthor())); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long reminderId = slashCommandParameterService.getCommandOption(REMINDER_ID_PARAMETER, event, Long.class, Integer.class).longValue(); @@ -93,6 +85,7 @@ public class UnRemind extends AbstractConditionableCommand { .name(UN_REMIND_COMMAND) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .slashCommandConfig(slashCommandConfig) .causesReaction(true) diff --git a/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/command/StarStats.java b/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/command/StarStats.java index ffceecdeb..d26f951d6 100644 --- a/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/command/StarStats.java +++ b/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/command/StarStats.java @@ -6,15 +6,12 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.starboard.config.StarboardFeatureDefinition; import dev.sheldan.abstracto.starboard.config.StarboardSlashCommandNames; import dev.sheldan.abstracto.starboard.model.template.MemberStarStatsModel; @@ -39,9 +36,6 @@ public class StarStats extends AbstractConditionableCommand { @Autowired private StarboardService starboardService; - @Autowired - private ChannelService channelService; - @Autowired private TemplateService templateService; @@ -51,24 +45,6 @@ public class StarStats extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - if(parameters.isEmpty()) { - return starboardService.retrieveStarStats(commandContext.getGuild().getIdLong()) - .thenCompose(starStatsModel -> { - MessageToSend messageToSend = templateService.renderEmbedTemplate(STARSTATS_RESPONSE_TEMPLATE, starStatsModel, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())); - }).thenApply(o -> CommandResult.fromIgnored()); - } else { - Member targetMember = (Member) parameters.get(0); - MemberStarStatsModel memberStarStatsModel = starboardService.retrieveStarStatsForMember(targetMember); - MessageToSend messageToSend = templateService.renderEmbedTemplate(STARSTATS_SINGLE_MEMBER_RESPONSE_TEMPLATE, memberStarStatsModel, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromIgnored()); - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { if(slashCommandParameterService.hasCommandOption(MEMBER_PARAMETER, event)) { @@ -114,6 +90,7 @@ public class StarStats extends AbstractConditionableCommand { .templated(true) .slashCommandConfig(slashCommandConfig) .async(true) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(false) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Accept.java b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Accept.java index 5049fdd4d..df761266c 100644 --- a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Accept.java +++ b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Accept.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.UtilityModuleDefinition; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; @@ -41,16 +40,6 @@ public class Accept extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Long suggestionId = (Long) parameters.get(0); - String text = parameters.size() == 2 ? (String) parameters.get(1) : ""; - log.debug("Using default reason for accept: {}.", parameters.size() != 2); - return suggestionService.acceptSuggestion(commandContext.getGuild().getIdLong(), suggestionId, commandContext.getAuthor(), text) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long suggestionId = slashCommandParameterService.getCommandOption(SUGGESTION_ID_PARAMETER, event, Integer.class).longValue(); @@ -105,6 +94,7 @@ public class Accept extends AbstractConditionableCommand { .module(UtilityModuleDefinition.UTILITY) .templated(true) .async(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .causesReaction(true) diff --git a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Reject.java b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Reject.java index 07ef697cb..6e00fbf28 100644 --- a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Reject.java +++ b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Reject.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.UtilityModuleDefinition; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; @@ -41,16 +40,6 @@ public class Reject extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Long suggestionId = (Long) parameters.get(0); - String text = parameters.size() == 2 ? (String) parameters.get(1) : ""; - log.debug("Using default reason for reject: {}.", parameters.size() != 2); - return suggestionService.rejectSuggestion(commandContext.getGuild().getIdLong(), suggestionId, commandContext.getAuthor(), text) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long suggestionId = slashCommandParameterService.getCommandOption(SUGGESTION_ID_PARAMETER, event, Integer.class).longValue(); @@ -103,6 +92,7 @@ public class Reject extends AbstractConditionableCommand { .name(REJECT_COMMAND) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .async(true) .supportsEmbedException(true) diff --git a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/ShowSuggestion.java b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/ShowSuggestion.java index 7344b24cc..821d80cb9 100644 --- a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/ShowSuggestion.java +++ b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/ShowSuggestion.java @@ -4,15 +4,12 @@ import dev.sheldan.abstracto.core.command.UtilityModuleDefinition; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; -import dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.suggestion.config.SuggestionFeatureDefinition; import dev.sheldan.abstracto.suggestion.config.SuggestionSlashCommandNames; import dev.sheldan.abstracto.suggestion.model.template.SuggestionInfoModel; @@ -35,26 +32,12 @@ public class ShowSuggestion extends AbstractConditionableCommand { @Autowired private SuggestionService suggestionService; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Long suggestionId = (Long) parameters.get(0); - - SuggestionInfoModel suggestionInfoModel = suggestionService.getSuggestionInfo(commandContext.getGuild().getIdLong(), suggestionId); - return FutureUtils.toSingleFutureGeneric( - channelService.sendEmbedTemplateInMessageChannel(SHOW_SUGGESTION_TEMPLATE_KEY, suggestionInfoModel, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long suggestionId = slashCommandParameterService.getCommandOption(SUGGESTION_ID_PARAMETER, event, Long.class, Integer.class).longValue(); @@ -96,6 +79,7 @@ public class ShowSuggestion extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .async(true) .supportsEmbedException(true) .causesReaction(false) diff --git a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/UnSuggest.java b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/UnSuggest.java index f3c25ee1d..166d9883d 100644 --- a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/UnSuggest.java +++ b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/UnSuggest.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.UtilityModuleDefinition; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; @@ -37,14 +36,6 @@ public class UnSuggest extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Long suggestionId = (Long) parameters.get(0); - return suggestionService.removeSuggestion(commandContext.getGuild().getIdLong(), suggestionId, commandContext.getAuthor()) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long suggestionId = slashCommandParameterService.getCommandOption(SUGGESTION_ID_PARAMETER, event, Long.class, Integer.class).longValue(); @@ -83,6 +74,7 @@ public class UnSuggest extends AbstractConditionableCommand { .templated(true) .slashCommandConfig(slashCommandConfig) .async(true) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(true) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Veto.java b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Veto.java index 127c6047d..921171eb3 100644 --- a/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Veto.java +++ b/abstracto-application/abstracto-modules/suggestion/suggestion-impl/src/main/java/dev/sheldan/abstracto/suggestion/command/Veto.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.UtilityModuleDefinition; import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.validator.MinIntegerValueValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; @@ -41,16 +40,6 @@ public class Veto extends AbstractConditionableCommand { @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Long suggestionId = (Long) parameters.get(0); - String text = parameters.size() == 2 ? (String) parameters.get(1) : ""; - log.debug("Using default reason for veto: {}.", parameters.size() != 2); - return suggestionService.vetoSuggestion(commandContext.getGuild().getIdLong(), suggestionId, commandContext.getAuthor(), text) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long suggestionId = slashCommandParameterService.getCommandOption(SUGGESTION_ID_PARAMETER, event, Integer.class).longValue(); @@ -103,6 +92,7 @@ public class Veto extends AbstractConditionableCommand { .name(VETO_COMMAND) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .async(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ServerInfo.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ServerInfo.java index c19a5e4d3..b30ecff56 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ServerInfo.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ServerInfo.java @@ -6,15 +6,12 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.template.display.EmoteDisplay; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.utility.config.UtilityFeatureDefinition; import dev.sheldan.abstracto.utility.config.UtilitySlashCommandNames; import dev.sheldan.abstracto.utility.model.ServerInfoModel; @@ -35,23 +32,12 @@ public class ServerInfo extends AbstractConditionableCommand { public static final String SERVERINFO_RESPONSE_TEMPLATE_KEY = "serverinfo_response"; private static final String SERVER_INFO_COMMAND = "serverInfo"; - @Autowired - private ChannelService channelService; - @Autowired private TemplateService templateService; @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - log.info("Displaying serverinfo for server {}", commandContext.getGuild().getId()); - return FutureUtils.toSingleFutureGeneric( - channelService.sendMessageToSendToChannel(getMessageToSend(commandContext.getGuild()), commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { return interactionService.replyMessageToSend(getMessageToSend(event.getGuild()), event) @@ -103,6 +89,7 @@ public class ServerInfo extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .async(true) .supportsEmbedException(true) .causesReaction(false) diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ShowAvatar.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ShowAvatar.java index a6b68d7c1..ea36dc8d2 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ShowAvatar.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/ShowAvatar.java @@ -5,14 +5,10 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.handler.parameter.CombinedParameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; -import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; -import dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.utility.config.UtilityFeatureDefinition; import dev.sheldan.abstracto.utility.config.UtilitySlashCommandNames; import dev.sheldan.abstracto.utility.model.ShowAvatarModel; @@ -41,9 +37,6 @@ public class ShowAvatar extends AbstractConditionableCommand { private static final String MEMBER_PARAMETER = "member"; private static final String SHOW_AVATAR_COMMAND = "showAvatar"; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @@ -53,23 +46,6 @@ public class ShowAvatar extends AbstractConditionableCommand { @Value("${abstracto.feature.avatar.imagesize}") private Integer imageSize; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Member memberToShow = parameters.size() == 1 ? (Member) parameters.get(0) : commandContext.getUserInitiatedContext().getMember(); - if(!memberToShow.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - ShowAvatarModel model = ShowAvatarModel - .builder() - .avatarUrl(memberToShow.getEffectiveAvatar().getUrl(imageSize)) - .build(); - log.info("Showing avatar for member {} towards user {} in channel {} in server {}.", - memberToShow.getId(), commandContext.getAuthor().getId(), commandContext.getChannel().getId(), commandContext.getGuild().getId()); - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(SHOW_AVATAR_RESPONSE_TEMPLATE, model, commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String avatarUrl; @@ -135,6 +111,7 @@ public class ShowAvatar extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .async(true) .supportsEmbedException(true) .causesReaction(false) 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 index 7514d9563..f792e9d97 100644 --- 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 @@ -7,9 +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.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; -import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.utility.config.UtilityFeatureDefinition; @@ -32,12 +30,6 @@ public class ShowEmote extends AbstractConditionableCommand { @Autowired private ChannelService channelService; - @Autowired - private InteractionService interactionService; - - @Autowired - private SlashCommandParameterService slashCommandParameterService; - @Override public CompletableFuture executeAsync(CommandContext commandContext) { List parameters = commandContext.getParameters().getParameters(); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/UserInfo.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/UserInfo.java index 424c98e6f..19358395a 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/UserInfo.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/command/UserInfo.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.handler.parameter.CombinedParameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -13,10 +12,8 @@ import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.models.template.display.MemberNameDisplay; import dev.sheldan.abstracto.core.models.template.display.RoleDisplay; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.MemberService; import dev.sheldan.abstracto.core.utils.ContextUtils; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.utility.config.UtilityFeatureDefinition; import dev.sheldan.abstracto.utility.config.UtilitySlashCommandNames; import dev.sheldan.abstracto.utility.model.UserInfoModel; @@ -25,7 +22,6 @@ import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.User; -import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.InteractionHook; import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback; @@ -45,8 +41,6 @@ public class UserInfo extends AbstractConditionableCommand { public static final String USER_INFO_COMMAND = "userInfo"; public static final String MEMBER_PARAMETER = "member"; public static final String USER_INFO_RESPONSE = "userInfo_response"; - @Autowired - private ChannelService channelService; @Autowired private MemberService memberService; @@ -60,35 +54,6 @@ public class UserInfo extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - Member memberToShow = parameters.size() == 1 ? (Member) parameters.get(0) : commandContext.getAuthor(); - if(!memberToShow.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - UserInfoModel model = UserInfoModel - .builder() - .build(); - if(!memberToShow.hasTimeJoined()) { - log.info("Force reloading member {} in guild {} for user info.", memberToShow.getId(), memberToShow.getGuild().getId()); - return memberService.forceReloadMember(memberToShow).thenCompose(member -> { - fillUserInfoModel(model, member, false); - return self.sendResponse(commandContext.getChannel(), model) - .thenApply(aVoid -> CommandResult.fromIgnored()); - }); - } else { - fillUserInfoModel(model, memberToShow, false); - return self.sendResponse(commandContext.getChannel(), model) - .thenApply(aVoid -> CommandResult.fromIgnored()); - } - } - - @Transactional - public CompletableFuture sendResponse(MessageChannel channel, UserInfoModel model) { - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(USER_INFO_RESPONSE, model, channel)); - } - @Transactional public CompletableFuture sendResponse(IReplyCallback callback, UserInfoModel model) { return interactionService.replyEmbed(USER_INFO_RESPONSE, model, callback); @@ -204,6 +169,7 @@ public class UserInfo extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .module(UtilityModuleDefinition.UTILITY) .templated(true) + .slashCommandOnly(true) .async(true) .supportsEmbedException(true) .causesReaction(false) diff --git a/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/dictionaryapi/command/DictionaryApiDefinitionCommand.java b/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/dictionaryapi/command/DictionaryApiDefinitionCommand.java index 4e0b25048..5949f61bf 100644 --- a/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/dictionaryapi/command/DictionaryApiDefinitionCommand.java +++ b/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/dictionaryapi/command/DictionaryApiDefinitionCommand.java @@ -6,18 +6,15 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.UserCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.core.utils.ContextUtils; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.webservices.config.WebServicesSlashCommandNames; import dev.sheldan.abstracto.webservices.config.WebserviceFeatureDefinition; import dev.sheldan.abstracto.webservices.dictionaryapi.model.template.DictionaryMeaning; @@ -44,9 +41,6 @@ public class DictionaryApiDefinitionCommand extends AbstractConditionableCommand @Autowired private TemplateService templateService; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @@ -56,18 +50,6 @@ public class DictionaryApiDefinitionCommand extends AbstractConditionableCommand @Autowired private DictionaryApiService dictionaryApiService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - String parameter = (String) commandContext.getParameters().getParameters().get(0); - try { - MessageToSend message = getMessageToSend(commandContext.getGuild().getIdLong(), parameter); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(message, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } catch (IOException e) { - throw new AbstractoRunTimeException(e); - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String query = slashCommandParameterService.getCommandOption(SEARCH_QUERY_PARAMETER, event, String.class); @@ -127,6 +109,7 @@ public class DictionaryApiDefinitionCommand extends AbstractConditionableCommand .slashCommandConfig(slashCommandConfig) .async(true) .aliases(aliases) + .slashCommandOnly(true) .supportsEmbedException(true) .causesReaction(false) .parameters(parameters) diff --git a/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/wikipedia/command/WikipediaArticleSummaryCommand.java b/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/wikipedia/command/WikipediaArticleSummaryCommand.java index b0d16a40b..16e4108f2 100644 --- a/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/wikipedia/command/WikipediaArticleSummaryCommand.java +++ b/abstracto-application/abstracto-modules/webservices/webservices-impl/src/main/java/dev/sheldan/abstracto/webservices/wikipedia/command/WikipediaArticleSummaryCommand.java @@ -6,19 +6,16 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.UserCommandConfig; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.ConfigService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.core.utils.ContextUtils; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.webservices.config.WebServicesSlashCommandNames; import dev.sheldan.abstracto.webservices.config.WebserviceFeatureDefinition; import dev.sheldan.abstracto.webservices.wikipedia.config.WikipediaFeatureConfig; @@ -49,9 +46,6 @@ public class WikipediaArticleSummaryCommand extends AbstractConditionableCommand @Autowired private TemplateService templateService; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @@ -61,18 +55,6 @@ public class WikipediaArticleSummaryCommand extends AbstractConditionableCommand @Autowired private ConfigService configService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - String parameter = (String) commandContext.getParameters().getParameters().get(0); - try { - MessageToSend message = getMessageToSend(commandContext.getGuild().getIdLong(), parameter, null); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(message, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } catch (IOException e) { - throw new AbstractoRunTimeException(e); - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String query = slashCommandParameterService.getCommandOption(SEARCH_QUERY_PARAMETER, event, String.class); @@ -149,6 +131,7 @@ public class WikipediaArticleSummaryCommand extends AbstractConditionableCommand .async(true) .aliases(aliases) .supportsEmbedException(true) + .slashCommandOnly(true) .causesReaction(false) .parameters(parameters) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/AddToChannelGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/AddToChannelGroup.java index 2c802fabe..2bc28c08c 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/AddToChannelGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/AddToChannelGroup.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; @@ -43,17 +42,6 @@ public class AddToChannelGroup extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String name = (String) commandContext.getParameters().getParameters().get(0); - TextChannel channel = (TextChannel) commandContext.getParameters().getParameters().get(1); - if(!channel.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - channelGroupService.addChannelToChannelGroup(name, channel); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String channelGroupName = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); @@ -100,6 +88,7 @@ public class AddToChannelGroup extends AbstractConditionableCommand { .name(ADD_TO_CHANNEL_GROUP_COMMAND) .module(ChannelsModuleDefinition.CHANNELS) .aliases(aliases) + .slashCommandOnly(true) .parameters(parameters) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/CreateChannelGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/CreateChannelGroup.java index c9c475a59..b3d217de7 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/CreateChannelGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/CreateChannelGroup.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -44,16 +43,6 @@ public class CreateChannelGroup extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - String groupName = (String) parameters.get(0); - ChannelGroupType fakeChannelGroupType = (ChannelGroupType) parameters.get(1); - ChannelGroupType actualChannelGroupType = channelGroupTypeManagementService.findChannelGroupTypeByKey(fakeChannelGroupType.getGroupTypeKey()); - channelGroupService.createChannelGroup(groupName, commandContext.getGuild().getIdLong(), actualChannelGroupType); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String channelGroupName = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); @@ -99,6 +88,7 @@ public class CreateChannelGroup extends AbstractConditionableCommand { .module(ChannelsModuleDefinition.CHANNELS) .parameters(parameters) .aliases(aliases) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .templated(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DeleteChannelGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DeleteChannelGroup.java index 28ae29d3a..731de3f41 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DeleteChannelGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DeleteChannelGroup.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -38,13 +37,6 @@ public class DeleteChannelGroup extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String groupName = (String) commandContext.getParameters().getParameters().get(0); - channelGroupService.deleteChannelGroup(groupName, commandContext.getGuild().getIdLong()); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String channelGroupName = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); @@ -81,6 +73,7 @@ public class DeleteChannelGroup extends AbstractConditionableCommand { .module(ChannelsModuleDefinition.CHANNELS) .parameters(parameters) .aliases(aliases) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisableChannelGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisableChannelGroup.java index a9f0d9c62..184b90519 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisableChannelGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisableChannelGroup.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -37,13 +36,6 @@ public class DisableChannelGroup extends AbstractConditionableCommand { @Autowired private ChannelGroupService channelGroupService; - @Override - public CommandResult execute(CommandContext commandContext) { - String channelGroupName = (String) commandContext.getParameters().getParameters().get(0); - channelGroupService.disableChannelGroup(channelGroupName, commandContext.getGuild().getIdLong()); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String channelGroupName = slashCommandParameterService.getCommandOption(CHANNEL_GROUP_NAME_PARAMETER, event, String.class); @@ -77,6 +69,7 @@ public class DisableChannelGroup extends AbstractConditionableCommand { return CommandConfiguration.builder() .name(DISABLE_CHANNEL_GROUP_COMMAND) .module(ChannelsModuleDefinition.CHANNELS) + .slashCommandOnly(true) .parameters(parameters) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisablePostTarget.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisablePostTarget.java index 152a57d1d..77ae42e62 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisablePostTarget.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/DisablePostTarget.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.PostTargetNotValidException; @@ -39,16 +38,6 @@ public class DisablePostTarget extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String targetName = (String) commandContext.getParameters().getParameters().get(0); - if(!postTargetService.validPostTarget(targetName)) { - throw new PostTargetNotValidException(targetName, postTargetService.getAvailablePostTargets()); - } - postTargetService.disablePostTarget(targetName, commandContext.getGuild().getIdLong()); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String postTargetName = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); @@ -86,6 +75,7 @@ public class DisablePostTarget extends AbstractConditionableCommand { .name(DISABLE_POSTTARGET_COMMAND) .module(ChannelsModuleDefinition.CHANNELS) .parameters(parameters) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnableChannelGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnableChannelGroup.java index 1d8ba6ba6..2ee6eeeaa 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnableChannelGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnableChannelGroup.java @@ -38,13 +38,6 @@ public class EnableChannelGroup extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String channelGroupName = (String) commandContext.getParameters().getParameters().get(0); - channelGroupService.enableChannelGroup(channelGroupName, commandContext.getGuild().getIdLong()); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String channelGroupName = slashCommandParameterService.getCommandOption(CHANNEL_GROUP_NAME_PARAMETER, event, String.class); @@ -79,6 +72,7 @@ public class EnableChannelGroup extends AbstractConditionableCommand { .name(ENABLE_CHANNEL_GROUP_COMMAND) .module(ChannelsModuleDefinition.CHANNELS) .parameters(parameters) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnablePostTarget.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnablePostTarget.java index 2d4950023..b53d8d678 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnablePostTarget.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/EnablePostTarget.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.PostTargetNotValidException; @@ -39,16 +38,6 @@ public class EnablePostTarget extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String targetName = (String) commandContext.getParameters().getParameters().get(0); - if (!postTargetService.validPostTarget(targetName)) { - throw new PostTargetNotValidException(targetName, postTargetService.getAvailablePostTargets()); - } - postTargetService.enablePostTarget(targetName, commandContext.getGuild().getIdLong()); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String postTargetName = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); @@ -86,6 +75,7 @@ public class EnablePostTarget extends AbstractConditionableCommand { .name(ENABLE_POSTTARGET_COMMAND) .module(ChannelsModuleDefinition.CHANNELS) .parameters(parameters) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java index 4725a04a4..948abeee4 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -51,13 +50,6 @@ public class ListChannelGroups extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - MessageToSend response = getMessageToSend(commandContext.getGuild()); - channelService.sendMessageToSendToChannel(response, commandContext.getChannel()); - return CommandResult.fromIgnored(); - } - private MessageToSend getMessageToSend(Guild guild) { AServer server = serverManagementService.loadServer(guild); List channelGroups = channelGroupManagementService.findAllInServer(server); @@ -96,6 +88,7 @@ public class ListChannelGroups extends AbstractConditionableCommand { .module(ChannelsModuleDefinition.CHANNELS) .slashCommandConfig(slashCommandConfig) .aliases(aliases) + .slashCommandOnly(true) .templated(true) .help(helpInfo) .supportsEmbedException(true) 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 2a170c057..8dffdca3c 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 @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; import dev.sheldan.abstracto.core.command.exception.SlashCommandParameterMissingException; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; @@ -26,7 +25,6 @@ import dev.sheldan.abstracto.core.service.management.PostTargetManagement; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -72,21 +70,6 @@ public class PostTargetCommand extends AbstractConditionableCommand { @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Guild guild = commandContext.getGuild(); - if (commandContext.getParameters().getParameters().isEmpty()) { - log.debug("Displaying existing post targets for guild {}.", guild.getId()); - MessageToSend messageToSend = getMessageToSendForPosttargetDisplay(guild); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromSuccess()); - } - String targetName = (String) commandContext.getParameters().getParameters().get(0); - GuildChannel channel = (GuildChannel) commandContext.getParameters().getParameters().get(1); - validateAndCreatePosttarget(guild, targetName, channel); - return CompletableFuture.completedFuture(CommandResult.fromSuccess()); - } - private void validateAndCreatePosttarget(Guild guild, String targetName, GuildChannel channel) { if (!postTargetService.validPostTarget(targetName)) { throw new PostTargetNotValidException(targetName, postTargetService.getAvailablePostTargets()); @@ -190,6 +173,7 @@ public class PostTargetCommand extends AbstractConditionableCommand { .module(ChannelsModuleDefinition.CHANNELS) .parameters(parameters) .async(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/RemoveFromChannelGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/RemoveFromChannelGroup.java index 5a82e7c08..4b99854dd 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/RemoveFromChannelGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/RemoveFromChannelGroup.java @@ -8,10 +8,8 @@ import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; import dev.sheldan.abstracto.core.command.exception.SlashCommandParameterMissingException; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; -import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.database.AChannel; @@ -47,18 +45,6 @@ public class RemoveFromChannelGroup extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String name = (String) commandContext.getParameters().getParameters().get(0); - AChannel fakeChannel = (AChannel) commandContext.getParameters().getParameters().get(1); - AChannel actualChannel = channelManagementService.loadChannel(fakeChannel.getId()); - if (!actualChannel.getServer().getId().equals(commandContext.getGuild().getIdLong())) { - throw new EntityGuildMismatchException(); - } - channelGroupService.removeChannelFromChannelGroup(name, actualChannel); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String channelGroupName = slashCommandParameterService.getCommandOption(NAME_PARAMETER, event, String.class); @@ -110,6 +96,7 @@ public class RemoveFromChannelGroup extends AbstractConditionableCommand { .name(REMOVE_FROM_CHANNEL_GROUP_COMMAND) .module(ChannelsModuleDefinition.CHANNELS) .aliases(aliases) + .slashCommandOnly(true) .parameters(parameters) .slashCommandConfig(slashCommandConfig) .templated(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ClearCache.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ClearCache.java index 265b7c444..1489ad8c7 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ClearCache.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ClearCache.java @@ -9,7 +9,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -38,13 +37,6 @@ public class ClearCache extends AbstractConditionableCommand { @Autowired private BotOwnerOnlyCondition botOwnerOnlyCondition; - - @Override - public CommandResult execute(CommandContext commandContext) { - cacheServiceBean.clearCaches(); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { cacheServiceBean.clearCaches(); @@ -72,6 +64,7 @@ public class ClearCache extends AbstractConditionableCommand { .name(CLEAR_CACHE_COMMAND) .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ResetConfig.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ResetConfig.java index ba39afab4..920a2f930 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ResetConfig.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/ResetConfig.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -47,24 +46,6 @@ public class ResetConfig extends AbstractConditionableCommand { private static final String KEY_PARAMETER = "key"; private static final String RESET_CONFIG_COMMAND = "resetConfig"; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Long serverId = commandContext.getGuild().getIdLong(); - if(!commandContext.getParameters().getParameters().isEmpty()) { - String name = (String) commandContext.getParameters().getParameters().get(0); - if(featureManagementService.featureExists(name)) { - configService.resetConfigForFeature(name, serverId); - } else if(defaultConfigManagementService.configKeyExists(name)) { - configService.resetConfigForKey(name, serverId); - } else { - throw new ConfigurationKeyNotFoundException(name); - } - } else { - configService.resetConfigForServer(serverId); - } - return CompletableFuture.completedFuture(CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { long serverId = event.getGuild().getIdLong(); @@ -114,6 +95,7 @@ public class ResetConfig extends AbstractConditionableCommand { .templated(true) .slashCommandConfig(slashCommandConfig) .async(true) + .slashCommandOnly(true) .supportsEmbedException(true) .help(helpInfo) .causesReaction(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/SetConfig.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/SetConfig.java index 8504a8efe..07ffeb2bb 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/SetConfig.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/SetConfig.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -39,15 +38,6 @@ public class SetConfig extends AbstractConditionableCommand { private static final String RESPONSE_TEMPLATE = "setConfig_response"; - @Override - public CommandResult execute(CommandContext commandContext) { - String key = (String) commandContext.getParameters().getParameters().get(0); - String value = (String) commandContext.getParameters().getParameters().get(1); - configService.setOrCreateConfigValue(key, commandContext.getGuild().getIdLong(), value); - - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String key = slashCommandParameterService.getCommandOption(KEY_PARAMETER, event, String.class); @@ -90,6 +80,7 @@ public class SetConfig extends AbstractConditionableCommand { .name(SET_CONFIG_COMMAND) .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .templated(true) .supportsEmbedException(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableFeature.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableFeature.java index e8666fdae..12f3c5aa5 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableFeature.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableFeature.java @@ -8,7 +8,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureConfig; @@ -17,14 +16,12 @@ import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.template.commands.FeatureSwitchModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.FeatureConfigService; import dev.sheldan.abstracto.core.service.FeatureFlagService; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -45,9 +42,6 @@ public class DisableFeature extends AbstractConditionableCommand { @Autowired private FeatureFlagService featureFlagService; - @Autowired - private ChannelService channelService; - @Autowired private TemplateService templateService; @@ -64,31 +58,6 @@ public class DisableFeature extends AbstractConditionableCommand { private static final String DISABLE_FEATURE_RESPONSE_TEMPLATE_KEY = "disableFeature_response"; private static final String FEATURE_NAME_PARAMETER = "featureName"; - - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - String flagKey = (String) commandContext.getParameters().getParameters().get(0); - FeatureConfig feature = featureConfigService.getFeatureDisplayForFeature(flagKey); - Long serverId = commandContext.getGuild().getIdLong(); - List featureDependencies = disableFeature(feature, serverId); - if (featureDependencies.isEmpty()) { - return CompletableFuture.completedFuture(CommandResult.fromSuccess()); - } else { - List additionalFeatures = featureDependencies - .stream() - .map(featureDef -> featureDef.getFeature().getKey()). - collect(Collectors.toList()); - FeatureSwitchModel model = FeatureSwitchModel - .builder() - .features(additionalFeatures) - .build(); - MessageToSend messageToSend = templateService.renderEmbedTemplate(DISABLE_FEATURE_DEPENDENCIES_RESPONSE_TEMPLATE_KEY, - model, serverId); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(message -> CommandResult.fromIgnored()); - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String featureName = slashCommandParameterService.getCommandOption(FEATURE_NAME_PARAMETER, event, String.class); @@ -160,6 +129,7 @@ public class DisableFeature extends AbstractConditionableCommand { .parameters(parameters) .async(true) .help(helpInfo) + .slashCommandOnly(true) .templated(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableMode.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableMode.java index 943f6f977..443f642fc 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableMode.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/DisableMode.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -50,17 +49,6 @@ public class DisableMode extends AbstractConditionableCommand { private static final String MODE_PARAMETER = "mode"; private static final String DISABLE_MODE_COMMAND = "disableMode"; - @Override - public CommandResult execute(CommandContext commandContext) { - String featureName = (String) commandContext.getParameters().getParameters().get(0); - String modeName = (String) commandContext.getParameters().getParameters().get(1); - FeatureDefinition featureDefinition = featureConfigService.getFeatureEnum(featureName); - FeatureMode featureMode = featureModeService.getFeatureModeForKey(featureName, modeName); - AServer server = serverManagementService.loadServer(commandContext.getGuild()); - featureModeService.disableFeatureModeForFeature(featureDefinition, server, featureMode); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String featureName = slashCommandParameterService.getCommandOption(FEATURE_PARAMETER, event, String.class); @@ -108,6 +96,7 @@ public class DisableMode extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableFeature.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableFeature.java index be125815d..ac3b83594 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableFeature.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableFeature.java @@ -8,7 +8,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureConfig; @@ -18,14 +17,12 @@ import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.FeatureValidationResult; import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.template.commands.FeatureSwitchModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.FeatureConfigService; import dev.sheldan.abstracto.core.service.FeatureFlagService; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; @@ -47,9 +44,6 @@ public class EnableFeature extends AbstractConditionableCommand { @Autowired private FeatureFlagService featureFlagService; - @Autowired - private ChannelService channelService; - @Autowired private TemplateService templateService; @@ -67,41 +61,6 @@ public class EnableFeature extends AbstractConditionableCommand { private static final String FEATURE_NAME_PARAMETER = "featureName"; private static final String ENABLE_FEATURE_COMMAND = "enableFeature"; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Long serverId = commandContext.getGuild().getIdLong(); - String featureKey = (String) commandContext.getParameters().getParameters().get(0); - EnableFeatureResult result = enableFeature(serverId, featureKey); - - if(result.featureDependencies.isEmpty()) { - if(!result.validationResult.getValidationResult()) { - FeatureSwitchModel model = FeatureSwitchModel - .builder() - .validationText(result.validationResult.getValidationText()) - .build(); - MessageToSend messageToSend = templateService.renderEmbedTemplate(ENABLE_FEATURE_RESPONSE_TEMPLATE_KEY, model, serverId); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(message -> CommandResult.fromIgnored()); - } else { - return CompletableFuture.completedFuture(CommandResult.fromSuccess()); - } - } else { - List additionalFeatures = result.featureDependencies - .stream() - .map(featureDef -> featureDef.getFeature().getKey()). - collect(Collectors.toList()); - FeatureSwitchModel model = FeatureSwitchModel - .builder() - .features(additionalFeatures) - .validationText(result.validationResult.getValidationText()) - .build(); - MessageToSend messageToSend = templateService.renderEmbedTemplate(ENABLE_FEATURE_DEPENDENCIES_RESPONSE_TEMPLATE_KEY, - model, serverId); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(message -> CommandResult.fromIgnored()); - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String featureName = slashCommandParameterService.getCommandOption(FEATURE_NAME_PARAMETER, event, String.class); @@ -183,6 +142,7 @@ public class EnableFeature extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) .async(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .templated(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableMode.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableMode.java index 6d73e3404..0aa57f92f 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableMode.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/EnableMode.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -50,17 +49,6 @@ public class EnableMode extends AbstractConditionableCommand { private static final String MODE_PARAMETER = "mode"; private static final String ENABLE_MODE_COMMAND = "enableMode"; - @Override - public CommandResult execute(CommandContext commandContext) { - String featureName = (String) commandContext.getParameters().getParameters().get(0); - String modeName = (String) commandContext.getParameters().getParameters().get(1); - FeatureDefinition featureDefinition = featureConfigService.getFeatureEnum(featureName); - FeatureMode featureMode = featureModeService.getFeatureModeForKey(featureName, modeName); - AServer server = serverManagementService.loadServer(commandContext.getGuild().getIdLong()); - featureModeService.enableFeatureModeForFeature(featureDefinition, server, featureMode); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String featureName = slashCommandParameterService.getCommandOption(FEATURE_PARAMETER, event, String.class); @@ -105,6 +93,7 @@ public class EnableMode extends AbstractConditionableCommand { .name(ENABLE_MODE_COMMAND) .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) + .slashCommandOnly(true) .templated(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/FeatureModes.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/FeatureModes.java index 74fb66f66..14ba36be8 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/FeatureModes.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/FeatureModes.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; @@ -18,12 +17,10 @@ import dev.sheldan.abstracto.core.models.database.AFeature; import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.template.commands.FeatureModeDisplay; import dev.sheldan.abstracto.core.models.template.commands.FeatureModesModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.FeatureConfigService; import dev.sheldan.abstracto.core.service.FeatureModeService; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -47,9 +44,6 @@ public class FeatureModes extends AbstractConditionableCommand { @Autowired private FeatureModeService featureModeService; - @Autowired - private ChannelService channelService; - @Autowired private ServerManagementService serverManagementService; @@ -59,26 +53,6 @@ public class FeatureModes extends AbstractConditionableCommand { @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - List featureModes; - AServer server = serverManagementService.loadServer(commandContext.getGuild()); - if(commandContext.getParameters().getParameters().isEmpty()) { - featureModes = featureModeService.getEffectiveFeatureModes(server); - } else { - String featureName = (String) commandContext.getParameters().getParameters().get(0); - FeatureDefinition featureDefinition = featureConfigService.getFeatureEnum(featureName); - AFeature feature = featureManagementService.getFeature(featureDefinition.getKey()); - featureModes = featureModeService.getEffectiveFeatureModes(server, feature); - } - FeatureModesModel model = FeatureModesModel - .builder() - .featureModes(featureModes) - .build(); - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(FEATURE_MODES_RESPONSE_TEMPLATE_KEY, model, commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { List featureModes; @@ -131,6 +105,7 @@ public class FeatureModes extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .help(helpInfo) .async(true) + .slashCommandOnly(true) .causesReaction(true) .build(); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/Features.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/Features.java index 145820da2..ac2444904 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/Features.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/Features.java @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -17,11 +16,9 @@ import dev.sheldan.abstracto.core.models.database.AFeatureFlag; import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.property.FeatureFlagProperty; import dev.sheldan.abstracto.core.models.template.commands.FeaturesModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.DefaultFeatureFlagManagementService; import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -40,9 +37,6 @@ public class Features extends AbstractConditionableCommand { @Autowired private FeatureFlagManagementService featureFlagManagementService; - @Autowired - private ChannelService channelService; - @Autowired private TemplateService templateService; @@ -58,13 +52,6 @@ public class Features extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - MessageToSend messageToSend = getMessageToSend(commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenApply(aVoid -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { MessageToSend messageToSend = getMessageToSend(event.getGuild().getIdLong()); @@ -115,6 +102,7 @@ public class Features extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .templated(true) .async(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeAffected.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeAffected.java index 7ef06c30f..e54dcfd0a 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeAffected.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeAffected.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -46,18 +45,6 @@ public class MakeAffected extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String name = (String) commandContext.getParameters().getParameters().get(0); - Role role = (Role) commandContext.getParameters().getParameters().get(1); - if(!role.getGuild().getId().equals(commandContext.getGuild().getId())) { - throw new EntityGuildMismatchException(); - } - ARole aRole = roleManagementService.findRole(role.getIdLong()); - roleImmunityService.makeRoleAffected(aRole, name); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String name = slashCommandParameterService.getCommandOption(EFFECT_PARAMETER, event, String.class); @@ -108,6 +95,7 @@ public class MakeAffected extends AbstractConditionableCommand { .parameters(parameters) .supportsEmbedException(true) .help(helpInfo) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .templated(true) .causesReaction(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeImmune.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeImmune.java index 44bb1511b..e7799d008 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeImmune.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/MakeImmune.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -42,17 +41,6 @@ public class MakeImmune extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String name = (String) commandContext.getParameters().getParameters().get(0); - Role role = (Role) commandContext.getParameters().getParameters().get(1); - if(!role.getGuild().equals(commandContext.getGuild())) { - throw new EntityGuildMismatchException(); - } - roleImmunityService.makeRoleImmune(role, name); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String name = slashCommandParameterService.getCommandOption(EFFECT_PARAMETER, event, String.class); @@ -100,6 +88,7 @@ public class MakeImmune extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) .templated(true) + .slashCommandOnly(true) .supportsEmbedException(true) .slashCommandConfig(slashCommandConfig) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/ShowEffects.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/ShowEffects.java index dc5b4b190..2b3344b78 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/ShowEffects.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/features/ShowEffects.java @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -14,9 +13,7 @@ import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.database.EffectType; import dev.sheldan.abstracto.core.models.template.commands.ShowEffectsModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.EffectTypeManagementService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -34,20 +31,9 @@ public class ShowEffects extends AbstractConditionableCommand { @Autowired private EffectTypeManagementService effectTypeManagementService; - @Autowired - private ChannelService channelService; - @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - ShowEffectsModel model = getModel(); - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(SHOW_EFFECTS_RESPONSE_TEMPLATE, - model, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { ShowEffectsModel model = getModel(); @@ -84,6 +70,7 @@ public class ShowEffects extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .templated(true) .async(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .help(helpInfo) .build(); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/AddProfanityRegex.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/AddProfanityRegex.java index 9de266327..33d4b6b7b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/AddProfanityRegex.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/AddProfanityRegex.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -42,22 +41,6 @@ public class AddProfanityRegex extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - String profanityGroupName = (String) parameters.get(0); - String profanityName = (String) parameters.get(1); - String regex = (String) parameters.get(2); - Long serverId = commandContext.getGuild().getIdLong(); - if(parameters.size() < 4) { - profanityService.createProfanityRegex(serverId, profanityGroupName, profanityName, regex); - } else { - String replacement = (String) parameters.get(3); - profanityService.createProfanityRegex(serverId, profanityGroupName, profanityName, regex, replacement); - } - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String profanityGroup = slashCommandParameterService.getCommandOption(PROFANITY_GROUP_PARAMETER, event, String.class); @@ -120,6 +103,7 @@ public class AddProfanityRegex extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/CreateProfanityGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/CreateProfanityGroup.java index bb19d68fa..2e4bd51d3 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/CreateProfanityGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/CreateProfanityGroup.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -39,13 +38,6 @@ public class CreateProfanityGroup extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String profanityGroupName = (String) commandContext.getParameters().getParameters().get(0); - profanityService.createProfanityGroup(commandContext.getGuild().getIdLong(), profanityGroupName); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String profanityGroup = slashCommandParameterService.getCommandOption(PROFANITY_GROUP_NAME_PARAMETER, event, String.class); @@ -79,6 +71,7 @@ public class CreateProfanityGroup extends AbstractConditionableCommand { .name(CREATE_PROFANITY_GROUP_COMMAND) .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) + .slashCommandOnly(true) .templated(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/DeleteProfanityGroup.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/DeleteProfanityGroup.java index e53b418b0..1476ba72e 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/DeleteProfanityGroup.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/DeleteProfanityGroup.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -39,13 +38,6 @@ public class DeleteProfanityGroup extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - String profanityGroupName = (String) commandContext.getParameters().getParameters().get(0); - profanityService.deleteProfanityGroup(commandContext.getGuild().getIdLong(), profanityGroupName); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String profanityGroup = slashCommandParameterService.getCommandOption(PROFANITY_GROUP_NAME_PARAMETER, event, String.class); @@ -81,6 +73,7 @@ public class DeleteProfanityGroup extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) .slashCommandConfig(slashCommandConfig) + .slashCommandOnly(true) .templated(true) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/RemoveProfanityRegex.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/RemoveProfanityRegex.java index 6c4a5bfa1..4894a9285 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/RemoveProfanityRegex.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/RemoveProfanityRegex.java @@ -7,7 +7,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -40,15 +39,6 @@ public class RemoveProfanityRegex extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - String profanityGroupName = (String) parameters.get(0); - String profanityName = (String) parameters.get(1); - profanityService.deleteProfanityRegex(commandContext.getGuild().getIdLong(), profanityGroupName, profanityName); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String profanityGroup = slashCommandParameterService.getCommandOption(PROFANITY_GROUP_NAME_PARAMETER, event, String.class); @@ -90,6 +80,7 @@ public class RemoveProfanityRegex extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) .templated(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/ShowProfanityConfig.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/ShowProfanityConfig.java index a5b600c03..40558b30f 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/ShowProfanityConfig.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/profanity/ShowProfanityConfig.java @@ -6,7 +6,6 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -14,11 +13,9 @@ import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.database.ProfanityGroup; import dev.sheldan.abstracto.core.models.template.commands.ProfanityConfigModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.ProfanityGroupManagementService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -37,20 +34,9 @@ public class ShowProfanityConfig extends AbstractConditionableCommand { @Autowired private TemplateService templateService; - @Autowired - private ChannelService channelService; - @Autowired private InteractionService interactionService; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - Long serverId = commandContext.getGuild().getIdLong(); - MessageToSend message = getMessageToSend(serverId); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(message, commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { Long serverId = event.getGuild().getIdLong(); @@ -92,6 +78,7 @@ public class ShowProfanityConfig extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .supportsEmbedException(true) .help(helpInfo) + .slashCommandOnly(true) .causesReaction(true) .build(); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetCustomTemplate.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetCustomTemplate.java index 81d4d15ae..566a93498 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetCustomTemplate.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetCustomTemplate.java @@ -9,7 +9,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -17,14 +16,12 @@ import dev.sheldan.abstracto.core.exception.CustomTemplateNotFoundException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.template.commands.GetCustomTemplateModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.model.database.CustomTemplate; import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.core.templating.service.management.CustomTemplateManagementService; import dev.sheldan.abstracto.core.utils.FileService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -47,9 +44,6 @@ public class GetCustomTemplate extends AbstractConditionableCommand { @Autowired private CustomTemplateManagementService customTemplateManagementService; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @@ -65,16 +59,6 @@ public class GetCustomTemplate extends AbstractConditionableCommand { @Autowired private BotOwnerOnlyCondition botOwnerOnlyCondition; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - String templateKey = (String) commandContext.getParameters().getParameters().get(0); - GetCustomTemplateModel model = getModel(templateKey, commandContext.getGuild()); - MessageToSend messageToSend = templateService.renderEmbedTemplate(GET_CUSTOM_TEMPLATE_RESPONSE_TEMPLATE_KEY, model, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenAccept(interactionHook -> fileService.safeDeleteIgnoreException(messageToSend.getAttachedFiles().get(0).getFile())) - .thenApply(unused -> CommandResult.fromSuccess()); - } - private GetCustomTemplateModel getModel(String templateKey, Guild guild) { Optional templateOptional = customTemplateManagementService.getCustomTemplate(templateKey, guild.getIdLong()); return templateOptional.map(customTemplate -> { @@ -127,6 +111,7 @@ public class GetCustomTemplate extends AbstractConditionableCommand { .supportsEmbedException(true) .parameters(parameters) .async(true) + .slashCommandOnly(true) .slashCommandConfig(slashCommandConfig) .help(helpInfo) .templated(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetTemplate.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetTemplate.java index 3145a6aa9..f25239558 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetTemplate.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/GetTemplate.java @@ -9,7 +9,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -17,13 +16,11 @@ import dev.sheldan.abstracto.core.exception.TemplateNotFoundException; import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandPrivilegeLevels; import dev.sheldan.abstracto.core.models.template.commands.GetTemplateModel; -import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; import dev.sheldan.abstracto.core.templating.service.management.TemplateManagementService; import dev.sheldan.abstracto.core.utils.FileService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; @@ -44,9 +41,6 @@ public class GetTemplate extends AbstractConditionableCommand { @Autowired private TemplateManagementService templateManagementService; - @Autowired - private ChannelService channelService; - @Autowired private SlashCommandParameterService slashCommandParameterService; @@ -62,16 +56,6 @@ public class GetTemplate extends AbstractConditionableCommand { @Autowired private BotOwnerOnlyCondition botOwnerOnlyCondition; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - String templateKey = (String) commandContext.getParameters().getParameters().get(0); - GetTemplateModel model = getModel(templateKey); - MessageToSend messageToSend = templateService.renderEmbedTemplate(GET_TEMPLATE_RESPONSE_TEMPLATE_KEY, model, commandContext.getGuild().getIdLong()); - return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel())) - .thenAccept(interactionHook -> fileService.safeDeleteIgnoreException(messageToSend.getAttachedFiles().get(0).getFile())) - .thenApply(unused -> CommandResult.fromSuccess()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String templateKey = slashCommandParameterService.getCommandOption(TEMPLATE_KEY_PARAMETER, event, String.class); @@ -122,6 +106,7 @@ public class GetTemplate extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .async(true) .parameters(parameters) + .slashCommandOnly(true) .help(helpInfo) .templated(true) .causesReaction(true) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/ResetTemplate.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/ResetTemplate.java index 0149d5e4e..2d043d4af 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/ResetTemplate.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/ResetTemplate.java @@ -9,7 +9,6 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -51,18 +50,6 @@ public class ResetTemplate extends AbstractConditionableCommand { @Autowired private BotOwnerOnlyCondition botOwnerOnlyCondition; - @Override - public CommandResult execute(CommandContext commandContext) { - String templateKey = (String) commandContext.getParameters().getParameters().get(0); - Optional templateOptional = customTemplateManagementService.getCustomTemplate(templateKey, commandContext.getGuild().getIdLong()); - if (templateOptional.isPresent()) { - customTemplateManagementService.deleteCustomTemplate(templateOptional.get()); - templateService.clearCache(); - return CommandResult.fromSuccess(); - } - throw new CustomTemplateNotFoundException(templateKey, commandContext.getGuild()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String templateKey = slashCommandParameterService.getCommandOption(TEMPLATE_KEY_PARAMETER, event, String.class); @@ -106,6 +93,7 @@ public class ResetTemplate extends AbstractConditionableCommand { .parameters(parameters) .slashCommandConfig(slashCommandConfig) .help(helpInfo) + .slashCommandOnly(true) .templated(true) .causesReaction(true) .build(); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/SetTemplate.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/SetTemplate.java index 2cfc22241..b69d9e31b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/SetTemplate.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/config/template/SetTemplate.java @@ -10,7 +10,6 @@ import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -61,28 +60,6 @@ public class SetTemplate extends AbstractConditionableCommand { @Autowired private BotOwnerOnlyCondition botOwnerOnlyCondition; - @Override - public CommandResult execute(CommandContext commandContext) { - List parameter = commandContext.getParameters().getParameters(); - String templateKey = (String) parameter.get(0); - File templateFile = (File) parameter.get(1); - try { - String templateContent = FileUtils.readFileToString(templateFile, StandardCharsets.UTF_8); - customTemplateManagementService.createOrUpdateCustomTemplate(templateKey, templateContent, commandContext.getGuild().getIdLong()); - templateService.clearCache(); - return CommandResult.fromSuccess(); - } catch (IOException e) { - log.error("IO Exception when loading input file.", e); - throw new AbstractoTemplatedException("Failed to set template.", "failed_to_set_template_exception", e); - } finally { - try { - fileService.safeDelete(templateFile); - } catch (IOException e) { - log.error("Failed to delete downloaded template file.", e); - } - } - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String templateKey = slashCommandParameterService.getCommandOption(TEMPLATE_KEY_PARAMETER, event, String.class); @@ -155,6 +132,7 @@ public class SetTemplate extends AbstractConditionableCommand { .slashCommandConfig(slashCommandConfig) .help(helpInfo) .templated(true) + .slashCommandOnly(true) .causesReaction(true) .build(); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Documentation.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Documentation.java index 6e6712f52..9f5f552e4 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Documentation.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Documentation.java @@ -7,12 +7,9 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; -import dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.utils.FutureUtils; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -23,20 +20,11 @@ import java.util.concurrent.CompletableFuture; @Component public class Documentation extends AbstractConditionableCommand { - @Autowired - private ChannelService channelService; - @Autowired private InteractionService interactionService; private static final String DOCUMENTATION_RESPONSE_TEMPLATE_KEY = "documentation_response"; - @Override - public CompletableFuture executeAsync(CommandContext commandContext) { - return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInMessageChannel(DOCUMENTATION_RESPONSE_TEMPLATE_KEY, new Object(), commandContext.getChannel())) - .thenApply(unused -> CommandResult.fromIgnored()); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { return interactionService.replyEmbed(DOCUMENTATION_RESPONSE_TEMPLATE_KEY, new Object(), event) @@ -63,6 +51,7 @@ public class Documentation extends AbstractConditionableCommand { .name("documentation") .async(true) .aliases(Arrays.asList("docu", "docs")) + .slashCommandOnly(true) .module(SupportModuleDefinition.SUPPORT) .help(helpInfo) .slashCommandConfig(slashCommandConfig) 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 8b53a1198..cb53175cf 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 @@ -8,7 +8,6 @@ import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.config.UserCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.interaction.InteractionService; @@ -18,7 +17,6 @@ import dev.sheldan.abstracto.core.models.template.commands.EchoModel; import dev.sheldan.abstracto.core.models.template.commands.EchoRedirectResponseModel; import dev.sheldan.abstracto.core.models.template.display.ChannelDisplay; import dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.templating.service.TemplateService; import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -38,9 +36,6 @@ public class Echo extends AbstractConditionableCommand { public static final String INPUT_PARAMETER = "input"; public static final String TARGET_CHANNEL_PARAMETER = "targetChannel"; - @Autowired - private TemplateService templateService; - @Autowired private ChannelService channelService; @@ -50,21 +45,6 @@ public class Echo extends AbstractConditionableCommand { @Autowired private SlashCommandParameterService slashCommandParameterService; - @Override - public CommandResult execute(CommandContext commandContext) { - StringBuilder sb = new StringBuilder(); - commandContext.getParameters().getParameters().forEach(o -> - sb.append(o.toString()) - ); - EchoModel model = EchoModel - .builder() - .text(sb.toString()) - .build(); - String textToSend = templateService.renderTemplate(TEMPLATE_NAME, model, commandContext.getGuild().getIdLong()); - channelService.sendTextToChannel(textToSend, commandContext.getChannel()); - return CommandResult.fromIgnored(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String message = slashCommandParameterService.getCommandOption(INPUT_PARAMETER, event, String.class); @@ -129,6 +109,7 @@ public class Echo extends AbstractConditionableCommand { HelpInfo helpInfo = HelpInfo.builder().templated(true).build(); return CommandConfiguration.builder() .name(ECHO_COMMAND) + .slashCommandOnly(true) .module(UtilityModuleDefinition.UTILITY) .templated(true) .supportsEmbedException(true) 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 4f63a3681..ab80b4a5f 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 @@ -39,7 +39,6 @@ public class Ping extends AbstractConditionableCommand { .thenApply(message -> CommandResult.fromIgnored()); } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { PingModel model = buildModel(event.getJDA()); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java index 50c51d59d..5d2d1f9e5 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java @@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition; import dev.sheldan.abstracto.core.command.config.validator.MaxStringLengthValidator; -import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -39,15 +38,6 @@ public class SetEmote extends AbstractConditionableCommand { @Autowired private InteractionService interactionService; - @Override - public CommandResult execute(CommandContext commandContext) { - List parameters = commandContext.getParameters().getParameters(); - String emoteKey = (String) parameters.get(0); - AEmote emote = (AEmote) parameters.get(1); - emoteManagementService.setEmoteToAEmote(emoteKey, emote, commandContext.getGuild().getIdLong()); - return CommandResult.fromSuccess(); - } - @Override public CompletableFuture executeSlash(SlashCommandInteractionEvent event) { String emoteKey = slashCommandParameterService.getCommandOption(EMOTE_KEY_PARAMETER, event, String.class); @@ -91,6 +81,7 @@ public class SetEmote extends AbstractConditionableCommand { .module(ConfigModuleDefinition.CONFIG) .parameters(parameters) .supportsEmbedException(true) + .slashCommandOnly(true) .help(helpInfo) .slashCommandConfig(slashCommandConfig) .templated(true)