added message to user initiated context

fixed templates for ban and kick logging
refactored kicking service
fixed guild not found exception template
added command validator to be used for unit testing commands
added default values for command configuration
changed some interfaces to message channel instead of text channel
added separate executor service for un-mutes, which is shared
updated spring boot version to 2.3.1
removed database connection string from properties
added logback configuration
changed some future logic in purge
refactored error message for un mute, when there is no active mute
refactored listener interface and removed usage of context utils
added tests for moderation services
This commit is contained in:
Sheldan
2020-06-20 11:08:44 +02:00
parent 8acd4f818d
commit c44eb80fc5
140 changed files with 4176 additions and 225 deletions

View File

@@ -13,6 +13,7 @@ import java.util.List;
@Component
public class WarningDecayFeature implements FeatureConfig {
public static final String DECAY_DAYS_KEY = "decayDays";
@Autowired
private WarningFeature warningFeature;
@@ -24,7 +25,7 @@ public class WarningDecayFeature implements FeatureConfig {
@Override
public List<String> getRequiredSystemConfigKeys() {
return Arrays.asList("decayDays");
return Arrays.asList(DECAY_DAYS_KEY);
}
@Override

View File

@@ -2,10 +2,21 @@ package dev.sheldan.abstracto.moderation.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.templating.Templatable;
public class MuteException extends AbstractoRunTimeException {
public class MuteException extends AbstractoRunTimeException implements Templatable {
public MuteException(String message) {
super(message);
}
@Override
public String getTemplateName() {
return "unMute_has_no_active_mute";
}
@Override
public Object getTemplateModel() {
return null;
}
}

View File

@@ -93,6 +93,7 @@ public class Mute {
@PrePersist
private void onInsert() {
this.created = Instant.now();
this.muteDate = Instant.now();
}
@Column(name = "updated")

View File

@@ -29,6 +29,7 @@ public class Warning {
* The {@link AUserInAServer} which was warned
*/
@Getter
@Setter
@ManyToOne
@JoinColumn(name = "warnedUserId", nullable = false)
private AUserInAServer warnedUser;
@@ -37,6 +38,7 @@ public class Warning {
* The {@link AUserInAServer} which gave the warning
*/
@Getter
@Setter
@ManyToOne
@JoinColumn(name = "warningUserId", nullable = false)
private AUserInAServer warningUser;
@@ -45,12 +47,14 @@ public class Warning {
* The reason why this warning was cast
*/
@Getter
@Setter
private String reason;
/**
* The date at which the warning was cast
*/
@Getter
@Setter
private Instant warnDate;
/**

View File

@@ -6,7 +6,6 @@ import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import java.time.Duration;
@@ -26,10 +25,6 @@ public class MuteLog extends UserInitiatedServerContext {
* The {@link Member} executing the mute
*/
private Member mutingUser;
/**
* The {@link Message} triggering the command to mute
*/
private Message message;
/**
* The persisted mute object from the database containing the information about the mute
*/

View File

@@ -6,7 +6,6 @@ import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
/**
* Used when rendering the notification when a member was warned. The template is: "warn_log_embed"
@@ -27,10 +26,6 @@ public class WarnLog extends UserInitiatedServerContext {
* The {@link Member} casting the warn
*/
private Member warningUser;
/**
* The {@link Message} which contained the command triggering the warn
*/
private Message message;
/**
* The persisted {@link Warning} object from the database containing the information about the warning
*/

View File

@@ -16,5 +16,5 @@ public class MessageDeletedLog extends UserInitiatedServerContext {
/**
* A {@link CachedMessage} representing the deleted message
*/
private CachedMessage message;
private CachedMessage cachedMessage;
}

View File

@@ -11,7 +11,7 @@ import java.time.Instant;
public interface MuteService {
Mute muteMember(Member memberToMute, Member userMuting, String reason, Instant unmuteDate, Message message);
Mute muteMember(AUserInAServer member, AUserInAServer userMuting, String reason, Instant unmuteDate, Message message);
Mute muteAUserInAServer(AUserInAServer member, AUserInAServer userMuting, String reason, Instant unmuteDate, Message message);
Mute muteUser(FullUser userToMute, FullUser userMuting, String reason, Instant unmuteDate, Message message);
void applyMuteRole(AUserInAServer aUserInAServer);
void muteMemberWithLog(Member memberToMute, Member memberMuting, String reason, Instant unmuteDate, MuteLog log, Message message);
@@ -19,6 +19,6 @@ public interface MuteService {
void cancelUnmuteJob(Mute mute);
void unmuteUser(Mute mute);
void endMute(Long muteId);
void completelyUnmuteUser(AUserInAServer aUserInAServer);
void completelyUnmuteUser(Member member);
void completelyUnMuteUser(AUserInAServer aUserInAServer);
void completelyUnMuteMember(Member member);
}

View File

@@ -7,6 +7,6 @@ import java.time.Duration;
public interface SlowModeService {
void setSlowMode(TextChannel channel, Duration duration);
void disableSlowMOde(TextChannel channel);
void disableSlowMode(TextChannel channel);
void setSlowMode(AChannel channel, Duration duration);
}

View File

@@ -6,14 +6,17 @@ import dev.sheldan.abstracto.moderation.models.database.Warning;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.MessageChannel;
import java.time.Instant;
public interface WarnService {
Warning warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, TextChannel feedbackChannel);
Warning warnUser(Member warnedMember, Member warningMember, String reason, TextChannel feedbackChannel);
Warning warnUser(FullUser warnedUser, FullUser warningUser, String reason, TextChannel feedbackChannel);
void warnUserWithLog(Member warnedMember, Member warningMember, String reason, WarnLog warnLog, TextChannel feedbackChannel);
Warning warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, MessageChannel feedbackChannel);
Warning warnMember(Member warnedMember, Member warningMember, String reason, MessageChannel feedbackChannel);
Warning warnFullUser(FullUser warnedUser, FullUser warningUser, String reason, MessageChannel feedbackChannel);
Warning warnUserWithLog(Member warnedMember, Member warningMember, String reason, WarnLog warnLog, MessageChannel feedbackChannel);
void decayWarning(Warning warning, Instant decayDate);
void decayWarningsForServer(AServer server);
void decayAllWarningsForServer(AServer server, boolean logWarnings);
}

View File

@@ -45,6 +45,13 @@ public interface MuteManagementService {
*/
boolean hasActiveMute(AUserInAServer userInAServer);
/**
* Returns if the given {@link AUserInAServer} has an active mute which has not yet been ended yet.
* @param member The {@link Member} to check for
* @return Whether or not the userInAServer has an active mute
*/
boolean hasActiveMute(Member member);
/**
* Returns any active {@link Mute} of this {@link AUserInAServer} in the database
* @param userInAServer The {@link AUserInAServer} to search a mute for