From 6ed3a133e2e5459f2a4a6cec295c50657629ba60 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Tue, 28 Apr 2020 21:32:20 +0200 Subject: [PATCH] added allowed roles, immune roles and restriction status to help command --- .../abstracto/core/commands/help/Help.java | 21 +++++++++++++++++++ ...p_command_details_response_embed_en_US.ftl | 7 +++++++ .../help/HelpCommandDetailsModel.java | 6 ++++++ 3 files changed, 34 insertions(+) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Help.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Help.java index 1a7da354b..c7fd81ba0 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Help.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/help/Help.java @@ -3,14 +3,19 @@ package dev.sheldan.abstracto.core.commands.help; import dev.sheldan.abstracto.core.command.*; import dev.sheldan.abstracto.core.command.config.*; import dev.sheldan.abstracto.core.command.execution.*; +import dev.sheldan.abstracto.core.command.models.database.ACommand; +import dev.sheldan.abstracto.core.command.models.database.ACommandInAServer; import dev.sheldan.abstracto.core.command.service.CommandRegistry; import dev.sheldan.abstracto.core.command.service.ModuleRegistry; +import dev.sheldan.abstracto.core.command.service.management.CommandInServerManagementService; +import dev.sheldan.abstracto.core.command.service.management.CommandManagementService; import dev.sheldan.abstracto.core.config.FeatureEnum; import dev.sheldan.abstracto.core.config.features.CoreFeatures; import dev.sheldan.abstracto.core.models.template.commands.help.HelpCommandDetailsModel; import dev.sheldan.abstracto.core.models.template.commands.help.HelpModuleDetailsModel; import dev.sheldan.abstracto.core.models.template.commands.help.HelpModuleOverviewModel; import dev.sheldan.abstracto.core.service.ChannelService; +import dev.sheldan.abstracto.core.service.RoleService; import dev.sheldan.abstracto.templating.model.MessageToSend; import dev.sheldan.abstracto.templating.service.TemplateService; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +41,15 @@ public class Help implements Command { @Autowired private CommandRegistry commandRegistry; + @Autowired + private CommandInServerManagementService commandInServerManagementService; + + @Autowired + private CommandManagementService commandManagementService; + + @Autowired + private RoleService roleService; + @Override public CommandResult execute(CommandContext commandContext) { List parameters = commandContext.getParameters().getParameters(); @@ -59,7 +73,14 @@ public class Help implements Command { channelService.sendMessageToEndInTextChannel(messageToSend, commandContext.getChannel()); } else if(commandRegistry.commandExists(parameter)) { Command command = commandRegistry.getCommandByName(parameter); + ACommand aCommand = commandManagementService.findCommandByName(parameter); + ACommandInAServer aCommandInAServer = commandInServerManagementService.getCommandForServer(aCommand, commandContext.getUserInitiatedContext().getServer()); HelpCommandDetailsModel model = (HelpCommandDetailsModel) ContextConverter.fromCommandContext(commandContext, HelpCommandDetailsModel.class); + if(aCommandInAServer.getRestricted()) { + model.setImmuneRoles(roleService.getRolesFromGuild(aCommandInAServer.getImmuneRoles())); + model.setAllowedRoles(roleService.getRolesFromGuild(aCommandInAServer.getAllowedRoles())); + model.setRestricted(true); + } model.setCommand(command.getConfiguration()); MessageToSend messageToSend = templateService.renderEmbedTemplate("help_command_details_response", model); channelService.sendMessageToEndInTextChannel(messageToSend, commandContext.getChannel()); diff --git a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/help/help_command_details_response_embed_en_US.ftl b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/help/help_command_details_response_embed_en_US.ftl index 159030270..b29044a60 100644 --- a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/help/help_command_details_response_embed_en_US.ftl +++ b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/coreCommands/help/help_command_details_response_embed_en_US.ftl @@ -25,6 +25,13 @@ Detailed help: ${command.help.longHelp} <#if command.aliases?? && command.aliases?size gt 0> Aliases: `${command.aliases?join("`, `")}` +Restrictions: +<#if restricted?? && restricted> +Executable by:<#if allowedRoles??> <#list allowedRoles as allowedRole> ${allowedRole.asMention}<#sep>or<#else>Nobody +<#if immuneRoles?? > Immune roles: <#list immuneRoles as immuneRole> ${immuneRole.asMention}<#sep>or<#else>None +<#else> +Not restricted + Parameters: <#if command.parameters??> diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/help/HelpCommandDetailsModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/help/HelpCommandDetailsModel.java index d145cdb19..3deef901f 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/help/HelpCommandDetailsModel.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/help/HelpCommandDetailsModel.java @@ -5,10 +5,16 @@ import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Role; + +import java.util.List; @Getter @Setter @SuperBuilder public class HelpCommandDetailsModel extends UserInitiatedServerContext { private CommandConfiguration command; + private List allowedRoles; + private List immuneRoles; + private Boolean restricted; }