From 8a38dd3d1a18b59b2b8ac1dd818c0cc4aee56739 Mon Sep 17 00:00:00 2001
From: Sheldan <5037282+Sheldan@users.noreply.github.com>
Date: Wed, 14 Jul 2021 02:09:29 +0200
Subject: [PATCH] [OPB-30] porting mod mode command enabling anti raid module
---
application/executable/pom.xml | 11 +
.../moderation-custom/pom.xml | 50 +
.../src/main/assembly/liquibase.xml | 18 +
.../custom/moderation/commands/ModMode.java | 52 +
.../config/ModerationCustomFeature.java | 35 +
.../ModerationCustomFeatureDefinition.java | 15 +
.../config/ModerationCustomProperties.java | 10 +
.../exception/ModRoleNotFoundException.java | 15 +
.../service/ModModeServiceBean.java | 55 +
.../resources/migrations/1.5.2/collection.xml | 10 +
.../migrations/1.5.2/seedData/command.xml | 18 +
.../migrations/1.5.2/seedData/data.xml | 11 +
.../migrations/1.5.2/seedData/feature.xml | 14 +
.../main/resources/migrations/dbchangelog.xsd | 1386 +++++++++++++++++
.../moderation-custom-changeLog.xml | 10 +
.../resources/moderation-custom.properties | 8 +
.../oneplus-bot-customizations/pom.xml | 1 +
.../docker-compose/src/main/resources/.env | 2 +-
deployment/image-packaging/pom.xml | 52 +
.../deployment/config/artifact_versions.json | 8 +-
pom.xml | 4 +-
.../translations/moderation-custom/pom.xml | 38 +
.../src/main/assembly/assembly.xml | 15 +
.../help/modMode_description_en_US.ftl | 1 +
.../modMode/help/modMode_long_help_en_US.ftl | 0
.../modMode_parameter_newState_help_en_US.ftl | 0
.../config/feature_moderationCustom_en_US.ftl | 1 +
...setup_config_modModeNewRoleColor_en_US.ftl | 1 +
...ature_setup_config_modModeRoleId_en_US.ftl | 1 +
.../mod_role_not_found_exception_en_US.ftl | 1 +
templates/translations/pom.xml | 1 +
31 files changed, 1838 insertions(+), 6 deletions(-)
create mode 100644 application/oneplus-bot-customizations/moderation-custom/pom.xml
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/assembly/liquibase.xml
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/commands/ModMode.java
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeature.java
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeatureDefinition.java
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomProperties.java
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/exception/ModRoleNotFoundException.java
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/service/ModModeServiceBean.java
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/collection.xml
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/command.xml
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/data.xml
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/feature.xml
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/dbchangelog.xsd
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/moderation-custom-changeLog.xml
create mode 100644 application/oneplus-bot-customizations/moderation-custom/src/main/resources/moderation-custom.properties
create mode 100644 templates/translations/moderation-custom/pom.xml
create mode 100644 templates/translations/moderation-custom/src/main/assembly/assembly.xml
create mode 100644 templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_description_en_US.ftl
create mode 100644 templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_long_help_en_US.ftl
create mode 100644 templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_parameter_newState_help_en_US.ftl
create mode 100644 templates/translations/moderation-custom/src/main/resources/en_US/config/feature_moderationCustom_en_US.ftl
create mode 100644 templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeNewRoleColor_en_US.ftl
create mode 100644 templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeRoleId_en_US.ftl
create mode 100644 templates/translations/moderation-custom/src/main/resources/en_US/exception/mod_role_not_found_exception_en_US.ftl
diff --git a/application/executable/pom.xml b/application/executable/pom.xml
index 298a5bb..bbff2c4 100644
--- a/application/executable/pom.xml
+++ b/application/executable/pom.xml
@@ -125,6 +125,11 @@
logging-impl
+
+ dev.sheldan.abstracto.modules
+ anti-raid-impl
+
+
dev.sheldan.abstracto.modules
invite-filter-impl
@@ -156,6 +161,12 @@
${project.version}
+
+ dev.sheldan.oneplus.bot.application.custom
+ moderation-custom
+ ${project.version}
+
+
dev.sheldan.oneplus.bot.application.modules
news
diff --git a/application/oneplus-bot-customizations/moderation-custom/pom.xml b/application/oneplus-bot-customizations/moderation-custom/pom.xml
new file mode 100644
index 0000000..cb9bcfd
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/pom.xml
@@ -0,0 +1,50 @@
+
+
+
+ oneplus-bot-customizations
+ dev.sheldan.oneplus.bot.application.custom
+ 1.5.2-SNAPSHOT
+
+ 4.0.0
+
+ moderation-custom
+
+
+ 8
+ 8
+
+
+
+
+
+ dev.sheldan.abstracto.modules
+ moderation-int
+ ${abstracto.version}
+
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ src/main/assembly/liquibase.xml
+
+
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/assembly/liquibase.xml b/application/oneplus-bot-customizations/moderation-custom/src/main/assembly/liquibase.xml
new file mode 100644
index 0000000..8b4774f
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/assembly/liquibase.xml
@@ -0,0 +1,18 @@
+
+ liquibase
+
+ zip
+
+ false
+
+
+ .
+ ${project.basedir}/src/main/resources/migrations
+
+ **/*
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/commands/ModMode.java b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/commands/ModMode.java
new file mode 100644
index 0000000..7316f8e
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/commands/ModMode.java
@@ -0,0 +1,52 @@
+package dev.sheldan.oneplus.bot.custom.moderation.commands;
+
+import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
+import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
+import dev.sheldan.abstracto.core.command.config.HelpInfo;
+import dev.sheldan.abstracto.core.command.config.Parameter;
+import dev.sheldan.abstracto.core.command.execution.CommandContext;
+import dev.sheldan.abstracto.core.command.execution.CommandResult;
+import dev.sheldan.abstracto.core.config.FeatureDefinition;
+import dev.sheldan.abstracto.moderation.config.ModerationModuleDefinition;
+import dev.sheldan.oneplus.bot.custom.moderation.config.ModerationCustomFeatureDefinition;
+import dev.sheldan.oneplus.bot.custom.moderation.service.ModModeServiceBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Collections;
+import java.util.concurrent.CompletableFuture;
+
+@Component
+public class ModMode extends AbstractConditionableCommand {
+
+ @Autowired
+ private ModModeServiceBean modModeServiceBean;
+
+ @Override
+ public CompletableFuture executeAsync(CommandContext commandContext) {
+ Boolean newState = (Boolean) commandContext.getParameters().getParameters().get(0);
+ return modModeServiceBean.setModModeTo(commandContext.getGuild(), newState)
+ .thenApply(unused -> CommandResult.fromSuccess());
+ }
+
+ @Override
+ public CommandConfiguration getConfiguration() {
+ Parameter newStateParameter = Parameter.builder().name("newState").templated(true).type(Boolean.class).build();
+ HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
+ return CommandConfiguration.builder()
+ .name("modMode")
+ .async(true)
+ .module(ModerationModuleDefinition.MODERATION)
+ .parameters(Collections.singletonList(newStateParameter))
+ .help(helpInfo)
+ .templated(true)
+ .supportsEmbedException(true)
+ .causesReaction(true)
+ .build();
+ }
+
+ @Override
+ public FeatureDefinition getFeature() {
+ return ModerationCustomFeatureDefinition.MODERATION_CUSTOM;
+ }
+}
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeature.java b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeature.java
new file mode 100644
index 0000000..20308e2
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeature.java
@@ -0,0 +1,35 @@
+package dev.sheldan.oneplus.bot.custom.moderation.config;
+
+import dev.sheldan.abstracto.core.config.FeatureConfig;
+import dev.sheldan.abstracto.core.config.FeatureDefinition;
+import dev.sheldan.abstracto.moderation.config.feature.ModerationFeatureConfig;
+import dev.sheldan.oneplus.bot.custom.moderation.service.ModModeServiceBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+@Component
+public class ModerationCustomFeature implements FeatureConfig {
+
+ @Autowired
+ private ModerationFeatureConfig moderationFeatureConfig;
+
+ @Override
+ public FeatureDefinition getFeature() {
+ return ModerationCustomFeatureDefinition.MODERATION_CUSTOM;
+ }
+
+ @Override
+ public List getRequiredFeatures() {
+ return Arrays.asList(moderationFeatureConfig);
+ }
+
+ @Override
+ public List getRequiredSystemConfigKeys() {
+ return Arrays.asList(ModModeServiceBean.MODMODE_ROLE_CONFIG_KEY,
+ ModModeServiceBean.MODMODE_CHANGED_ROLE_COLOR_CONFIG_KEY);
+ }
+}
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeatureDefinition.java b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeatureDefinition.java
new file mode 100644
index 0000000..abda7b4
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomFeatureDefinition.java
@@ -0,0 +1,15 @@
+package dev.sheldan.oneplus.bot.custom.moderation.config;
+
+import dev.sheldan.abstracto.core.config.FeatureDefinition;
+import lombok.Getter;
+
+@Getter
+public enum ModerationCustomFeatureDefinition implements FeatureDefinition {
+ MODERATION_CUSTOM("moderationCustom");
+
+ private String key;
+
+ ModerationCustomFeatureDefinition(String key) {
+ this.key = key;
+ }
+}
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomProperties.java b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomProperties.java
new file mode 100644
index 0000000..464103e
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/config/ModerationCustomProperties.java
@@ -0,0 +1,10 @@
+package dev.sheldan.oneplus.bot.custom.moderation.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+
+@Configuration
+@PropertySource("classpath:moderation-custom.properties")
+public class ModerationCustomProperties {
+
+}
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/exception/ModRoleNotFoundException.java b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/exception/ModRoleNotFoundException.java
new file mode 100644
index 0000000..06fb3a0
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/exception/ModRoleNotFoundException.java
@@ -0,0 +1,15 @@
+package dev.sheldan.oneplus.bot.custom.moderation.exception;
+
+import dev.sheldan.abstracto.core.exception.AbstractoTemplatableException;
+
+public class ModRoleNotFoundException extends AbstractoTemplatableException {
+ @Override
+ public String getTemplateName() {
+ return "mod_role_not_found_exception";
+ }
+
+ @Override
+ public Object getTemplateModel() {
+ return new Object();
+ }
+}
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/service/ModModeServiceBean.java b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/service/ModModeServiceBean.java
new file mode 100644
index 0000000..f8b47b0
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/java/dev/sheldan/oneplus/bot/custom/moderation/service/ModModeServiceBean.java
@@ -0,0 +1,55 @@
+package dev.sheldan.oneplus.bot.custom.moderation.service;
+
+import dev.sheldan.abstracto.core.service.ConfigService;
+import dev.sheldan.oneplus.bot.custom.moderation.exception.ModRoleNotFoundException;
+import lombok.extern.slf4j.Slf4j;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Role;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.awt.*;
+import java.util.concurrent.CompletableFuture;
+
+@Component
+@Slf4j
+public class ModModeServiceBean {
+ public static final String MODMODE_ROLE_CONFIG_KEY = "modModeRoleId";
+ public static final String MODMODE_CHANGED_ROLE_COLOR_CONFIG_KEY = "modModeNewRoleColor";
+
+ @Autowired
+ private ConfigService configService;
+
+ public CompletableFuture setModModeTo(Guild guild, Boolean newState) {
+ if(Boolean.TRUE.equals(newState)) {
+ return enableModMode(guild);
+ } else {
+ return disableModMoe(guild);
+ }
+ }
+
+ private CompletableFuture enableModMode(Guild guild) {
+ Color colorToSet = getColorFromConfig(MODMODE_CHANGED_ROLE_COLOR_CONFIG_KEY, guild);
+ return setModRoleTo(guild, colorToSet);
+ }
+
+ private CompletableFuture disableModMoe(Guild guild) {
+ return setModRoleTo(guild, null);
+ }
+
+ private Color getColorFromConfig(String key, Guild guild) {
+ String colorString = configService.getStringValueOrConfigDefault(key, guild.getIdLong());
+ String[] parts = colorString.split(",");
+ return new Color(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
+ }
+
+ private CompletableFuture setModRoleTo(Guild guild, Color color) {
+ Long roleId = configService.getLongValue(MODMODE_ROLE_CONFIG_KEY, guild.getIdLong());
+ Role modRole = guild.getRoleById(roleId);
+ if(modRole != null) {
+ return modRole.getManager().setColor(color).submit();
+ } else {
+ throw new ModRoleNotFoundException();
+ }
+ }
+}
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/collection.xml b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/collection.xml
new file mode 100644
index 0000000..121b5aa
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/collection.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/command.xml b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/command.xml
new file mode 100644
index 0000000..b65afcd
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/command.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/data.xml b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/data.xml
new file mode 100644
index 0000000..d492a35
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/data.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/feature.xml b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/feature.xml
new file mode 100644
index 0000000..6ca36db
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/1.5.2/seedData/feature.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/dbchangelog.xsd b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/dbchangelog.xsd
new file mode 100644
index 0000000..83483a5
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/dbchangelog.xsd
@@ -0,0 +1,1386 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension to standard XSD boolean type to allow ${} parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension to standard XSD integer type to allow ${} parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ onChangeLogPreconditionOnSqlOutput determines what should
+ happen when evaluating this precondition in updateSQL mode. TEST: Run
+ precondition, FAIL: Fail precondition, IGNORE: Skip precondition check
+ [DEFAULT]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Used with valueClobFile to specify file encoding explicitly.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true for a cycling sequence, false for a non-cycling sequence.
+ Default is false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/moderation-custom-changeLog.xml b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/moderation-custom-changeLog.xml
new file mode 100644
index 0000000..f79de8a
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/migrations/moderation-custom-changeLog.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/moderation-custom/src/main/resources/moderation-custom.properties b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/moderation-custom.properties
new file mode 100644
index 0000000..987ec3a
--- /dev/null
+++ b/application/oneplus-bot-customizations/moderation-custom/src/main/resources/moderation-custom.properties
@@ -0,0 +1,8 @@
+abstracto.featureFlags.moderationCustom.featureName=moderationCustom
+abstracto.featureFlags.moderationCustom.enabled=false
+
+abstracto.systemConfigs.modModeRoleId.name=modModeRoleId
+abstracto.systemConfigs.modModeRoleId.longValue=0
+
+abstracto.systemConfigs.modModeNewRoleColor.name=modModeNewRoleColor
+abstracto.systemConfigs.modModeNewRoleColor.stringValue=0,0,0
\ No newline at end of file
diff --git a/application/oneplus-bot-customizations/pom.xml b/application/oneplus-bot-customizations/pom.xml
index 85c4248..6e1800d 100644
--- a/application/oneplus-bot-customizations/pom.xml
+++ b/application/oneplus-bot-customizations/pom.xml
@@ -14,5 +14,6 @@
starboard-custom
dynamic-activity-custom
+ moderation-custom
\ No newline at end of file
diff --git a/deployment/docker-compose/src/main/resources/.env b/deployment/docker-compose/src/main/resources/.env
index e51c24a..7f8eb47 100644
--- a/deployment/docker-compose/src/main/resources/.env
+++ b/deployment/docker-compose/src/main/resources/.env
@@ -26,4 +26,4 @@ PGADMIN_DEFAULT_EMAIL=sheldan@sheldan.dev
PGADMIN_DEFAULT_PASSWORD=admin
TOKEN=
YOUTUBE_API_KEY=
-ONEPLUS_BOT_VERSION=1.5.1
+ONEPLUS_BOT_VERSION=1.5.2
\ No newline at end of file
diff --git a/deployment/image-packaging/pom.xml b/deployment/image-packaging/pom.xml
index 4341961..af8aca9 100644
--- a/deployment/image-packaging/pom.xml
+++ b/deployment/image-packaging/pom.xml
@@ -73,6 +73,16 @@
assignable-roles.zip
+
+ dev.sheldan.abstracto-templates.templates
+ anti-raid
+ ${abstracto.templates.version}
+ zip
+ true
+ ${file.basedir}/deployment/template-artifacts/
+ anti-raid.zip
+
+
dev.sheldan.abstracto-templates.templates
voice-channel-context
@@ -282,6 +292,16 @@
assignable-roles.zip
+
+ dev.sheldan.abstracto-templates.translations
+ anti-raid
+ ${abstracto.templates.version}
+ zip
+ true
+ ${file.basedir}/deployment/translation-artifacts/
+ anti-raid.zip
+
+
dev.sheldan.abstracto-templates.translations
voice-channel-context
@@ -442,6 +462,16 @@
starboard-custom.zip
+
+ dev.sheldan.oneplus.bot.templates.translations
+ moderation-custom
+ ${project.version}
+ zip
+ true
+ ${file.basedir}/deployment/translation-artifacts/
+ moderation-custom.zip
+
+
dev.sheldan.oneplus.bot.templates.translations
dynamic-activity-custom-translations
@@ -527,6 +557,17 @@
assignable-roles.zip
+
+ dev.sheldan.abstracto.modules
+ anti-raid-impl
+ ${abstracto.version}
+ liquibase
+ zip
+ true
+ ${file.basedir}/deployment/liquibase-artifacts/
+ anti-raid.zip
+
+
dev.sheldan.abstracto.modules
voice-channel-context-impl
@@ -727,6 +768,17 @@
starboard-custom.zip
+
+ dev.sheldan.oneplus.bot.application.custom
+ moderation-custom
+ ${project.version}
+ liquibase
+ zip
+ true
+ ${file.basedir}/deployment/liquibase-artifacts/
+ moderation-custom.zip
+
+
dev.sheldan.oneplus.bot.application.custom
dynamic-activity-custom
diff --git a/deployment/image-packaging/src/main/docker/deployment/config/artifact_versions.json b/deployment/image-packaging/src/main/docker/deployment/config/artifact_versions.json
index 1af5557..8e6b762 100644
--- a/deployment/image-packaging/src/main/docker/deployment/config/artifact_versions.json
+++ b/deployment/image-packaging/src/main/docker/deployment/config/artifact_versions.json
@@ -1,15 +1,15 @@
{
"template_artifacts": ["utility", "core", "entertainment", "starboard", "link-embed", "webservices", "remind", "logging",
"suggestion", "invite-filter", "profanity-filter", "statistic", "experience-tracking", "moderation", "modmail", "assignable-roles",
- "voice-channel-context",
+ "voice-channel-context", "anti-raid",
"starboard-custom",
"overrides-templates-webservices", "overrides-templates-core", "overrides-templates-logging", "overrides-templates-statistic",
"overrides-templates-modmail", "overrides-templates-moderation",
"news", "referral", "faq"],
"translation_artifacts": ["utility", "core", "entertainment", "starboard", "link-embed", "webservices", "suggestion",
"remind", "logging", "invite-filter", "profanity-filter", "statistic", "experience-tracking", "moderation", "modmail", "assignable-roles",
- "voice-channel-context",
- "starboard-custom", "dynamic-activity-custom-translations",
+ "voice-channel-context", "anti-raid",
+ "starboard-custom", "dynamic-activity-custom-translations", "moderation-custom",
"overrides-translation-moderation",
"news", "setup", "referral", "faq"],
"liquibase_artifacts": [
@@ -31,10 +31,12 @@
{ "zip": "modmail", "file": "modMail-changeLog.xml"},
{ "zip": "assignable-roles", "file": "assignableRoles-changeLog.xml"},
{ "zip": "voice-channel-context", "file": "voiceChannelContext-changeLog.xml"},
+ { "zip": "anti-raid", "file": "antiRaid-changeLog.xml"},
{ "zip": "dynamic-activity", "file": "dynamicActivity-changeLog.xml"},
{ "zip": "setup", "file": "setup-changeLog.xml"},
{ "zip": "referral", "file": "referral-changeLog.xml"},
{ "zip": "starboard-custom", "file": "starboard-custom-changeLog.xml"},
+ { "zip": "moderation-custom", "file": "moderation-custom-changeLog.xml"},
{ "zip": "dynamic-activity-custom", "file": "dynamicActivity-custom-changeLog.xml"},
{ "zip": "news", "file": "news-changeLog.xml"},
{ "zip": "faq", "file": "faq-changeLog.xml"}
diff --git a/pom.xml b/pom.xml
index 0c5ac5b..e2e80fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,8 +19,8 @@
1.8
- 1.3.2
- 1.2.15
+ 1.3.3-SNAPSHOT
+ 1.2.16-SNAPSHOT
diff --git a/templates/translations/moderation-custom/pom.xml b/templates/translations/moderation-custom/pom.xml
new file mode 100644
index 0000000..386342d
--- /dev/null
+++ b/templates/translations/moderation-custom/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+ translations
+ dev.sheldan.oneplus.bot.templates.translations
+ 1.5.2-SNAPSHOT
+
+ 4.0.0
+
+ moderation-custom
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+ moderation-custom-translations-${project.version}
+ false
+
+ src/main/assembly/assembly.xml
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/translations/moderation-custom/src/main/assembly/assembly.xml b/templates/translations/moderation-custom/src/main/assembly/assembly.xml
new file mode 100644
index 0000000..aca1e51
--- /dev/null
+++ b/templates/translations/moderation-custom/src/main/assembly/assembly.xml
@@ -0,0 +1,15 @@
+
+ zip
+ false
+
+ zip
+
+
+
+ .
+ ${project.basedir}/src/main/resources
+
+
+
\ No newline at end of file
diff --git a/templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_description_en_US.ftl b/templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_description_en_US.ftl
new file mode 100644
index 0000000..ad54565
--- /dev/null
+++ b/templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_description_en_US.ftl
@@ -0,0 +1 @@
+Switches the moderation role to a different color
\ No newline at end of file
diff --git a/templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_long_help_en_US.ftl b/templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_long_help_en_US.ftl
new file mode 100644
index 0000000..e69de29
diff --git a/templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_parameter_newState_help_en_US.ftl b/templates/translations/moderation-custom/src/main/resources/en_US/commands/modMode/help/modMode_parameter_newState_help_en_US.ftl
new file mode 100644
index 0000000..e69de29
diff --git a/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_moderationCustom_en_US.ftl b/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_moderationCustom_en_US.ftl
new file mode 100644
index 0000000..d63d4c1
--- /dev/null
+++ b/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_moderationCustom_en_US.ftl
@@ -0,0 +1 @@
+Custom moderation
\ No newline at end of file
diff --git a/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeNewRoleColor_en_US.ftl b/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeNewRoleColor_en_US.ftl
new file mode 100644
index 0000000..3b44980
--- /dev/null
+++ b/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeNewRoleColor_en_US.ftl
@@ -0,0 +1 @@
+The color the moderation role should take when mod mode is active. Default: ${defaultValue}
\ No newline at end of file
diff --git a/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeRoleId_en_US.ftl b/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeRoleId_en_US.ftl
new file mode 100644
index 0000000..aaf8b5b
--- /dev/null
+++ b/templates/translations/moderation-custom/src/main/resources/en_US/config/feature_setup_config_modModeRoleId_en_US.ftl
@@ -0,0 +1 @@
+The ID of the moderation role. Default: ${defaultValue}
\ No newline at end of file
diff --git a/templates/translations/moderation-custom/src/main/resources/en_US/exception/mod_role_not_found_exception_en_US.ftl b/templates/translations/moderation-custom/src/main/resources/en_US/exception/mod_role_not_found_exception_en_US.ftl
new file mode 100644
index 0000000..64ae31c
--- /dev/null
+++ b/templates/translations/moderation-custom/src/main/resources/en_US/exception/mod_role_not_found_exception_en_US.ftl
@@ -0,0 +1 @@
+Moderation role was not configured correctly. Role could not be found. Setup the feature.
\ No newline at end of file
diff --git a/templates/translations/pom.xml b/templates/translations/pom.xml
index 78d7f27..16c6ac6 100644
--- a/templates/translations/pom.xml
+++ b/templates/translations/pom.xml
@@ -17,5 +17,6 @@
referral-translations
faq-translations
dynamic-activity-custom-translations
+ moderation-custom
\ No newline at end of file