[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:
Sheldan
2020-11-11 17:11:30 +01:00
parent c60cdb9d98
commit 04f1db2408
202 changed files with 7989 additions and 131 deletions

View File

@@ -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());
}
}

View File

@@ -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();
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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 {
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -0,0 +1,5 @@
package dev.sheldan.abstracto.core.models;
public interface Fakeable {
boolean isFake();
}

View File

@@ -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)

View File

@@ -33,10 +33,6 @@ public class DefaultFeatureFlag implements Serializable {
@Setter
private boolean enabled;
@Getter
@Setter
private String mode;
@Column(name = "created")
private Instant created;

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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());
}
}

View File

@@ -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() {