mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-20 05:24:09 +00:00
[AB-80] added tracking of emotes used by server members and configuration
updated sonar scanner version changed some commands to be silent instead of adding a check reaction
This commit is contained in:
@@ -25,7 +25,7 @@ public class FeatureModeCondition implements CommandCondition {
|
||||
return ConditionResult.builder().result(true).build();
|
||||
}
|
||||
}
|
||||
throw new IncorrectFeatureModeException(command, feature, command.getFeatureModeLimitations());
|
||||
throw new IncorrectFeatureModeException(feature, command.getFeatureModeLimitations());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,10 @@ public class CommandResult {
|
||||
return CommandResult.builder().result(ResultState.ERROR).message(message).throwable(throwable).build();
|
||||
}
|
||||
|
||||
public static CommandResult fromIgnored() {
|
||||
return CommandResult.builder().result(ResultState.IGNORED).build();
|
||||
}
|
||||
|
||||
public static CommandResult fromCondition(ConditionResult result) {
|
||||
return CommandResult.builder().conditionResult(result).result(ResultState.CONDITION).build();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface AChanelParameterHandler extends CommandParameterHandler {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface AEmoteParameterHandler extends CommandParameterHandler {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface ARoleParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface BooleanParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface CommandKeyParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface DoubleParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface DurationParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface EmoteParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface FullEmoteParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface FullRoleParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface IntegerParameterHandler extends CommandParameterHandler {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface LongParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface MemberParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface RoleParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler.provided;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.handler.CommandParameterHandler;
|
||||
|
||||
public interface TextChannelParameterHandler extends CommandParameterHandler {
|
||||
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.exception;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.models.exception.IncorrectFeatureModeExceptionModel;
|
||||
@@ -13,9 +12,9 @@ public class IncorrectFeatureModeException extends AbstractoRunTimeException imp
|
||||
|
||||
private final IncorrectFeatureModeExceptionModel model;
|
||||
|
||||
public IncorrectFeatureModeException(Command command, FeatureEnum featureEnum, List<FeatureMode> requiredModes) {
|
||||
public IncorrectFeatureModeException(FeatureEnum featureEnum, List<FeatureMode> requiredModes) {
|
||||
super("Incorrect feature mode for the command.");
|
||||
this.model = IncorrectFeatureModeExceptionModel.builder().command(command).featureEnum(featureEnum).requiredModes(requiredModes).build();
|
||||
this.model = IncorrectFeatureModeExceptionModel.builder().featureEnum(featureEnum).requiredModes(requiredModes).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
public interface EmoteCreatedListener extends FeatureAware, Prioritized {
|
||||
void emoteCreated(Emote createdEmote);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
public interface EmoteDeletedListener extends FeatureAware, Prioritized {
|
||||
void emoteDeleted(Emote deletedEmote);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
public interface EmoteUpdatedListener extends FeatureAware, Prioritized {
|
||||
void emoteUpdated(Emote updatedEmote, String oldValue, String newValue);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
public interface Fakeable {
|
||||
boolean isFake();
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.Fakeable;
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
@@ -16,7 +17,7 @@ import java.time.Instant;
|
||||
@EqualsAndHashCode
|
||||
@Cacheable
|
||||
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
public class AEmote implements Serializable {
|
||||
public class AEmote implements Serializable, Fakeable {
|
||||
|
||||
@javax.persistence.Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
|
||||
@@ -33,10 +33,6 @@ public class DefaultFeatureFlag implements Serializable {
|
||||
@Setter
|
||||
private boolean enabled;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private String mode;
|
||||
|
||||
@Column(name = "created")
|
||||
private Instant created;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import lombok.Builder;
|
||||
@@ -15,6 +14,5 @@ import java.util.List;
|
||||
@Builder
|
||||
public class IncorrectFeatureModeExceptionModel implements Serializable {
|
||||
private List<FeatureMode> requiredModes;
|
||||
private Command command;
|
||||
private FeatureEnum featureEnum;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.requests.restaction.MessageAction;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -18,6 +19,7 @@ public interface ChannelService {
|
||||
CompletableFuture<Message> sendTextToChannel(String text, MessageChannel channel);
|
||||
CompletableFuture<Message> sendEmbedToAChannel(MessageEmbed embed, AChannel channel);
|
||||
CompletableFuture<Message> sendEmbedToChannel(MessageEmbed embed, MessageChannel channel);
|
||||
MessageAction sendEmbedToChannelInComplete(MessageEmbed embed, MessageChannel channel);
|
||||
List<CompletableFuture<Message>> sendMessageToSendToAChannel(MessageToSend messageToSend, AChannel channel);
|
||||
CompletableFuture<Message> sendMessageToSendToAChannel(MessageToSend messageToSend, AChannel channel, Integer embedIndex);
|
||||
List<CompletableFuture<Message>> sendMessageToSendToChannel(MessageToSend messageToSend, MessageChannel textChannel);
|
||||
|
||||
@@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -22,4 +23,5 @@ public interface EmoteService {
|
||||
boolean compareAEmote(AEmote a, AEmote b);
|
||||
AEmote getFakeEmote(Object object);
|
||||
AEmote getFakeEmoteFromEmote(Emote emote);
|
||||
boolean emoteIsFromGuild(Emote emote, Guild guild);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import com.google.common.io.Files;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
|
||||
@Component
|
||||
public class FileUtils {
|
||||
public void writeContentToFile(File file, String content) throws IOException {
|
||||
try(FileWriter fw = new FileWriter(file)) {
|
||||
fw.write(content);
|
||||
fw.flush();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public File createTempFile(String fileName) {
|
||||
return new File(Files.createTempDir(), fileName);
|
||||
}
|
||||
|
||||
public void safeDelete(File file) throws IOException {
|
||||
java.nio.file.Files.delete(file.toPath());
|
||||
}
|
||||
}
|
||||
@@ -101,11 +101,20 @@ public class CommandTestUtilities {
|
||||
}
|
||||
|
||||
public static void checkSuccessfulCompletion(CommandResult result){
|
||||
Assert.assertEquals(ResultState.SUCCESSFUL, result.getResult());
|
||||
ResultState resultState = result.getResult();
|
||||
checkForSuccessResultState(resultState);
|
||||
}
|
||||
|
||||
private static void checkForSuccessResultState(ResultState resultState) {
|
||||
boolean canBeConsideredSuccessful = ResultState.SUCCESSFUL.equals(resultState)
|
||||
|| ResultState.IGNORED.equals(resultState)
|
||||
|| ResultState.SELF_DESTRUCT.equals(resultState);
|
||||
Assert.assertTrue(canBeConsideredSuccessful);
|
||||
}
|
||||
|
||||
public static void checkSuccessfulCompletionAsync(CompletableFuture<CommandResult> result){
|
||||
Assert.assertEquals(ResultState.SUCCESSFUL, result.join().getResult());
|
||||
ResultState resultState = result.join().getResult();
|
||||
checkForSuccessResultState(resultState);
|
||||
}
|
||||
|
||||
public static List<CompletableFuture<Message>> messageFutureList() {
|
||||
|
||||
Reference in New Issue
Block a user