mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-11 18:57:58 +00:00
[AB-52] upgrading to alpha 12
adding anonymous reporting reworking message context commands refactoring interaction packages adding post execution handling for message context commands and modals reworking feature mode response fixing setup using component ids storing infraction parameters, for example mute duration, with every infraction adding infractions for more moderation actions creating general method to format a duration string adding infractions command reworking muting to use built-in functionality of discord enabling chunking of members removing manual unmuting feature mode adding ability to update infractions with a command implemented infraction listeners for ban and warn refactored infraction notifications storing log messages to the infraction for editing said log messages
This commit is contained in:
@@ -9,12 +9,15 @@ import dev.sheldan.abstracto.core.command.exception.InsufficientParametersExcept
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterIterators;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandConfirmationModel;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandConfirmationPayload;
|
||||
import dev.sheldan.abstracto.core.interaction.button.CommandConfirmationModel;
|
||||
import dev.sheldan.abstracto.core.interaction.button.CommandConfirmationPayload;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandManager;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.command.service.PostCommandExecution;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentPayloadService;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentService;
|
||||
import dev.sheldan.abstracto.core.metric.service.CounterMetric;
|
||||
import dev.sheldan.abstracto.core.metric.service.MetricService;
|
||||
import dev.sheldan.abstracto.core.metric.service.MetricTag;
|
||||
@@ -379,10 +382,22 @@ public class CommandReceivedHandler extends ListenerAdapter {
|
||||
return CompletableFuture.completedFuture(Parameters.builder().parameters(new ArrayList<>()).build());
|
||||
}
|
||||
log.debug("Parsing parameters for command {} based on message {}.", command.getConfiguration().getName(), message.getId());
|
||||
Iterator<TextChannel> channelIterator = message.getMentionedChannels().iterator();
|
||||
Iterator<Emote> emoteIterator = message.getEmotesBag().iterator();
|
||||
Iterator<Member> memberIterator = message.getMentionedMembers().iterator();
|
||||
Iterator<Role> roleIterator = message.getMentionedRolesBag().iterator();
|
||||
Iterator<TextChannel> channelIterator = message
|
||||
.getMentions()
|
||||
.getChannels()
|
||||
.stream()
|
||||
.filter(TextChannel.class::isInstance)
|
||||
.map(TextChannel.class::cast)
|
||||
.iterator();
|
||||
Iterator<Emote> emoteIterator = message
|
||||
.getMentions()
|
||||
.getEmotesBag()
|
||||
.iterator();
|
||||
Iterator<Member> memberIterator = message
|
||||
.getMentions()
|
||||
.getMembers()
|
||||
.iterator();
|
||||
Iterator<Role> roleIterator = message.getMentions().getRolesBag().iterator();
|
||||
Parameter param = parameters.get(0);
|
||||
CommandParameterIterators iterators = new CommandParameterIterators(channelIterator, emoteIterator, memberIterator, roleIterator);
|
||||
Set<CommandParameterHandler> usedParameterHandler = findNecessaryCommandParameterHandlers(parameters, unParsedCommandParameter);
|
||||
|
||||
@@ -8,6 +8,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.execution.ResultState;
|
||||
import dev.sheldan.abstracto.core.command.service.ExceptionService;
|
||||
import dev.sheldan.abstracto.core.command.service.PostCommandExecution;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionExceptionService;
|
||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
@@ -25,6 +26,9 @@ public class ExceptionPostExecution implements PostCommandExecution {
|
||||
@Autowired
|
||||
private ConfigService configService;
|
||||
|
||||
@Autowired
|
||||
private InteractionExceptionService interactionExceptionService;
|
||||
|
||||
@Override
|
||||
public void execute(CommandContext commandContext, CommandResult commandResult, Command command) {
|
||||
ResultState result = commandResult.getResult();
|
||||
@@ -56,7 +60,7 @@ public class ExceptionPostExecution implements PostCommandExecution {
|
||||
}
|
||||
}
|
||||
log.info("Exception handling for exception {}.", throwable.getClass().getSimpleName());
|
||||
exceptionService.reportSlashException(throwable, interaction, command);
|
||||
interactionExceptionService.reportSlashException(throwable, interaction, command);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import dev.sheldan.abstracto.core.command.model.database.ACommandInServerAlias;
|
||||
import dev.sheldan.abstracto.core.metric.service.MetricService;
|
||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
||||
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -41,9 +40,6 @@ public class CommandManager implements CommandRegistry {
|
||||
@Autowired
|
||||
private CommandInServerAliasService commandInServerAliasService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Override
|
||||
public Command findCommandByParameters(String name, UnParsedCommandParameter unParsedCommandParameter, Long serverId) {
|
||||
Optional<Command> commandOptional = commands.stream().filter(getCommandByNameAndParameterPredicate(name, unParsedCommandParameter)).findFirst();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.model;
|
||||
package dev.sheldan.abstracto.core.command.service;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
@@ -4,14 +4,11 @@ import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.model.exception.GenericExceptionModel;
|
||||
import dev.sheldan.abstracto.core.interaction.GenericInteractionExceptionModel;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.listener.async.jda.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.models.FullUser;
|
||||
import dev.sheldan.abstracto.core.models.FullUserInServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.listener.ButtonClickedListenerModel;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
@@ -21,10 +18,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -33,7 +27,6 @@ import org.springframework.stereotype.Component;
|
||||
public class ExceptionServiceBean implements ExceptionService {
|
||||
|
||||
public static final String MODEL_WRAPPER_TEMPLATE_KEY = "model_wrapper";
|
||||
public static final String GENERIC_INTERACTION_EXCEPTION = "generic_interaction_exception";
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@@ -46,9 +39,6 @@ public class ExceptionServiceBean implements ExceptionService {
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private InteractionService interactionService;
|
||||
|
||||
@Override
|
||||
public CommandResult reportExceptionToContext(Throwable throwable, CommandContext context, Command command) {
|
||||
if(command != null) {
|
||||
@@ -70,47 +60,11 @@ public class ExceptionServiceBean implements ExceptionService {
|
||||
return CommandResult.fromReportedError();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportExceptionToInteraction(Throwable exception, ButtonClickedListenerModel interactionContext, ButtonClickedListener executedListener) {
|
||||
ButtonInteractionEvent event = interactionContext.getEvent();
|
||||
if(executedListener != null) {
|
||||
log.info("Reporting generic exception {} of listener {} towards channel {} in server {}.",
|
||||
exception.getClass().getSimpleName(), executedListener.getClass().getSimpleName(), event.getChannel().getIdLong(),
|
||||
event.getGuild().getIdLong());
|
||||
} else {
|
||||
log.info("Reporting generic exception {} towards channel {} in server {}.",
|
||||
exception.getClass().getSimpleName(), event.getChannel().getIdLong(),
|
||||
event.getGuild().getIdLong());
|
||||
}
|
||||
try {
|
||||
reportGenericInteractionException(exception, event.getInteraction());
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to notify about exception.", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportSlashException(Throwable exception, SlashCommandInteractionEvent event, Command command) {
|
||||
log.info("Reporting exception of {} command {} in channel {} in guild {} from user {}.",
|
||||
exception.getClass().getSimpleName(), command.getConfiguration().getName(),
|
||||
event.getChannel().getIdLong(), event.getGuild().getIdLong(), event.getMember().getIdLong(), exception);
|
||||
reportGenericInteractionException(exception, event.getInteraction());
|
||||
}
|
||||
|
||||
private void reportGenericException(Throwable throwable, CommandContext context) {
|
||||
GenericExceptionModel exceptionModel = buildCommandModel(throwable, context);
|
||||
channelService.sendEmbedTemplateInTextChannelList("generic_command_exception", exceptionModel, context.getChannel());
|
||||
}
|
||||
|
||||
private void reportGenericInteractionException(Throwable throwable, IReplyCallback replyCallback) {
|
||||
GenericInteractionExceptionModel exceptionModel = buildInteractionExceptionModel(throwable, replyCallback);
|
||||
if(replyCallback.isAcknowledged()) {
|
||||
interactionService.sendMessageToInteraction(GENERIC_INTERACTION_EXCEPTION, exceptionModel, replyCallback.getHook());
|
||||
} else {
|
||||
interactionService.replyEmbed(GENERIC_INTERACTION_EXCEPTION, exceptionModel, replyCallback);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportExceptionToGuildMessageReceivedContext(Throwable exception, MessageReceivedEvent event) {
|
||||
if(exception instanceof Templatable){
|
||||
@@ -144,14 +98,6 @@ public class ExceptionServiceBean implements ExceptionService {
|
||||
}
|
||||
}
|
||||
|
||||
private GenericInteractionExceptionModel buildInteractionExceptionModel(Throwable throwable, IReplyCallback context) {
|
||||
return GenericInteractionExceptionModel
|
||||
.builder()
|
||||
.member(context.getMember())
|
||||
.user(context.getUser())
|
||||
.throwable(throwable)
|
||||
.build();
|
||||
}
|
||||
private GenericExceptionModel buildCommandModel(Throwable throwable, CommandContext context) {
|
||||
FullUserInServer fullUser = FullUserInServer
|
||||
.builder()
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ 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.ChannelGroupService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.entities.GuildChannel;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.models.database.ChannelGroupType;
|
||||
import dev.sheldan.abstracto.core.service.ChannelGroupService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelGroupTypeManagementService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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.ChannelGroupService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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.ChannelGroupService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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.ChannelGroupService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -20,7 +20,7 @@ import dev.sheldan.abstracto.core.models.template.commands.PostTargetDisplayMode
|
||||
import dev.sheldan.abstracto.core.models.template.commands.PostTargetModelEntry;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.channels;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -15,7 +15,7 @@ import dev.sheldan.abstracto.core.exception.EntityGuildMismatchException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.service.ChannelGroupService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import net.dv8tion.jda.api.entities.GuildMessageChannel;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -14,7 +14,7 @@ import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.exception.ConfigurationKeyNotFoundException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package dev.sheldan.abstracto.core.commands.config;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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.ConfigService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -9,7 +9,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
|
||||
import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
|
||||
@@ -9,7 +9,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
|
||||
import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
|
||||
@@ -9,7 +9,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
|
||||
import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
@@ -19,7 +19,7 @@ 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.command.slash.parameter.SlashCommandParameterService;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -16,7 +16,7 @@ import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
@@ -20,7 +20,7 @@ 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.command.slash.parameter.SlashCommandParameterService;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -16,7 +16,7 @@ import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -20,7 +20,7 @@ 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.command.slash.parameter.SlashCommandParameterService;
|
||||
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;
|
||||
@@ -70,7 +70,10 @@ public class FeatureModes extends AbstractConditionableCommand {
|
||||
AFeature feature = featureManagementService.getFeature(featureDefinition.getKey());
|
||||
featureModes = featureModeService.getEffectiveFeatureModes(server, feature);
|
||||
}
|
||||
FeatureModesModel model = FeatureModesModel.builder().featureModes(featureModes).build();
|
||||
FeatureModesModel model = FeatureModesModel
|
||||
.builder()
|
||||
.featureModes(featureModes)
|
||||
.build();
|
||||
return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInTextChannelList(FEATURE_MODES_RESPONSE_TEMPLATE_KEY, model, commandContext.getChannel()))
|
||||
.thenApply(aVoid -> CommandResult.fromIgnored());
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -15,7 +15,7 @@ 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.RoleImmunityService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -14,7 +14,7 @@ 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.RoleImmunityService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -9,7 +9,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
|
||||
import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.features;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.profanity;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.service.ProfanityService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.profanity;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.service.ProfanityService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.profanity;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.service.ProfanityService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.profanity;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.service.ProfanityService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.profanity;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -17,7 +17,7 @@ import dev.sheldan.abstracto.core.exception.UploadFileTooLargeException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.GetCustomTemplateModel;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -16,7 +16,7 @@ import dev.sheldan.abstracto.core.exception.TemplateNotFoundException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.GetTemplateModel;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.exception.CustomTemplateNotFoundException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.commands.config.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.config.SlashCommandConfig;
|
||||
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;
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
||||
import dev.sheldan.abstracto.core.templating.service.management.CustomTemplateManagementService;
|
||||
import dev.sheldan.abstracto.core.utils.FileService;
|
||||
@@ -82,7 +82,7 @@ public class SetTemplate extends AbstractConditionableCommand {
|
||||
String templateKey = slashCommandParameterService.getCommandOption(TEMPLATE_KEY_PARAMETER, event, String.class);
|
||||
Message.Attachment templateAttachment = slashCommandParameterService.getCommandOption(FILE_PARAMETER, event, File.class, Message.Attachment.class);
|
||||
File templateFile = fileService.createTempFile(Math.random() + "");
|
||||
return templateAttachment.downloadToFile(templateFile).thenCompose(file -> {
|
||||
return templateAttachment.getProxy().downloadToFile(templateFile).thenCompose(file -> {
|
||||
try {
|
||||
return updateTemplate(event, templateFile, templateKey);
|
||||
} catch (IOException e) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.commands.help;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -5,7 +5,7 @@ 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.config.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.command.UtilityModuleDefinition;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.commands.utility;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.CoreSlashCommandNames;
|
||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||
import dev.sheldan.abstracto.core.command.config.*;
|
||||
import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition;
|
||||
@@ -10,8 +10,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.commands.config.ConfigModuleDefinition;
|
||||
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.AEmote;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.command.UtilityModuleDefinition;
|
||||
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.SlashCommandConfig;
|
||||
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;
|
||||
|
||||
@@ -12,6 +12,11 @@ public class ListenerExecutorConfig {
|
||||
@Autowired
|
||||
private ExecutorService executorService;
|
||||
|
||||
@Bean(name = "memberTimeoutUpdatedListenerExecutor")
|
||||
public TaskExecutor memberTimeoutUpdatedListenerExecutor() {
|
||||
return executorService.setupExecutorFor("memberTimeoutListener");
|
||||
}
|
||||
|
||||
@Bean(name = "joinListenerExecutor")
|
||||
public TaskExecutor joinListenerExecutor() {
|
||||
return executorService.setupExecutorFor("joinListener");
|
||||
@@ -62,6 +67,11 @@ public class ListenerExecutorConfig {
|
||||
return executorService.setupExecutorFor("buttonClickedListener");
|
||||
}
|
||||
|
||||
@Bean(name = "modalInteractionExecutor")
|
||||
public TaskExecutor modalInteractionExecutor() {
|
||||
return executorService.setupExecutorFor("modalInteractionListener");
|
||||
}
|
||||
|
||||
@Bean(name = "messageContextCommandExecutor")
|
||||
public TaskExecutor messageContextCommandExecutor() {
|
||||
return executorService.setupExecutorFor("messageContextCommandListener");
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -0,0 +1,144 @@
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.interaction.context.ContextCommandService;
|
||||
import dev.sheldan.abstracto.core.interaction.context.management.ContextCommandInServerManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.context.management.ContextCommandManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.context.message.MessageContextCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.interaction.context.message.listener.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandService;
|
||||
import dev.sheldan.abstracto.core.listener.AsyncStartupListener;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.service.BotService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.util.Pair;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class CommandLoaderListener implements AsyncStartupListener {
|
||||
|
||||
@Autowired
|
||||
private SlashCommandListenerBean slashCommandListenerBean;
|
||||
|
||||
@Autowired
|
||||
private SlashCommandService slashCommandService;
|
||||
|
||||
@Autowired
|
||||
private BotService botService;
|
||||
|
||||
@Autowired
|
||||
private FeatureConfigService featureConfigService;
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagService featureFlagService;
|
||||
|
||||
@Autowired
|
||||
private FeatureModeService featureModeService;
|
||||
|
||||
@Autowired
|
||||
private MessageContextCommandListenerBean listenerBean;
|
||||
|
||||
@Autowired
|
||||
private ContextCommandService contextCommandService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private ContextCommandManagementService contextCommandManagementService;
|
||||
|
||||
@Autowired
|
||||
private ContextCommandInServerManagementService contextCommandInServerManagementService;
|
||||
|
||||
@Autowired
|
||||
private CommandLoaderListener self;
|
||||
|
||||
@Autowired
|
||||
private InteractionCommandService interactionCommandService;
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
List<Command> incomingSlashCommands = slashCommandListenerBean.getSlashCommands();
|
||||
|
||||
List<MessageContextCommandListener> contextListeners = listenerBean.getListenerList();
|
||||
|
||||
JDA jda = botService.getInstance();
|
||||
List<Guild> onlineGuilds = jda.getGuilds();
|
||||
onlineGuilds.forEach(guild -> {
|
||||
log.info("Updating slash commands for guild {}.", guild.getIdLong());
|
||||
List<Pair<List<CommandConfiguration>, SlashCommandData>> slashCommandsToUpdate = new ArrayList<>();
|
||||
incomingSlashCommands.forEach(command -> {
|
||||
FeatureConfig feature = featureConfigService.getFeatureDisplayForFeature(command.getFeature());
|
||||
if (!featureFlagService.isFeatureEnabled(feature, guild.getIdLong())) {
|
||||
return;
|
||||
}
|
||||
if(!featureModeService.necessaryFeatureModesMet(command, guild.getIdLong())) {
|
||||
return;
|
||||
}
|
||||
log.info("Updating slash command {} in guild {}.", command.getConfiguration().getName(), guild.getId());
|
||||
slashCommandService.convertCommandConfigToCommandData(command.getConfiguration(), slashCommandsToUpdate);
|
||||
});
|
||||
|
||||
log.info("Updating context commands for guild {}.", guild.getIdLong());
|
||||
List<ContextCommandConfig> contextCommandsToUpdate = new ArrayList<>();
|
||||
contextListeners.forEach(listener -> {
|
||||
FeatureConfig feature = featureConfigService.getFeatureDisplayForFeature(listener.getFeature());
|
||||
if (!featureFlagService.isFeatureEnabled(feature, guild.getIdLong())) {
|
||||
return;
|
||||
}
|
||||
if(!featureModeService.necessaryFeatureModesMet(listener, guild.getIdLong())) {
|
||||
return;
|
||||
}
|
||||
String commandName = contextCommandService.getCommandContextName(listener.getConfig(), guild.getIdLong());
|
||||
ContextCommandConfig contextCommandToCreate = ContextCommandConfig
|
||||
.builder()
|
||||
.name(commandName)
|
||||
.messageContextConfig(listener.getConfig())
|
||||
.type(net.dv8tion.jda.api.interactions.commands.Command.Type.MESSAGE)
|
||||
.build();
|
||||
contextCommandsToUpdate.add(contextCommandToCreate);
|
||||
log.info("Updating message context command {} in guild {}.", commandName, guild.getId());
|
||||
});
|
||||
interactionCommandService.updateGuildCommands(guild, slashCommandsToUpdate, contextCommandsToUpdate).thenAccept(commands -> {
|
||||
try {
|
||||
self.storeCreatedCommands(commands, guild, slashCommandsToUpdate, contextCommandsToUpdate);
|
||||
} catch (Exception throwable) {
|
||||
log.error("Failed to store created commands in guild {}.", guild.getIdLong(), throwable);
|
||||
}
|
||||
}).exceptionally(throwable -> {
|
||||
log.error("Failed to update guild commands in guild {}.", guild.getIdLong(), throwable);
|
||||
return null;
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void storeCreatedCommands(List<net.dv8tion.jda.api.interactions.commands.Command> createdCommands, Guild guild,
|
||||
List<Pair<List<CommandConfiguration>, SlashCommandData>> slashCommands, List<ContextCommandConfig> contextCommands) {
|
||||
AServer server = serverManagementService.loadServer(guild.getIdLong());
|
||||
createdCommands.forEach(command -> {
|
||||
if(command.getType().equals(net.dv8tion.jda.api.interactions.commands.Command.Type.SLASH)) {
|
||||
slashCommandService.storeCreatedSlashCommands(guild, slashCommands, createdCommands);
|
||||
} else if(command.getType().equals(net.dv8tion.jda.api.interactions.commands.Command.Type.MESSAGE)) {
|
||||
contextCommandService.storeCreatedCommands(command, server, contextCommands);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,17 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentPayload;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentType;
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
||||
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.button.ButtonPayload;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ComponentPayloadServiceBean implements ComponentPayloadService{
|
||||
public class ComponentPayloadServiceBean implements ComponentPayloadService {
|
||||
|
||||
@Autowired
|
||||
private ComponentPayloadManagementService componentPayloadManagementService;
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonConfigModel;
|
||||
import dev.sheldan.abstracto.core.interaction.button.ButtonConfigModel;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.service.MessageService;
|
||||
import net.dv8tion.jda.api.entities.Emoji;
|
||||
import net.dv8tion.jda.api.entities.GuildMessageChannel;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
@@ -0,0 +1,73 @@
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommandInAServer;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandInServerManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.interactions.commands.Command;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.Commands;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.util.Pair;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Component
|
||||
public class InteractionCommandServiceBean implements InteractionCommandService {
|
||||
|
||||
@Autowired
|
||||
private InteractionCommandServiceBean self;
|
||||
|
||||
@Autowired
|
||||
private CommandManagementService commandManagementService;
|
||||
|
||||
@Autowired
|
||||
private CommandInServerManagementService commandInServerManagementService;
|
||||
|
||||
@Override
|
||||
public CompletableFuture<List<Command>> updateGuildCommands(Guild guild, List<Pair<List<CommandConfiguration>, SlashCommandData>> slashCommands, List<ContextCommandConfig> contextCommands) {
|
||||
List<CommandData> slashCommandData = slashCommands
|
||||
.stream()
|
||||
.map(Pair::getSecond)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<CommandData> contextCommandData = contextCommands
|
||||
.stream()
|
||||
.map(s -> Commands.context(s.getType(), s.getName()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<CommandData> allCommands = Stream.concat(slashCommandData.stream(), contextCommandData.stream())
|
||||
.collect(Collectors.toList());
|
||||
return guild.updateCommands().addCommands(allCommands).submit().thenApply(createdCommands -> {
|
||||
self.storeCreatedCommands(guild, slashCommands, contextCommands, createdCommands);
|
||||
return createdCommands;
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void storeCreatedCommands(Guild guild, List<Pair<List<CommandConfiguration>, SlashCommandData>> slashCommands, List<ContextCommandConfig> contextCommands, List<Command> createdCommands) {
|
||||
slashCommands.forEach(commandConfigurationSlashCommandDataPair -> {
|
||||
SlashCommandData slashCommandData = commandConfigurationSlashCommandDataPair.getSecond();
|
||||
commandConfigurationSlashCommandDataPair.getFirst().forEach(commandConfiguration -> {
|
||||
ACommand aCommand = commandManagementService.findCommandByName(commandConfiguration.getName());
|
||||
ACommandInAServer commandInServer = commandInServerManagementService.getCommandForServer(aCommand, guild.getIdLong());
|
||||
Command createdCommand = createdCommands.stream().filter(command -> doesCommandMatch(slashCommandData, command)).findFirst().orElse(null);
|
||||
if(createdCommand != null) {
|
||||
commandInServer.setSlashCommandId(createdCommand.getIdLong());
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private boolean doesCommandMatch(SlashCommandData commandConfig, Command command) {
|
||||
return commandConfig.getName().equals(command.getName());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.interaction.button.listener.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.interaction.button.listener.ButtonClickedListenerModel;
|
||||
import dev.sheldan.abstracto.core.interaction.context.message.listener.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.listener.ModalInteractionListener;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.listener.ModalInteractionListenerModel;
|
||||
import dev.sheldan.abstracto.core.models.listener.interaction.MessageContextInteractionModel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class InteractionExceptionServiceBean implements InteractionExceptionService {
|
||||
|
||||
@Autowired
|
||||
private InteractionService interactionService;
|
||||
|
||||
public static final String GENERIC_INTERACTION_EXCEPTION = "generic_interaction_exception";
|
||||
|
||||
@Override
|
||||
public void reportExceptionToInteraction(Throwable exception, ButtonClickedListenerModel interactionContext, ButtonClickedListener executedListener) {
|
||||
reportExceptionToInteraction(exception, interactionContext.getEvent(), executedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportExceptionToInteraction(Throwable exception, MessageContextInteractionModel interActionContext, MessageContextCommandListener executedListener) {
|
||||
reportExceptionToInteraction(exception, interActionContext.getEvent(), executedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportExceptionToInteraction(Throwable exception, ModalInteractionListenerModel interActionContext, ModalInteractionListener executedListener) {
|
||||
reportExceptionToInteraction(exception, interActionContext.getEvent().getInteraction(), executedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportExceptionToInteraction(Throwable exception, IReplyCallback callback, InteractionListener executedListener) {
|
||||
if(executedListener != null) {
|
||||
log.info("Reporting generic exception {} of listener {} towards channel {} in server {}.",
|
||||
exception.getClass().getSimpleName(), executedListener.getClass().getSimpleName(), callback.getChannel().getIdLong(),
|
||||
callback.getGuild().getIdLong());
|
||||
} else {
|
||||
log.info("Reporting generic exception {} towards channel {} in server {}.",
|
||||
exception.getClass().getSimpleName(), callback.getChannel().getIdLong(),
|
||||
callback.getGuild().getIdLong());
|
||||
}
|
||||
try {
|
||||
reportGenericInteractionException(exception, callback);
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to notify about exception.", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportSlashException(Throwable exception, SlashCommandInteractionEvent event, Command command) {
|
||||
log.info("Reporting exception of {} command {} in channel {} in guild {} from user {}.",
|
||||
exception.getClass().getSimpleName(), command.getConfiguration().getName(),
|
||||
event.getChannel().getIdLong(), event.getGuild().getIdLong(), event.getMember().getIdLong(), exception);
|
||||
reportGenericInteractionException(exception, event.getInteraction());
|
||||
}
|
||||
|
||||
private void reportGenericInteractionException(Throwable throwable, IReplyCallback replyCallback) {
|
||||
GenericInteractionExceptionModel exceptionModel = buildInteractionExceptionModel(throwable, replyCallback);
|
||||
if(replyCallback.isAcknowledged()) {
|
||||
interactionService.sendMessageToInteraction(GENERIC_INTERACTION_EXCEPTION, exceptionModel, replyCallback.getHook());
|
||||
} else {
|
||||
interactionService.replyEmbed(GENERIC_INTERACTION_EXCEPTION, exceptionModel, replyCallback);
|
||||
}
|
||||
}
|
||||
|
||||
private GenericInteractionExceptionModel buildInteractionExceptionModel(Throwable throwable, IReplyCallback context) {
|
||||
return GenericInteractionExceptionModel
|
||||
.builder()
|
||||
.member(context.getMember())
|
||||
.user(context.getUser())
|
||||
.throwable(throwable)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.metric.service.CounterMetric;
|
||||
import dev.sheldan.abstracto.core.metric.service.MetricService;
|
||||
import dev.sheldan.abstracto.core.metric.service.MetricTag;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.service.AllowedMentionService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.templating.model.AttachedFile;
|
||||
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
|
||||
@@ -146,6 +145,14 @@ public class InteractionServiceBean implements InteractionService {
|
||||
return replyMessageToSend(messageToSend, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<InteractionHook> replyString(String text, IReplyCallback callback) {
|
||||
return callback
|
||||
.reply(text)
|
||||
.allowedMentions(allowedMentionService.getAllowedMentionTypesForServer(callback.getGuild().getIdLong()))
|
||||
.submit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<InteractionHook> replyEmbed(String templateKey, IReplyCallback callback) {
|
||||
return replyEmbed(templateKey, new Object(), callback);
|
||||
@@ -1,18 +1,20 @@
|
||||
package dev.sheldan.abstracto.core.interaction;
|
||||
package dev.sheldan.abstracto.core.interaction.button;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.ExceptionService;
|
||||
import dev.sheldan.abstracto.core.listener.async.jda.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.models.listener.ButtonClickedListenerModel;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionExceptionService;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResult;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResultState;
|
||||
import dev.sheldan.abstracto.core.interaction.button.listener.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.interaction.button.listener.ButtonClickedListenerModel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ExceptionPostInteractionExecution implements PostInteractionExecution {
|
||||
public class ButtonExceptionPostInteractionExecution implements ButtonPostInteractionExecution {
|
||||
|
||||
@Autowired
|
||||
private ExceptionService exceptionService;
|
||||
private InteractionExceptionService interactionExceptionService;
|
||||
|
||||
@Override
|
||||
public void execute(ButtonClickedListenerModel interActionContext, InteractionResult interactionResult, ButtonClickedListener executedListener) {
|
||||
@@ -21,7 +23,7 @@ public class ExceptionPostInteractionExecution implements PostInteractionExecuti
|
||||
Throwable throwable = interactionResult.getThrowable();
|
||||
if(throwable != null) {
|
||||
log.info("Exception handling in interaction for exception {}.", throwable.getClass().getSimpleName());
|
||||
exceptionService.reportExceptionToInteraction(throwable, interActionContext, executedListener);
|
||||
interactionExceptionService.reportExceptionToInteraction(throwable, interActionContext, executedListener);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.model;
|
||||
package dev.sheldan.abstracto.core.interaction.button;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.execution.DriedCommandContext;
|
||||
import lombok.Builder;
|
||||
@@ -1,7 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.model;
|
||||
package dev.sheldan.abstracto.core.interaction.button;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.execution.DriedCommandContext;
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -1,19 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.command.listener;
|
||||
package dev.sheldan.abstracto.core.interaction.button.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandReceivedHandler;
|
||||
import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.execution.DriedCommandContext;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandConfirmationPayload;
|
||||
import dev.sheldan.abstracto.core.command.model.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.interaction.button.CommandConfirmationPayload;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandServiceBean;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.config.ListenerPriority;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionService;
|
||||
import dev.sheldan.abstracto.core.listener.ButtonClickedListenerResult;
|
||||
import dev.sheldan.abstracto.core.listener.async.jda.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.models.listener.ButtonClickedListenerModel;
|
||||
import dev.sheldan.abstracto.core.service.MessageService;
|
||||
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -1,18 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
package dev.sheldan.abstracto.core.interaction.button.listener;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResult;
|
||||
import dev.sheldan.abstracto.core.interaction.PostInteractionExecution;
|
||||
import dev.sheldan.abstracto.core.listener.ListenerService;
|
||||
import dev.sheldan.abstracto.core.listener.async.jda.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.interaction.button.ButtonPostInteractionExecution;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentPayload;
|
||||
import dev.sheldan.abstracto.core.models.listener.ButtonClickedListenerModel;
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
||||
import dev.sheldan.abstracto.core.interaction.button.ButtonPayload;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.utils.BeanUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
|
||||
@@ -38,7 +35,7 @@ public class SyncButtonClickedListenerBean extends ListenerAdapter {
|
||||
private List<ButtonClickedListener> listenerList;
|
||||
|
||||
@Autowired(required = false)
|
||||
private List<PostInteractionExecution> postInteractionExecutions;
|
||||
private List<ButtonPostInteractionExecution> postInteractionExecutions;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("buttonClickedExecutor")
|
||||
@@ -88,7 +85,7 @@ public class SyncButtonClickedListenerBean extends ListenerAdapter {
|
||||
log.info("Executing button listener {} for event for id {}.", listener.getClass().getSimpleName(), event.getComponentId());
|
||||
listener.execute(model);
|
||||
InteractionResult result = InteractionResult.fromSuccess();
|
||||
for (PostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
for (ButtonPostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
postInteractionExecution.execute(model, result, listener);
|
||||
}
|
||||
} else {
|
||||
@@ -107,7 +104,7 @@ public class SyncButtonClickedListenerBean extends ListenerAdapter {
|
||||
if(model != null && listener != null) {
|
||||
InteractionResult result = InteractionResult.fromError("Failed to execute interaction.", exception);
|
||||
if(postInteractionExecutions != null) {
|
||||
for (PostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
for (ButtonPostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
postInteractionExecution.execute(model, result, listener);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
package dev.sheldan.abstracto.core.interaction.context;
|
||||
|
||||
import dev.sheldan.abstracto.core.interaction.ApplicationCommandService;
|
||||
import dev.sheldan.abstracto.core.interaction.ContextCommandConfig;
|
||||
import dev.sheldan.abstracto.core.interaction.MessageContextConfig;
|
||||
import dev.sheldan.abstracto.core.interaction.context.management.ContextCommandInServerManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.context.management.ContextCommandManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.ContextCommand;
|
||||
import dev.sheldan.abstracto.core.models.database.ContextCommandInServer;
|
||||
import dev.sheldan.abstracto.core.models.listener.interaction.MessageContextInteractionModel;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.interactions.commands.Command;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.Commands;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@Component
|
||||
public class ContextCommandServiceBean implements ContextCommandService {
|
||||
|
||||
@Autowired
|
||||
private ApplicationCommandService applicationCommandService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private ContextCommandManagementService contextCommandManagementService;
|
||||
|
||||
@Autowired
|
||||
private ContextCommandInServerManagementService contextCommandInServerManagementService;
|
||||
|
||||
@Autowired
|
||||
private ContextCommandServiceBean self;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> upsertGuildMessageContextCommand(Guild guild, String name, MessageContextConfig config) {
|
||||
return guild.upsertCommand(Commands.context(Command.Type.MESSAGE, name)).submit()
|
||||
.thenAccept(command -> self.storeCratedContextCommand(guild, command, config));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void storeCratedContextCommand(Guild guild, Command command, MessageContextConfig contextConfig) {
|
||||
ContextCommand contextCommand = contextCommandManagementService.findContextCommand(contextConfig.getName());
|
||||
AServer server = serverManagementService.loadServer(guild.getIdLong());
|
||||
contextCommandInServerManagementService.createOrUpdateContextCommandInServer(contextCommand, server, command.getIdLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> deleteGuildContextCommand(Guild guild, Long commandId) {
|
||||
return applicationCommandService.deleteGuildCommand(guild, commandId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> deleteGuildContextCommandByName(Guild guild, MessageContextConfig contextConfig) {
|
||||
ContextCommand contextCommand = contextCommandManagementService.findContextCommand(contextConfig.getName());
|
||||
AServer server = serverManagementService.loadServer(guild.getIdLong());
|
||||
Optional<ContextCommandInServer> contextCommandInServer = contextCommandInServerManagementService.loadContextCommandInServer(contextCommand, server);
|
||||
return contextCommandInServer
|
||||
.map(contextCommandInServer1 -> deleteGuildContextCommand(guild, contextCommandInServer1.getContextCommandId()))
|
||||
.orElse(CompletableFuture.completedFuture(null))
|
||||
.thenAccept(unused -> self.resetContextCommandId(guild, contextConfig));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void resetContextCommandId(Guild guild, MessageContextConfig messageContextConfig) {
|
||||
ContextCommand contextCommand = contextCommandManagementService.findContextCommand(messageContextConfig.getName());
|
||||
AServer server = serverManagementService.loadServer(guild.getIdLong());
|
||||
Optional<ContextCommandInServer> contextCommandInServer = contextCommandInServerManagementService.loadContextCommandInServer(contextCommand, server);
|
||||
contextCommandInServer
|
||||
.ifPresent(contextCommandInServer1 -> contextCommandInServer1.setContextCommandId(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCommandContextName(MessageContextConfig contextConfig, Long guildId) {
|
||||
return contextConfig.getIsTemplated()
|
||||
? templateService.renderSimpleTemplate(contextConfig.getTemplateKey(), guildId)
|
||||
: contextConfig.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matchesGuildContextName(MessageContextInteractionModel model, MessageContextConfig contextConfig, Long guidId) {
|
||||
return model.getEvent().isFromGuild()
|
||||
&& model.getEvent().getCommandType().equals(Command.Type.MESSAGE)
|
||||
&& model.getEvent().getName().equals(getCommandContextName(contextConfig, model.getServerId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storeCreatedCommands(Command command, AServer server, List<ContextCommandConfig> contextCommands) {
|
||||
Optional<ContextCommandConfig> createdContextCommandOptional = contextCommands
|
||||
.stream()
|
||||
.filter(contextCommandConfig -> contextCommandConfig.getName().equals(command.getName()))
|
||||
.findFirst();
|
||||
if (createdContextCommandOptional.isPresent()) {
|
||||
ContextCommandConfig createdContextCommandConfig = createdContextCommandOptional.get();
|
||||
ContextCommand contextCommand = contextCommandManagementService.findContextCommand(createdContextCommandConfig.getMessageContextConfig().getName());
|
||||
contextCommandInServerManagementService.createOrUpdateContextCommandInServer(contextCommand, server, command.getIdLong());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package dev.sheldan.abstracto.core.interaction.context.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.ContextCommand;
|
||||
import dev.sheldan.abstracto.core.models.database.ContextCommandInServer;
|
||||
import dev.sheldan.abstracto.core.repository.ContextCommandInServerRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@Component
|
||||
public class ContextCommandInServerManagementServiceBean implements ContextCommandInServerManagementService {
|
||||
|
||||
@Autowired
|
||||
private ContextCommandInServerRepository contextCommandInServerRepository;
|
||||
|
||||
@Override
|
||||
public ContextCommandInServer createOrUpdateContextCommandInServer(ContextCommand contextCommand, AServer server, Long discordContextId) {
|
||||
Optional<ContextCommandInServer> optional = loadContextCommandInServer(contextCommand, server);
|
||||
if(optional.isPresent()) {
|
||||
ContextCommandInServer contextCommandInServer = optional.get();
|
||||
contextCommandInServer.setContextCommandId(discordContextId);
|
||||
return contextCommandInServer;
|
||||
} else {
|
||||
ContextCommandInServer contextCommandInServer = ContextCommandInServer
|
||||
.builder()
|
||||
.commandReference(contextCommand)
|
||||
.serverReference(server)
|
||||
.contextCommandId(discordContextId)
|
||||
.build();
|
||||
return contextCommandInServerRepository.save(contextCommandInServer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<ContextCommandInServer> loadContextCommandInServer(ContextCommand contextCommand, AServer server) {
|
||||
return contextCommandInServerRepository.findByCommandReferenceAndServerReference(contextCommand, server);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package dev.sheldan.abstracto.core.interaction.context.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.models.database.AFeature;
|
||||
import dev.sheldan.abstracto.core.models.database.ContextCommand;
|
||||
import dev.sheldan.abstracto.core.models.database.ContextType;
|
||||
import dev.sheldan.abstracto.core.repository.ContextCommandRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ContextCommandManagementServiceBean implements ContextCommandManagementService {
|
||||
|
||||
@Autowired
|
||||
private ContextCommandRepository contextCommandRepository;
|
||||
|
||||
@Override
|
||||
public ContextCommand createContextCommand(String name, ContextType contextType, AFeature feature) {
|
||||
ContextCommand contextCommand = ContextCommand
|
||||
.builder()
|
||||
.commandName(name)
|
||||
.type(contextType)
|
||||
.feature(feature)
|
||||
.build();
|
||||
return contextCommandRepository.save(contextCommand);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContextCommand findContextCommand(String name) {
|
||||
return contextCommandRepository.findByCommandName(name)
|
||||
.orElseThrow(() -> new AbstractoRunTimeException("Context command not found."));
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.command.listener;
|
||||
package dev.sheldan.abstracto.core.interaction.context.message;
|
||||
|
||||
import dev.sheldan.abstracto.core.interaction.MessageContextConfig;
|
||||
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
||||
import dev.sheldan.abstracto.core.listener.async.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.interaction.context.message.listener.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.listener.async.entity.FeatureActivationListener;
|
||||
import dev.sheldan.abstracto.core.listener.sync.jda.MessageContextCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.models.listener.FeatureActivationListenerModel;
|
||||
import dev.sheldan.abstracto.core.service.ContextCommandService;
|
||||
import dev.sheldan.abstracto.core.interaction.context.ContextCommandService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.service.GuildService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -44,10 +44,14 @@ public class MessageContextCommandFeatureActivationListener implements FeatureAc
|
||||
Guild guild = guildService.getGuildById(model.getServerId());
|
||||
listeners.forEach(messageContextCommandListener -> {
|
||||
if(featureModeService.necessaryFeatureModesMet(messageContextCommandListener, model.getServerId())) {
|
||||
String contextCommandName = messageContextCommandListener.getConfig().getName();
|
||||
MessageContextConfig config = messageContextCommandListener.getConfig();
|
||||
String contextCommandName = contextCommandService.getCommandContextName(config, model.getServerId());
|
||||
log.info("Adding message context command {} in guild {}.", contextCommandName, model.getServerId());
|
||||
contextCommandService.upsertGuildMessageContextCommand(guild, contextCommandName)
|
||||
.thenAccept(command -> log.info("Created message context command {} in guild {} because feature {} was enabled.", contextCommandName, guild.getIdLong(), model.getFeatureName()));
|
||||
contextCommandService.upsertGuildMessageContextCommand(guild, contextCommandName, config)
|
||||
.exceptionally(throwable -> {
|
||||
log.error("Failed to greate message context command {} in guild {}.", contextCommandName, guild.getIdLong(), throwable);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
});
|
||||
return DefaultListenerResult.PROCESSED;
|
||||
@@ -1,11 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.command.listener;
|
||||
package dev.sheldan.abstracto.core.interaction.context.message;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
||||
import dev.sheldan.abstracto.core.listener.async.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.interaction.context.message.listener.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.listener.async.entity.FeatureDeactivationListener;
|
||||
import dev.sheldan.abstracto.core.listener.sync.jda.MessageContextCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.models.listener.FeatureDeactivationListenerModel;
|
||||
import dev.sheldan.abstracto.core.service.ContextCommandService;
|
||||
import dev.sheldan.abstracto.core.interaction.context.ContextCommandService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.service.GuildService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -44,10 +43,14 @@ public class MessageContextCommandFeatureDeactivationListener implements Feature
|
||||
Guild guild = guildService.getGuildById(model.getServerId());
|
||||
listeners.forEach(messageContextCommandListener -> {
|
||||
if(featureModeService.necessaryFeatureModesMet(messageContextCommandListener, model.getServerId())) {
|
||||
String contextCommandName = messageContextCommandListener.getConfig().getName();
|
||||
String contextCommandName = contextCommandService.getCommandContextName(messageContextCommandListener.getConfig(), guild.getIdLong());
|
||||
log.info("Adding message context command {} in guild {}.", contextCommandName, model.getServerId());
|
||||
contextCommandService.deleteGuildContextCommandByName(guild, contextCommandName)
|
||||
.thenAccept(unused -> log.info("Deleted command {} because feature {} was disabled in guild {}.", contextCommandName, model.getFeatureName(), guild.getIdLong()));
|
||||
contextCommandService.deleteGuildContextCommandByName(guild, messageContextCommandListener.getConfig())
|
||||
.thenAccept(unused -> log.info("Deleted command {} because feature {} was disabled in guild {}.", contextCommandName, model.getFeatureName(), guild.getIdLong()))
|
||||
.exceptionally(throwable -> {
|
||||
log.error("Failed to delete message context command in guild {}.", guild.getIdLong(), throwable);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
});
|
||||
return DefaultListenerResult.PROCESSED;
|
||||
@@ -1,7 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
package dev.sheldan.abstracto.core.interaction.context.message;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.listener.async.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResult;
|
||||
import dev.sheldan.abstracto.core.interaction.context.message.listener.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.models.listener.interaction.MessageContextInteractionModel;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||
@@ -28,6 +29,9 @@ public class MessageContextCommandListenerBean extends ListenerAdapter {
|
||||
@Autowired(required = false)
|
||||
private List<MessageContextCommandListener> listenerList;
|
||||
|
||||
@Autowired(required = false)
|
||||
private List<MessageContextPostInteractionExecution> postInteractionExecutions;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("messageContextCommandExecutor")
|
||||
private TaskExecutor messageContextCommandExecutor;
|
||||
@@ -59,14 +63,35 @@ public class MessageContextCommandListenerBean extends ListenerAdapter {
|
||||
.builder()
|
||||
.event(event)
|
||||
.build();
|
||||
|
||||
List<MessageContextCommandListener> validListener = filterFeatureAwareListener(listenerList, model);
|
||||
Optional<MessageContextCommandListener> listenerOptional = findListener(validListener, model);
|
||||
if(listenerOptional.isPresent()) {
|
||||
MessageContextCommandListener listener = listenerOptional.get();
|
||||
listener.execute(model);
|
||||
} else {
|
||||
log.info("No listener found for event {}", event.getClass().getSimpleName());
|
||||
MessageContextCommandListener listener = null;
|
||||
try {
|
||||
List<MessageContextCommandListener> validListener = filterFeatureAwareListener(listenerList, model);
|
||||
Optional<MessageContextCommandListener> listenerOptional = findListener(validListener, model);
|
||||
if(listenerOptional.isPresent()) {
|
||||
listener = listenerOptional.get();
|
||||
listener.execute(model);
|
||||
InteractionResult result = InteractionResult.fromSuccess();
|
||||
for (MessageContextPostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
postInteractionExecution.execute(model, result, listener);
|
||||
}
|
||||
} else {
|
||||
log.info("No listener found for event {}", event.getClass().getSimpleName());
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
if(event.isFromGuild()) {
|
||||
log.error("Message context listener failed with exception in server {} and channel {}.", event.getGuild().getIdLong(),
|
||||
event.getGuildChannel().getIdLong(), exception);
|
||||
} else {
|
||||
log.error("Message context listener failed with exception outside of a guild.", exception);
|
||||
}
|
||||
if(model != null && listener != null) {
|
||||
InteractionResult result = InteractionResult.fromError("Failed to execute message context interaction.", exception);
|
||||
if(postInteractionExecutions != null) {
|
||||
for (MessageContextPostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
postInteractionExecution.execute(model, result, listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package dev.sheldan.abstracto.core.interaction.context.message;
|
||||
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionExceptionService;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResult;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResultState;
|
||||
import dev.sheldan.abstracto.core.interaction.context.message.listener.MessageContextCommandListener;
|
||||
import dev.sheldan.abstracto.core.models.listener.interaction.MessageContextInteractionModel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class MessageContextExceptionPostInteractionExecution implements MessageContextPostInteractionExecution {
|
||||
|
||||
@Autowired
|
||||
private InteractionExceptionService interactionExceptionService;
|
||||
|
||||
@Override
|
||||
public void execute(MessageContextInteractionModel interActionContext, InteractionResult interactionResult, MessageContextCommandListener executedListener) {
|
||||
InteractionResultState result = interactionResult.getResult();
|
||||
if(result.equals(InteractionResultState.ERROR)) {
|
||||
Throwable throwable = interactionResult.getThrowable();
|
||||
if(throwable != null) {
|
||||
log.info("Exception handling in message context interaction for exception {}.", throwable.getClass().getSimpleName());
|
||||
interactionExceptionService.reportExceptionToInteraction(throwable, interActionContext, executedListener);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.job;
|
||||
package dev.sheldan.abstracto.core.interaction.job;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandReceivedHandler;
|
||||
import lombok.Setter;
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.job;
|
||||
package dev.sheldan.abstracto.core.interaction.job;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.MessageService;
|
||||
import dev.sheldan.abstracto.core.service.PaginatorServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.service.paginator.PaginatorServiceBean;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentPayloadManagementService;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.DisallowConcurrentExecution;
|
||||
@@ -0,0 +1,30 @@
|
||||
package dev.sheldan.abstracto.core.interaction.modal;
|
||||
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionExceptionService;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResult;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResultState;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.listener.ModalInteractionListener;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.listener.ModalInteractionListenerModel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ModalExceptionPostInteractionExecution implements ModalPostInteractionExecution {
|
||||
|
||||
@Autowired
|
||||
private InteractionExceptionService interactionExceptionService;
|
||||
|
||||
@Override
|
||||
public void execute(ModalInteractionListenerModel interActionContext, InteractionResult interactionResult, ModalInteractionListener executedListener) {
|
||||
InteractionResultState result = interactionResult.getResult();
|
||||
if(result.equals(InteractionResultState.ERROR)) {
|
||||
Throwable throwable = interactionResult.getThrowable();
|
||||
if(throwable != null) {
|
||||
log.info("Exception handling in modal interaction for exception {}.", throwable.getClass().getSimpleName());
|
||||
interactionExceptionService.reportExceptionToInteraction(throwable, interActionContext, executedListener);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package dev.sheldan.abstracto.core.interaction.modal;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.config.ModalComponent;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.config.ModalConfig;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.config.TextInputComponent;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.config.TextInputComponentStyle;
|
||||
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
||||
import net.dv8tion.jda.api.events.interaction.command.GenericCommandInteractionEvent;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.interactions.components.ItemComponent;
|
||||
import net.dv8tion.jda.api.interactions.components.Modal;
|
||||
import net.dv8tion.jda.api.interactions.components.text.TextInput;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class ModalServiceBean implements ModalService {
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private Gson gson;
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> replyModal(GenericCommandInteractionEvent event, String templateKey, Object model) {
|
||||
Modal modal = createModalFromTemplate(templateKey, model, event.getGuild().getIdLong());
|
||||
return event.replyModal(modal).submit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Modal createModalFromTemplate(String templateKey, Object model, Long serverId) {
|
||||
String modalConfigString = templateService.renderTemplate(templateKey + "_modal", model, serverId);
|
||||
ModalConfig modalConfig = gson.fromJson(modalConfigString, ModalConfig.class);
|
||||
List<ModalComponent> components = modalConfig
|
||||
.getTextInputs()
|
||||
.stream()
|
||||
.sorted(Comparator.comparing(ModalComponent::getPosition))
|
||||
.collect(Collectors.toList());
|
||||
return Modal.create(modalConfig.getId(), modalConfig.getTitle())
|
||||
.addActionRows(convertToActionRows(components))
|
||||
.build();
|
||||
}
|
||||
|
||||
private List<ActionRow> convertToActionRows(List<ModalComponent> components) {
|
||||
return components
|
||||
.stream()
|
||||
.map(this::convertComponent)
|
||||
.map(ActionRow::of)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private ItemComponent convertComponent(ModalComponent component) {
|
||||
if(component instanceof TextInputComponent) {
|
||||
TextInputComponent tic = (TextInputComponent) component;
|
||||
TextInput.Builder builder = TextInput
|
||||
.create(tic.getId(), tic.getLabel(), TextInputComponentStyle.getStyle(tic.getStyle()));
|
||||
if(tic.getMinLength() != null) {
|
||||
builder.setMinLength(tic.getMinLength());
|
||||
}
|
||||
if(tic.getMaxLength() != null) {
|
||||
builder.setMaxLength(tic.getMaxLength());
|
||||
}
|
||||
if(tic.getRequired() != null) {
|
||||
builder.setRequired(tic.getRequired());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.interaction.modal.config;
|
||||
|
||||
public interface ModalComponent {
|
||||
Integer getPosition();
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.sheldan.abstracto.core.interaction.modal.config;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ModalConfig {
|
||||
private List<TextInputComponent> textInputs;
|
||||
private String id;
|
||||
private String title;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.sheldan.abstracto.core.interaction.modal.config;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TextInputComponent implements ModalComponent {
|
||||
private String placeHolder;
|
||||
private String id;
|
||||
private String label;
|
||||
private TextInputComponentStyle style;
|
||||
private Integer position;
|
||||
private Integer maxLength;
|
||||
private Integer minLength;
|
||||
private Boolean required;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.core.interaction.modal.config;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import net.dv8tion.jda.api.interactions.components.text.TextInputStyle;
|
||||
|
||||
public enum TextInputComponentStyle {
|
||||
@SerializedName("short")
|
||||
SHORT,
|
||||
@SerializedName("paragraph")
|
||||
PARAGRAPH;
|
||||
|
||||
public static TextInputStyle getStyle(TextInputComponentStyle config) {
|
||||
switch (config) {
|
||||
case PARAGRAPH:
|
||||
return TextInputStyle.PARAGRAPH;
|
||||
case SHORT:
|
||||
default:
|
||||
return TextInputStyle.SHORT;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
package dev.sheldan.abstracto.core.interaction.modal.listener;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.InteractionResult;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.ModalPayload;
|
||||
import dev.sheldan.abstracto.core.interaction.modal.ModalPostInteractionExecution;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentPayload;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.utils.BeanUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.core.task.TaskExecutor;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ModalInteractionListenerBean extends ListenerAdapter {
|
||||
|
||||
@Autowired(required = false)
|
||||
private List<ModalInteractionListener> listenerList;
|
||||
|
||||
@Autowired(required = false)
|
||||
private List<ModalPostInteractionExecution> postInteractionExecutions;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("modalInteractionExecutor")
|
||||
private TaskExecutor modalInteractionExecutor;
|
||||
|
||||
@Autowired
|
||||
private ModalInteractionListenerBean self;
|
||||
|
||||
@Autowired
|
||||
private Gson gson;
|
||||
|
||||
@Autowired
|
||||
private ComponentPayloadManagementService componentPayloadManagementService;
|
||||
|
||||
@Autowired
|
||||
private FeatureConfigService featureConfigService;
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagService featureFlagService;
|
||||
|
||||
@Autowired
|
||||
private FeatureModeService featureModeService;
|
||||
|
||||
@Override
|
||||
public void onModalInteraction(@NotNull ModalInteractionEvent event) {
|
||||
if(listenerList == null) return;
|
||||
// TODO remove this and make this configurable
|
||||
event.deferEdit().queue();
|
||||
CompletableFuture.runAsync(() -> self.executeListenerLogic(event), modalInteractionExecutor).exceptionally(throwable -> {
|
||||
log.error("Failed to execute listener logic in modal interaction event.", throwable);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void executeListenerLogic(@NotNull ModalInteractionEvent event) {
|
||||
ModalInteractionListenerModel model = null;
|
||||
ModalInteractionListener listener = null;
|
||||
try {
|
||||
Optional<ComponentPayload> callbackInformation = componentPayloadManagementService.findPayload(event.getModalId());
|
||||
if(callbackInformation.isPresent()) {
|
||||
model = getModel(event, callbackInformation.get());
|
||||
List<ModalInteractionListener> validListener = filterFeatureAwareListener(listenerList, model);
|
||||
Optional<ModalInteractionListener> listenerOptional = findListener(validListener, model);
|
||||
if(listenerOptional.isPresent()) {
|
||||
listener = listenerOptional.get();
|
||||
log.info("Executing modal listener {} for event for id {}.", listener.getClass().getSimpleName(), event.getModalId());
|
||||
listener.execute(model);
|
||||
InteractionResult result = InteractionResult.fromSuccess();
|
||||
for (ModalPostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
postInteractionExecution.execute(model, result, listener);
|
||||
}
|
||||
} else {
|
||||
log.warn("No listener found for button event for id {}.", event.getModalId());
|
||||
}
|
||||
} else {
|
||||
log.warn("No callback found for id {}.", event.getModalId());
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
if(event.isFromGuild()) {
|
||||
log.error("Modal interaction listener failed with exception in server {} and channel {}.", event.getGuild().getIdLong(),
|
||||
event.getGuildChannel().getIdLong(), exception);
|
||||
} else {
|
||||
log.error("Modal interaction clicked listener failed with exception outside of a guild.", exception);
|
||||
}
|
||||
if(model != null && listener != null) {
|
||||
InteractionResult result = InteractionResult.fromError("Failed to execute interaction.", exception);
|
||||
if(postInteractionExecutions != null) {
|
||||
for (ModalPostInteractionExecution postInteractionExecution : postInteractionExecutions) {
|
||||
postInteractionExecution.execute(model, result, listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<ModalInteractionListener> findListener(List<ModalInteractionListener> featureAwareListeners, ModalInteractionListenerModel model) {
|
||||
return featureAwareListeners.stream().filter(modelInteractionListener -> modelInteractionListener.handlesEvent(model)).findFirst();
|
||||
}
|
||||
|
||||
private List<ModalInteractionListener> filterFeatureAwareListener(List<ModalInteractionListener> featureAwareListeners, ModalInteractionListenerModel model) {
|
||||
return featureAwareListeners.stream().filter(trFeatureAwareListener -> {
|
||||
FeatureConfig feature = featureConfigService.getFeatureDisplayForFeature(trFeatureAwareListener.getFeature());
|
||||
if(!model.getEvent().isFromGuild()) {
|
||||
return true;
|
||||
}
|
||||
if (!featureFlagService.isFeatureEnabled(feature, model.getServerId())) {
|
||||
return false;
|
||||
}
|
||||
return featureModeService.necessaryFeatureModesMet(trFeatureAwareListener, model.getServerId());
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private ModalInteractionListenerModel getModel(ModalInteractionEvent event, ComponentPayload componentPayload) throws ClassNotFoundException {
|
||||
ModalPayload payload = null;
|
||||
if(componentPayload.getPayloadType() != null && componentPayload.getPayload() != null) {
|
||||
payload = (ModalPayload) gson.fromJson(componentPayload.getPayload(), Class.forName(componentPayload.getPayloadType()));
|
||||
}
|
||||
return ModalInteractionListenerModel
|
||||
.builder()
|
||||
.event(event)
|
||||
.deserializedPayload(payload)
|
||||
.payload(componentPayload.getPayload())
|
||||
.origin(componentPayload.getOrigin())
|
||||
.build();
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void postConstruct() {
|
||||
BeanUtils.sortPrioritizedListeners(listenerList);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command;
|
||||
package dev.sheldan.abstracto.core.interaction.slash;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.command.service.ExceptionService;
|
||||
import dev.sheldan.abstracto.core.command.service.PostCommandExecution;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -1,12 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.command.slash;
|
||||
package dev.sheldan.abstracto.core.interaction.slash;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.SlashCommandConfig;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommandInAServer;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandInServerManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
||||
import dev.sheldan.abstracto.core.utils.CompletableFutureList;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -145,7 +144,7 @@ public class SlashCommandServiceBean implements SlashCommandService {
|
||||
.map(Pair::getSecond)
|
||||
.collect(Collectors.toList());
|
||||
return guild.updateCommands().addCommands(commands).submit().thenApply(createdCommands -> {
|
||||
self.storeCreatedCommands(guild, commandData, createdCommands);
|
||||
self.storeCreatedSlashCommands(guild, commandData, createdCommands);
|
||||
return createdCommands;
|
||||
});
|
||||
}
|
||||
@@ -156,9 +155,8 @@ public class SlashCommandServiceBean implements SlashCommandService {
|
||||
.stream()
|
||||
.map(commandI -> guild.deleteCommandById(commandI).submit())
|
||||
.collect(Collectors.toList());
|
||||
return new CompletableFutureList<>(commandFutures).getMainFuture().thenAccept(unused -> {
|
||||
self.unsetCommandInServerSlashId(commandInServerIds);
|
||||
});
|
||||
return new CompletableFutureList<>(commandFutures).getMainFuture()
|
||||
.thenAccept(unused -> self.unsetCommandInServerSlashId(commandInServerIds));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -179,11 +177,12 @@ public class SlashCommandServiceBean implements SlashCommandService {
|
||||
.collect(Collectors.toList());
|
||||
CompletableFutureList<Command> allFutures = new CompletableFutureList<>(upsertFutures);
|
||||
return allFutures.getMainFuture()
|
||||
.thenAccept(unused -> self.storeCreatedCommands(guild, commandData, allFutures.getObjects()));
|
||||
.thenAccept(unused -> self.storeCreatedSlashCommands(guild, commandData, allFutures.getObjects()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void storeCreatedCommands(Guild guild, List<Pair<List<CommandConfiguration>, SlashCommandData>> commandData, List<Command> createdCommands) {
|
||||
public void storeCreatedSlashCommands(Guild guild, List<Pair<List<CommandConfiguration>, SlashCommandData>> commandData, List<Command> createdCommands) {
|
||||
commandData.forEach(commandConfigurationSlashCommandDataPair -> {
|
||||
SlashCommandData slashCommandData = commandConfigurationSlashCommandDataPair.getSecond();
|
||||
commandConfigurationSlashCommandDataPair.getFirst().forEach(commandConfiguration -> {
|
||||
@@ -201,5 +200,4 @@ public class SlashCommandServiceBean implements SlashCommandService {
|
||||
return commandConfig.getName().equals(command.getName());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.command.listener;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.SlashCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.slash.SlashCommandService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandService;
|
||||
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
||||
import dev.sheldan.abstracto.core.listener.async.entity.FeatureActivationListener;
|
||||
import dev.sheldan.abstracto.core.models.listener.FeatureActivationListenerModel;
|
||||
@@ -1,12 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.command.listener;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.SlashCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandListenerBean;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.model.database.ACommandInAServer;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandInServerManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.slash.SlashCommandService;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandService;
|
||||
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
||||
import dev.sheldan.abstracto.core.listener.async.entity.FeatureDeactivationListener;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.models.database.ChannelGroupType;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.entities.GuildChannel;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.entities.GuildMessageChannel;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.slash.parameter.provider.provided;
|
||||
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.command.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
|
||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.provider.SlashCommandParameterProvider;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,16 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.interactive;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import dev.sheldan.abstracto.core.command.config.features.CoreFeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.config.ListenerPriority;
|
||||
import dev.sheldan.abstracto.core.interactive.setup.payload.SetupConfirmationPayload;
|
||||
import dev.sheldan.abstracto.core.listener.ButtonClickedListenerResult;
|
||||
import dev.sheldan.abstracto.core.listener.async.jda.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.models.listener.ButtonClickedListenerModel;
|
||||
import dev.sheldan.abstracto.core.interaction.button.listener.ButtonClickedListenerResult;
|
||||
import dev.sheldan.abstracto.core.interaction.button.listener.ButtonClickedListener;
|
||||
import dev.sheldan.abstracto.core.interaction.button.listener.ButtonClickedListenerModel;
|
||||
import dev.sheldan.abstracto.core.service.DelayedActionService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureSetupServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
||||
import dev.sheldan.abstracto.core.interaction.ComponentPayloadManagementService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -36,9 +35,6 @@ public class InteractiveButtonClickedListener implements ButtonClickedListener {
|
||||
@Autowired
|
||||
private FeatureSetupServiceBean featureSetupServiceBean;
|
||||
|
||||
@Autowired
|
||||
private Gson gson;
|
||||
|
||||
@Override
|
||||
public ButtonClickedListenerResult execute(ButtonClickedListenerModel model) {
|
||||
SetupConfirmationPayload payload = (SetupConfirmationPayload) model.getDeserializedPayload();
|
||||
|
||||
@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.core.interactive.setup.payload;
|
||||
|
||||
import dev.sheldan.abstracto.core.interactive.DelayedActionConfigContainer;
|
||||
import dev.sheldan.abstracto.core.models.AServerChannelUserId;
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
||||
import dev.sheldan.abstracto.core.interaction.button.ButtonPayload;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user