[AB-281] adding ban and unban command

removing banId command in favor of the normal ban command
removing various feature modes for moderation for clearer configuration
This commit is contained in:
Sheldan
2021-06-01 21:10:17 +02:00
parent 55e0879e06
commit 3bf761a2e5
41 changed files with 645 additions and 393 deletions

View File

@@ -2,9 +2,7 @@ package dev.sheldan.abstracto.moderation.config.feature;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureDefinition;
import dev.sheldan.abstracto.core.config.FeatureMode;
import dev.sheldan.abstracto.core.config.PostTargetEnum;
import dev.sheldan.abstracto.moderation.config.feature.mode.ModerationMode;
import dev.sheldan.abstracto.moderation.config.posttarget.ModerationPostTarget;
import org.springframework.stereotype.Component;
@@ -21,11 +19,7 @@ public class ModerationFeatureConfig implements FeatureConfig {
@Override
public List<PostTargetEnum> getRequiredPostTargets() {
return Arrays.asList(ModerationPostTarget.BAN_LOG, ModerationPostTarget.KICK_LOG);
return Arrays.asList(ModerationPostTarget.BAN_LOG, ModerationPostTarget.KICK_LOG, ModerationPostTarget.UN_BAN_LOG);
}
@Override
public List<FeatureMode> getAvailableModes() {
return Arrays.asList(ModerationMode.BAN_LOG, ModerationMode.KICK_LOG);
}
}

View File

@@ -26,6 +26,6 @@ public class MutingFeatureConfig implements FeatureConfig {
@Override
public List<FeatureMode> getAvailableModes() {
return Arrays.asList(MutingMode.MANUAL_UN_MUTE_LOGGING, MutingMode.MUTE_LOGGING, MutingMode.UN_MUTE_LOGGING);
return Arrays.asList(MutingMode.MANUAL_UN_MUTE_LOGGING);
}
}

View File

@@ -35,6 +35,6 @@ public class WarningFeatureConfig implements FeatureConfig {
@Override
public List<FeatureMode> getAvailableModes() {
return Arrays.asList(WarningMode.WARN_DECAY_LOG, WarningMode.WARN_LOG);
return Arrays.asList(WarningMode.WARN_DECAY_LOG);
}
}

View File

@@ -1,16 +0,0 @@
package dev.sheldan.abstracto.moderation.config.feature.mode;
import dev.sheldan.abstracto.core.config.FeatureMode;
import lombok.Getter;
@Getter
public enum ModerationMode implements FeatureMode {
BAN_LOG("banLogging"), KICK_LOG("kickLogging");
private final String key;
ModerationMode(String key) {
this.key = key;
}
}

View File

@@ -5,7 +5,7 @@ import lombok.Getter;
@Getter
public enum MutingMode implements FeatureMode {
MUTE_LOGGING("muteLogging"), UN_MUTE_LOGGING("unMuteLogging"), MANUAL_UN_MUTE_LOGGING("manualUnMuteLogging");
MANUAL_UN_MUTE_LOGGING("manualUnMuteLogging");
private final String key;

View File

@@ -5,7 +5,7 @@ import lombok.Getter;
@Getter
public enum WarningMode implements FeatureMode {
WARN_LOG("warnLogging"), WARN_DECAY_LOG("warnDecayLogging");
WARN_DECAY_LOG("warnDecayLogging");
private final String key;

View File

@@ -5,7 +5,7 @@ import lombok.Getter;
@Getter
public enum ModerationPostTarget implements PostTargetEnum {
KICK_LOG("kickLog"), BAN_LOG("banLog");
KICK_LOG("kickLog"), BAN_LOG("banLog"), UN_BAN_LOG("unBanLog");
private String key;

View File

@@ -1,31 +0,0 @@
package dev.sheldan.abstracto.moderation.model.template.command;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
/**
* Used when rendering the notification when a member was banned by ID. The template is: "banid_log_embed"
*/
@Getter
@SuperBuilder
@Setter
public class BanIdLog extends UserInitiatedServerContext {
/**
* The reason of the ban
*/
private String reason;
/**
* The member executing the ban
*/
private Member banningUser;
/**
* The Discord Snowflake of the user being banned.
*/
private Long bannedUserId;
}

View File

@@ -1,19 +1,20 @@
package dev.sheldan.abstracto.moderation.model.template.command;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Builder;
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 net.dv8tion.jda.api.entities.User;
/**
* Used when rendering the notification when a member was banned. The template is: "ban_log_embed"
*/
@Getter
@SuperBuilder
@Builder
@Setter
public class BanLog extends UserInitiatedServerContext {
public class BanLog {
/**
* The reason of the ban
*/
@@ -21,9 +22,10 @@ public class BanLog extends UserInitiatedServerContext {
/**
* The member executing the ban
*/
private Member banningUser;
private Member banningMember;
/**
* The member being banned
* The user being banned
*/
private Member bannedUser;
private User bannedUser;
private Message commandMessage;
}

View File

@@ -0,0 +1,27 @@
package dev.sheldan.abstracto.moderation.model.template.command;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.User;
/**
* Used when rendering the notification when a member was banned. The template is: "ban_log_embed"
*/
@Getter
@Builder
@Setter
public class UnBanLog {
/**
* The member executing the unban
*/
private Member unBanningMember;
/**
* The user being unbanned
*/
private User bannedUser;
private Message commandMessage;
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.moderation.model.template.listener;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.User;
@Getter
@Setter
@Builder
public class UserBannedListenerModel {
private User bannedUser;
private String reason;
private User banningUser;
}

View File

@@ -0,0 +1,14 @@
package dev.sheldan.abstracto.moderation.model.template.listener;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.User;
@Getter
@Setter
@Builder
public class UserUnBannedListenerModel {
private User unBannedUser;
private User unBanningUser;
}

View File

@@ -1,12 +1,14 @@
package dev.sheldan.abstracto.moderation.service;
import dev.sheldan.abstracto.core.models.context.ServerContext;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.User;
import java.util.concurrent.CompletableFuture;
public interface BanService {
String BAN_EFFECT_KEY = "ban";
CompletableFuture<Void> banMember(Member member, String reason, ServerContext banLog);
CompletableFuture<Void> banUserViaId(Long guildId, Long userId, String reason, ServerContext banIdLog);
CompletableFuture<Void> banMember(Member member, String reason, Member banningMember, Message message);
CompletableFuture<Void> banUser(User user, String reason, Member banningMember, Message message);
CompletableFuture<Void> unBanUser(User user, Member unBanningUser);
}