[AB-365] introducing slash commands for a selection of commands

adding method for pinning a message
moving suggestion to correct deployment
This commit is contained in:
Sheldan
2022-05-17 00:39:06 +02:00
parent 1913bc930d
commit 1d6de3f1e8
286 changed files with 8021 additions and 3065 deletions

View File

@@ -0,0 +1,10 @@
package dev.sheldan.abstracto.moderation.config;
public class ModerationSlashCommandNames {
public static final String MODERATION = "moderation";
public static final String WARNINGS = "warnings";
public static final String USER_NOTES = "usernotes";
public static final String MUTE = "mute";
public static final String WARN_DECAY = "warningdecay";
public static final String WARNINGS_PUBLIC = "warningspublic";
}

View File

@@ -10,7 +10,6 @@ public enum ModerationFeatureDefinition implements FeatureDefinition {
MUTING("muting"),
AUTOMATIC_WARN_DECAY("warnDecay"),
USER_NOTES("userNotes"),
INVITE_FILTER("inviteFilter"),
REPORT_REACTIONS("reportReactions"),
INFRACTIONS("infractions")
;

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.moderation.exception;
import dev.sheldan.abstracto.core.exception.AbstractoTemplatableException;
public class UserNoteNotFoundException extends AbstractoTemplatableException {
@Override
public String getTemplateName() {
return "user_note_not_found_exception";
}
@Override
public Object getTemplateModel() {
return new Object();
}
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.moderation.exception;
import dev.sheldan.abstracto.core.exception.AbstractoTemplatableException;
public class WarnNotFoundException extends AbstractoTemplatableException {
@Override
public String getTemplateName() {
return "warn_not_found_exception";
}
@Override
public Object getTemplateModel() {
return new Object();
}
}

View File

@@ -0,0 +1,6 @@
package dev.sheldan.abstracto.moderation.model;
public enum BanResult {
NOTIFICATION_FAILED, SUCCESSFUL
}

View File

@@ -1,18 +1,19 @@
package dev.sheldan.abstracto.moderation.model.template.command;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.GuildMessageChannel;
import net.dv8tion.jda.api.entities.Member;
/**
* Used when rendering the notification when a member was kicked. The template is: "kick_log_embed"
*/
@Getter
@SuperBuilder
@Builder
@Setter
public class KickLogModel extends SlimUserInitiatedServerContext {
public class KickLogModel {
/**
* The reason of the kick
*/
@@ -21,4 +22,7 @@ public class KickLogModel extends SlimUserInitiatedServerContext {
* The member being kicked
*/
private Member kickedUser;
private Member member;
private Guild guild;
private GuildMessageChannel channel;
}

View File

@@ -1,17 +1,18 @@
package dev.sheldan.abstracto.moderation.model.template.command;
import dev.sheldan.abstracto.core.models.FullUserInServer;
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 java.util.List;
@SuperBuilder
@Builder
@Getter
@Setter
public class ListNotesModel extends UserInitiatedServerContext {
public class ListNotesModel {
private List<NoteEntryModel> userNotes;
private FullUserInServer specifiedUser;
private Member member;
}

View File

@@ -1,15 +1,14 @@
package dev.sheldan.abstracto.moderation.model.template.command;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import java.util.List;
@Getter
@Setter
@SuperBuilder
public class MutesModel extends SlimUserInitiatedServerContext {
@Builder
public class MutesModel {
private List<MuteEntry> mutes;
}

View File

@@ -1,17 +1,17 @@
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;
/**
* Used to render the response of the myWarnings command. The template is: 'myWarnings_response_embed'
*/
@Getter
@Setter
@SuperBuilder
public class MyWarningsModel extends UserInitiatedServerContext {
@Builder
public class MyWarningsModel {
/**
* The total amount of warnings the member has
*/
@@ -20,4 +20,5 @@ public class MyWarningsModel extends UserInitiatedServerContext {
* The current (only active) amount of warnings the member has
*/
private Long currentWarnCount;
private Member member;
}

View File

@@ -1,19 +1,21 @@
package dev.sheldan.abstracto.moderation.model.template.command;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import dev.sheldan.abstracto.moderation.model.database.Warning;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.GuildMessageChannel;
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"
*/
@Getter
@SuperBuilder
@Builder
@Setter
public class WarnContext extends SlimUserInitiatedServerContext {
public class WarnContext {
/**
* The reason why the warn was cast
*/
@@ -27,4 +29,8 @@ public class WarnContext extends SlimUserInitiatedServerContext {
*/
private Long warnId;
private Long infractionId;
private Member member;
private Guild guild;
private Message message;
private GuildMessageChannel channel;
}

View File

@@ -1,17 +1,14 @@
package dev.sheldan.abstracto.moderation.service;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.User;
import dev.sheldan.abstracto.moderation.model.BanResult;
import net.dv8tion.jda.api.entities.*;
import java.time.Duration;
import java.util.concurrent.CompletableFuture;
public interface BanService {
String BAN_EFFECT_KEY = "ban";
CompletableFuture<Void> banMemberWithNotification(Member member, String reason, Member banningMember, Integer deletionDays, Message message);
CompletableFuture<Void> banUserWithNotification(User user, String reason, Member banningMember, Integer deletionDays, Message message);
CompletableFuture<BanResult> banUserWithNotification(User user, String reason, Member banningMember, Integer deletionDays);
CompletableFuture<Void> unBanUserWithNotification(User user, Member unBanningUser);
CompletableFuture<Void> banUser(Guild guild, User user, Integer deletionDays, String reason);
CompletableFuture<Void> unbanUser(Guild guild, User user);

View File

@@ -1,10 +1,13 @@
package dev.sheldan.abstracto.moderation.service;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.interactions.InteractionHook;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
public interface PurgeService {
CompletableFuture<Void> purgeMessagesInChannel(Integer count, GuildMessageChannel channel, Long messageId, Member purgingRestriction);
CompletableFuture<Void> purgeMessagesInChannel(Integer count, GuildMessageChannel channel, Message origin, Member purgingRestriction);
CompletionStage<Void> purgeMessagesInChannel(Integer amountOfMessages, GuildMessageChannel guildMessageChannel, Long startId, InteractionHook hook, Member memberToPurgeMessagesOf);
}

View File

@@ -9,6 +9,7 @@ import java.util.List;
public interface UserNoteManagementService {
UserNote createUserNote(AUserInAServer aUserInAServer, String note);
void deleteNote(Long id, AServer server);
void deleteNote(UserNote userNote);
UserNote loadNote(Long serverId, Long userNoteId);
boolean noteExists(Long id, AServer server);
List<UserNote> loadNotesForUser(AUserInAServer aUserInAServer);