From e236522328adaba548912d830b80427b5f88c4dc Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Wed, 12 May 2021 00:14:18 +0200 Subject: [PATCH] [OPB-19] adding referral link functionality changing name for setups feature aligning starboard custom module name --- application/executable/pom.xml | 8 +- application/oneplus-bot-modules/pom.xml | 3 +- .../oneplus-bot-modules/referral/pom.xml | 41 + .../src/main/assembly/liquibase.xml | 0 .../referral/config/ReferralBeanConfig.java | 15 + .../referral/config/ReferralFeature.java | 24 + .../config/ReferralFeatureDefinition.java | 15 + .../referral/config/ReferralPostTarget.java | 15 + .../referral/config/ReferralProperties.java | 10 + .../referral/listener/ReferralListener.java | 167 ++ .../modules/referral/model/ReferralType.java | 14 + .../model/database/ReferralUserInAServer.java | 44 + .../referral/model/template/Referral.java | 15 + .../model/template/ReferralPostModel.java | 16 + .../template/ReferralTooRecentModel.java | 14 + .../ReferralUserInAServerRepository.java | 12 + .../referral/service/ReferralServiceBean.java | 77 + .../ReferralUserManagementServiceBean.java | 38 + .../migrations/1.3.11-referral/collection.xml | 11 + .../referral-seedData/data.xml} | 2 +- .../referral-seedData/feature.xml | 14 + .../referral_user_in_server.xml | 35 + .../referral-tables/tables.xml | 10 + .../main/resources/migrations/dbchangelog.xsd | 0 .../migrations/referral-changeLog.xml | 10 + .../src/main/resources/referral.properties | 8 + .../{setups => setup}/pom.xml | 2 +- .../setup/src/main/assembly/liquibase.xml | 18 + .../setup/config/SetupBeanConfig.java} | 6 +- .../setup/config/SetupFeatureConfig.java} | 12 +- .../setup/config/SetupFeatureDefinition.java | 15 + .../modules/setup/config/SetupPostTarget.java | 15 + .../setup/config/SetupProperties.java} | 6 +- .../setup/listener/SetupListener.java} | 50 +- .../setup/service/SetupServiceBean.java} | 4 +- .../migrations/1.3.11-setup}/collection.xml | 2 +- .../1.3.11-setup/setup-seedData}/data.xml | 0 .../setup-seedData}/default_emote.xml | 4 +- .../1.3.11-setup/setup-seedData}/feature.xml | 4 +- .../main/resources/migrations/dbchangelog.xsd | 1386 +++++++++++++++++ .../resources/migrations/setup-changeLog.xml | 10 + .../setup/src/main/resources/setup.properties | 6 + .../config/SetupsFeatureDefinition.java | 15 - .../setups/config/SetupsPostTarget.java | 15 - .../src/main/resources/setups.properties | 6 - deployment/image-packaging/pom.xml | 41 +- .../deployment/config/artifact_versions.json | 7 +- pom.xml | 4 +- .../oneplus-bot-modules-templates/pom.xml | 3 +- .../referral-templates/pom.xml | 38 + .../src/main/assembly/assembly.xml | 0 ...ner_no_referral_link_found_embed_en_US.ftl | 3 + ...rralListener_referral_post_embed_en_US.ftl | 17 + ...alListener_too_recent_post_embed_en_US.ftl | 5 + .../pom.xml | 0 .../src/main/assembly/assembly.xml | 0 ..._post_created_notification_embed_en_US.ftl | 0 ..._post_deleted_notification_embed_en_US.ftl | 0 templates/translations/pom.xml | 3 +- .../referral-translations/pom.xml | 39 + .../src/main/assembly/assembly.xml | 15 + .../en_US/config/feature_referral_en_US.ftl | 1 + ...eature_setup_posttarget_referral_en_US.ftl | 1 + .../referral_link_type_accessories_en_US.ftl | 1 + ...ferral_link_type_smartphoneIndia_en_US.ftl | 1 + .../referral_link_type_smartphone_en_US.ftl | 1 + .../listener/no_referral_link_found_en_US.ftl | 1 + ...stener_referral_post_description_en_US.ftl | 1 + .../too_recent_referral_post_en_US.ftl | 1 + .../pom.xml | 4 +- .../src/main/assembly/assembly.xml | 15 + .../en_US/config/feature_setup_en_US.ftl | 1 + .../feature_setup_posttarget_setup_en_US.ftl} | 0 .../en_US/config/feature_setups_en_US.ftl | 1 - .../starboard-custom-translations/pom.xml | 2 +- 75 files changed, 2302 insertions(+), 98 deletions(-) create mode 100644 application/oneplus-bot-modules/referral/pom.xml rename application/oneplus-bot-modules/{setups => referral}/src/main/assembly/liquibase.xml (100%) create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralBeanConfig.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeature.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeatureDefinition.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralPostTarget.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralProperties.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/listener/ReferralListener.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/ReferralType.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/database/ReferralUserInAServer.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/Referral.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralPostModel.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralTooRecentModel.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/repository/ReferralUserInAServerRepository.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/ReferralServiceBean.java create mode 100644 application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/management/ReferralUserManagementServiceBean.java create mode 100644 application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/collection.xml rename application/oneplus-bot-modules/{setups/src/main/resources/migrations/setups-changeLog.xml => referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/data.xml} (87%) create mode 100644 application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/feature.xml create mode 100644 application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/referral_user_in_server.xml create mode 100644 application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/tables.xml rename application/oneplus-bot-modules/{setups => referral}/src/main/resources/migrations/dbchangelog.xsd (100%) create mode 100644 application/oneplus-bot-modules/referral/src/main/resources/migrations/referral-changeLog.xml create mode 100644 application/oneplus-bot-modules/referral/src/main/resources/referral.properties rename application/oneplus-bot-modules/{setups => setup}/pom.xml (97%) create mode 100644 application/oneplus-bot-modules/setup/src/main/assembly/liquibase.xml rename application/oneplus-bot-modules/{setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsBeanConfig.java => setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupBeanConfig.java} (73%) rename application/oneplus-bot-modules/{setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeature.java => setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureConfig.java} (57%) create mode 100644 application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureDefinition.java create mode 100644 application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupPostTarget.java rename application/oneplus-bot-modules/{setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsProperties.java => setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupProperties.java} (51%) rename application/oneplus-bot-modules/{setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/listener/SetupsListener.java => setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/listener/SetupListener.java} (62%) rename application/oneplus-bot-modules/{setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/service/SetupsService.java => setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/service/SetupServiceBean.java} (92%) rename application/oneplus-bot-modules/{setups/src/main/resources/migrations/1.3.11-setups => setup/src/main/resources/migrations/1.3.11-setup}/collection.xml (88%) rename application/oneplus-bot-modules/{setups/src/main/resources/migrations/1.3.11-setups/setups-seedData => setup/src/main/resources/migrations/1.3.11-setup/setup-seedData}/data.xml (100%) rename application/oneplus-bot-modules/{setups/src/main/resources/migrations/1.3.11-setups/setups-seedData => setup/src/main/resources/migrations/1.3.11-setup/setup-seedData}/default_emote.xml (85%) rename application/oneplus-bot-modules/{setups/src/main/resources/migrations/1.3.11-setups/setups-seedData => setup/src/main/resources/migrations/1.3.11-setup/setup-seedData}/feature.xml (85%) create mode 100644 application/oneplus-bot-modules/setup/src/main/resources/migrations/dbchangelog.xsd create mode 100644 application/oneplus-bot-modules/setup/src/main/resources/migrations/setup-changeLog.xml create mode 100644 application/oneplus-bot-modules/setup/src/main/resources/setup.properties delete mode 100644 application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeatureDefinition.java delete mode 100644 application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsPostTarget.java delete mode 100644 application/oneplus-bot-modules/setups/src/main/resources/setups.properties create mode 100644 templates/oneplus-bot-modules-templates/referral-templates/pom.xml rename templates/oneplus-bot-modules-templates/{starboard-custom => referral-templates}/src/main/assembly/assembly.xml (100%) create mode 100644 templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_no_referral_link_found_embed_en_US.ftl create mode 100644 templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_referral_post_embed_en_US.ftl create mode 100644 templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_too_recent_post_embed_en_US.ftl rename templates/oneplus-bot-modules-templates/{starboard-custom => starboard-custom-templates}/pom.xml (100%) rename templates/{translations/setups-translations => oneplus-bot-modules-templates/starboard-custom-templates}/src/main/assembly/assembly.xml (100%) rename templates/oneplus-bot-modules-templates/{starboard-custom => starboard-custom-templates}/src/main/resources/en_US/listener/starboardNotification/starboard_post_created_notification_embed_en_US.ftl (100%) rename templates/oneplus-bot-modules-templates/{starboard-custom => starboard-custom-templates}/src/main/resources/en_US/listener/starboardNotification/starboard_post_deleted_notification_embed_en_US.ftl (100%) create mode 100644 templates/translations/referral-translations/pom.xml create mode 100644 templates/translations/referral-translations/src/main/assembly/assembly.xml create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/config/feature_referral_en_US.ftl create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/config/feature_setup_posttarget_referral_en_US.ftl create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_accessories_en_US.ftl create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphoneIndia_en_US.ftl create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphone_en_US.ftl create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/listener/no_referral_link_found_en_US.ftl create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/listener/referralListener_referral_post_description_en_US.ftl create mode 100644 templates/translations/referral-translations/src/main/resources/en_US/listener/too_recent_referral_post_en_US.ftl rename templates/translations/{setups-translations => setup-translations}/pom.xml (90%) create mode 100644 templates/translations/setup-translations/src/main/assembly/assembly.xml create mode 100644 templates/translations/setup-translations/src/main/resources/en_US/config/feature_setup_en_US.ftl rename templates/translations/{setups-translations/src/main/resources/en_US/config/feature_setup_posttarget_setups_en_US.ftl => setup-translations/src/main/resources/en_US/config/feature_setup_posttarget_setup_en_US.ftl} (100%) delete mode 100644 templates/translations/setups-translations/src/main/resources/en_US/config/feature_setups_en_US.ftl diff --git a/application/executable/pom.xml b/application/executable/pom.xml index ab3f453..8135a63 100644 --- a/application/executable/pom.xml +++ b/application/executable/pom.xml @@ -124,7 +124,13 @@ dev.sheldan.oneplus.bot.application.modules - setups + setup + ${project.version} + + + + dev.sheldan.oneplus.bot.application.modules + referral ${project.version} diff --git a/application/oneplus-bot-modules/pom.xml b/application/oneplus-bot-modules/pom.xml index ec2833f..c2e12eb 100644 --- a/application/oneplus-bot-modules/pom.xml +++ b/application/oneplus-bot-modules/pom.xml @@ -12,7 +12,8 @@ pom news - setups + setup + referral diff --git a/application/oneplus-bot-modules/referral/pom.xml b/application/oneplus-bot-modules/referral/pom.xml new file mode 100644 index 0000000..575257c --- /dev/null +++ b/application/oneplus-bot-modules/referral/pom.xml @@ -0,0 +1,41 @@ + + + + dev.sheldan.oneplus.bot.application.modules + oneplus-bot-modules + 1.3.11-SNAPSHOT + + 4.0.0 + + referral + + + 8 + 8 + + + + + + maven-assembly-plugin + + + src/main/assembly/liquibase.xml + + + + + make-assembly + package + + single + + + + + + + + \ No newline at end of file diff --git a/application/oneplus-bot-modules/setups/src/main/assembly/liquibase.xml b/application/oneplus-bot-modules/referral/src/main/assembly/liquibase.xml similarity index 100% rename from application/oneplus-bot-modules/setups/src/main/assembly/liquibase.xml rename to application/oneplus-bot-modules/referral/src/main/assembly/liquibase.xml diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralBeanConfig.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralBeanConfig.java new file mode 100644 index 0000000..53c1d38 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralBeanConfig.java @@ -0,0 +1,15 @@ +package dev.sheldan.oneplus.bot.modules.referral.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; + +@Configuration +public class ReferralBeanConfig { + @Bean(value = "referralDelayExecutor") + public ScheduledExecutorService getDelayedExecutor() { + return Executors.newSingleThreadScheduledExecutor(); + } +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeature.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeature.java new file mode 100644 index 0000000..98b420d --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeature.java @@ -0,0 +1,24 @@ +package dev.sheldan.oneplus.bot.modules.referral.config; + +import dev.sheldan.abstracto.core.config.FeatureConfig; +import dev.sheldan.abstracto.core.config.FeatureDefinition; +import dev.sheldan.abstracto.core.config.PostTargetEnum; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; + +@Component +public class ReferralFeature implements FeatureConfig { + + @Override + public FeatureDefinition getFeature() { + return ReferralFeatureDefinition.REFERRAL; + } + + @Override + public List getRequiredPostTargets() { + return Arrays.asList(ReferralPostTarget.REFERRAL); + } + +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeatureDefinition.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeatureDefinition.java new file mode 100644 index 0000000..0761b7e --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralFeatureDefinition.java @@ -0,0 +1,15 @@ +package dev.sheldan.oneplus.bot.modules.referral.config; + +import dev.sheldan.abstracto.core.config.FeatureDefinition; +import lombok.Getter; + +@Getter +public enum ReferralFeatureDefinition implements FeatureDefinition { + REFERRAL("referral"); + + private String key; + + ReferralFeatureDefinition(String key) { + this.key = key; + } +} \ No newline at end of file diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralPostTarget.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralPostTarget.java new file mode 100644 index 0000000..fe16f5d --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralPostTarget.java @@ -0,0 +1,15 @@ +package dev.sheldan.oneplus.bot.modules.referral.config; + +import dev.sheldan.abstracto.core.config.PostTargetEnum; +import lombok.Getter; + +@Getter +public enum ReferralPostTarget implements PostTargetEnum { + REFERRAL("referral"); + + private String key; + + ReferralPostTarget(String key) { + this.key = key; + } +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralProperties.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralProperties.java new file mode 100644 index 0000000..018ba83 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/config/ReferralProperties.java @@ -0,0 +1,10 @@ +package dev.sheldan.oneplus.bot.modules.referral.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource("classpath:referral.properties") +public class ReferralProperties { + +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/listener/ReferralListener.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/listener/ReferralListener.java new file mode 100644 index 0000000..fb113b8 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/listener/ReferralListener.java @@ -0,0 +1,167 @@ +package dev.sheldan.oneplus.bot.modules.referral.listener; + +import dev.sheldan.abstracto.core.config.FeatureDefinition; +import dev.sheldan.abstracto.core.listener.DefaultListenerResult; +import dev.sheldan.abstracto.core.listener.async.jda.AsyncMessageReceivedListener; +import dev.sheldan.abstracto.core.models.ServerUser; +import dev.sheldan.abstracto.core.models.database.PostTarget; +import dev.sheldan.abstracto.core.models.listener.MessageReceivedModel; +import dev.sheldan.abstracto.core.service.ChannelService; +import dev.sheldan.abstracto.core.service.MessageService; +import dev.sheldan.abstracto.core.service.management.PostTargetManagement; +import dev.sheldan.abstracto.core.utils.CompletableFutureList; +import dev.sheldan.oneplus.bot.modules.referral.config.ReferralFeatureDefinition; +import dev.sheldan.oneplus.bot.modules.referral.config.ReferralPostTarget; +import dev.sheldan.oneplus.bot.modules.referral.model.template.Referral; +import dev.sheldan.oneplus.bot.modules.referral.model.template.ReferralPostModel; +import dev.sheldan.oneplus.bot.modules.referral.model.template.ReferralTooRecentModel; +import dev.sheldan.oneplus.bot.modules.referral.service.ReferralServiceBean; +import lombok.extern.slf4j.Slf4j; +import net.dv8tion.jda.api.entities.Message; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.Instant; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; + +@Component +@Slf4j +public class ReferralListener implements AsyncMessageReceivedListener { + + @Autowired + private PostTargetManagement postTargetManagement; + + @Autowired + private MessageService messageService; + + @Autowired + private ReferralServiceBean referralServiceBean; + + @Autowired + private ChannelService channelService; + + @Autowired + private ReferralListener self; + + @Qualifier("referralDelayExecutor") + @Autowired + private ScheduledExecutorService scheduledExecutorService; + + @Value("${oneplus.bot.referral.deleteDelaySeconds}") + private Long deleteDelaySeconds; + + @Value("${oneplus.bot.referral.maxReferralCount}") + private Long maxReferralLinksPerPost; + + private static final String NO_REFERRAL_LINK_FOUND_TEMPLATE_KEY = "referralListener_no_referral_link_found"; + private static final String REFERRAL_POST_TOO_RECENT_TEMPLATE_KEY = "referralListener_too_recent_post"; + private static final String REFERRAL_POST_EMBED_TEMPLATE_KEY = "referralListener_referral_post"; + + @Override + public DefaultListenerResult execute(MessageReceivedModel model) { + Long serverId = model.getServerId(); + Optional referralPostTargetOptional = postTargetManagement.getPostTargetOptional(ReferralPostTarget.REFERRAL, serverId); + if(referralPostTargetOptional.isPresent()) { + PostTarget referralTarget = referralPostTargetOptional.get(); + Message message = model.getMessage(); + if (message.getChannel().getIdLong() == referralTarget.getChannelReference().getId()) { + Long authorId = message.getAuthor().getIdLong(); + if (!message.isFromGuild() || message.isWebhookMessage() || message.getType().isSystem()) { + log.info("Deleting illegal message by user {} in referral channel in server {}.", authorId, serverId); + messageService.deleteMessage(message).exceptionally(deletionErrorConsumer(message)); + return DefaultListenerResult.IGNORED; + } + if(message.getAuthor().isBot()) { + log.debug("Ignoring message from a bot user {} in referral channel in server {}.", authorId, serverId); + return DefaultListenerResult.IGNORED; + } + List foundReferrals = referralServiceBean.getReferralsFromMessage(message); + if(foundReferrals.isEmpty()) { + log.info("Did not find referrals in message {} by user {} in server {} - deleting message.", + message.getIdLong(), authorId, serverId); + deleteAndNotify(message, NO_REFERRAL_LINK_FOUND_TEMPLATE_KEY, new Object()); + return DefaultListenerResult.IGNORED; + } + + log.info("Found {} referral links in message {} by user {} in server {}.", + foundReferrals.size(), message.getIdLong(), authorId, serverId); + + Instant nextReferralDate = referralServiceBean.getNextReferralDate(message.getMember()); + if(nextReferralDate.isAfter(Instant.now())) { + log.info("Referrals in message {} by user {} in server {} was before allowed repost date {} - deleting message.", + message.getIdLong(), authorId, serverId, nextReferralDate); + ReferralTooRecentModel templateModel = ReferralTooRecentModel + .builder() + .nextReferralDate(nextReferralDate) + .build(); + deleteAndNotify(message, REFERRAL_POST_TOO_RECENT_TEMPLATE_KEY, templateModel); + return DefaultListenerResult.PROCESSED; + } + + if(foundReferrals.size() > maxReferralLinksPerPost) { + log.info("More referral links ({}) than allowed ({}) in message {} in server {} by user {}.", + foundReferrals.size(), maxReferralLinksPerPost, message.getIdLong(), serverId, authorId); + foundReferrals = foundReferrals.subList(0, maxReferralLinksPerPost.intValue()); + } + + ReferralPostModel postModel = ReferralPostModel + .builder() + .referrals(foundReferrals) + .postingMember(message.getMember()) + .build(); + ServerUser serverUser = ServerUser.fromMember(message.getMember()); + CompletableFutureList sendFutures = new CompletableFutureList<>(channelService + .sendEmbedTemplateInMessageChannelList(REFERRAL_POST_EMBED_TEMPLATE_KEY, postModel, message.getChannel())); + CompletableFuture deletionFuture = messageService.deleteMessage(message); + CompletableFuture.allOf(sendFutures.getMainFuture(), deletionFuture) + .thenAccept(unused -> self.updateReferralStateInDatabase(serverUser)) + .exceptionally(throwable -> { + log.error("Failed to delete or persist referral message from user {} in server {}.", authorId, serverId, throwable); + return null; + }); + } + } + return DefaultListenerResult.IGNORED; + } + + @Transactional + public void updateReferralStateInDatabase(ServerUser serverUser) { + referralServiceBean.updateDbState(serverUser); + } + + private void deleteAndNotify(Message message, String usedTemplate, Object usedModel) { + CompletableFutureList futures = new CompletableFutureList<>(channelService + .sendEmbedTemplateInMessageChannelList(usedTemplate, usedModel, message.getChannel())); + futures.getMainFuture().thenAccept(unused -> + scheduledExecutorService.schedule(() -> + futures.getObjects().forEach(createdMessage -> messageService.deleteMessage(createdMessage)), + deleteDelaySeconds, TimeUnit.SECONDS)); + futures.getMainFuture().exceptionally(throwable -> { + log.error("Failed to send denial about setups with template {} message {} in channel {} in server {} by {}.", + usedTemplate, message.getIdLong(), message.getChannel().getIdLong(), message.getGuild().getIdLong(), message.getAuthor().getIdLong()); + return null; + }); + messageService.deleteMessage(message).exceptionally(deletionErrorConsumer(message)); + } + + private Function deletionErrorConsumer(Message message) { + return throwable -> { + log.error("Failed to delete setups message {} in channel {} in server {} by {}.", + message.getIdLong(), message.getChannel().getIdLong(), message.getGuild().getIdLong(), message.getAuthor().getIdLong()); + return null; + }; + } + + @Override + public FeatureDefinition getFeature() { + return ReferralFeatureDefinition.REFERRAL; + } +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/ReferralType.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/ReferralType.java new file mode 100644 index 0000000..66df4a0 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/ReferralType.java @@ -0,0 +1,14 @@ +package dev.sheldan.oneplus.bot.modules.referral.model; + +import lombok.Getter; + +@Getter +public enum ReferralType { + SMARTPHONE("smartphone"), ACCESSORIES("accessories"), SMARTPHONE_INDIA("smartphoneIndia"); + + private String key; + + ReferralType(String key) { + this.key = key; + } +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/database/ReferralUserInAServer.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/database/ReferralUserInAServer.java new file mode 100644 index 0000000..af24f99 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/database/ReferralUserInAServer.java @@ -0,0 +1,44 @@ +package dev.sheldan.oneplus.bot.modules.referral.model.database; + +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import lombok.*; + +import javax.persistence.*; +import java.time.Instant; + +@Builder +@Entity +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "referral_user_in_server") +@Getter +@Setter +@EqualsAndHashCode +public class ReferralUserInAServer { + + @Id + @Column(name = "id") + private Long id; + + /** + * The {@link AUserInAServer user} which is represented by this object + */ + @OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE}) + @PrimaryKeyJoinColumn + private AUserInAServer user; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "server_id", nullable = false) + private AServer server; + + @Column(name = "last_referral_post") + private Instant lastReferralPost; + + @Column(name = "created") + private Instant created; + + @Column(name = "updated") + private Instant updated; + +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/Referral.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/Referral.java new file mode 100644 index 0000000..f49957e --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/Referral.java @@ -0,0 +1,15 @@ +package dev.sheldan.oneplus.bot.modules.referral.model.template; + +import dev.sheldan.oneplus.bot.modules.referral.model.ReferralType; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class Referral { + private String referralLink; + private String referralIdentifier; + private ReferralType type; +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralPostModel.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralPostModel.java new file mode 100644 index 0000000..f5f18dd --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralPostModel.java @@ -0,0 +1,16 @@ +package dev.sheldan.oneplus.bot.modules.referral.model.template; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; +import net.dv8tion.jda.api.entities.Member; + +import java.util.List; + +@Getter +@Setter +@Builder +public class ReferralPostModel { + private Member postingMember; + private List referrals; +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralTooRecentModel.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralTooRecentModel.java new file mode 100644 index 0000000..654e0d4 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/model/template/ReferralTooRecentModel.java @@ -0,0 +1,14 @@ +package dev.sheldan.oneplus.bot.modules.referral.model.template; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +import java.time.Instant; + +@Getter +@Setter +@Builder +public class ReferralTooRecentModel { + private Instant nextReferralDate; +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/repository/ReferralUserInAServerRepository.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/repository/ReferralUserInAServerRepository.java new file mode 100644 index 0000000..4e4a490 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/repository/ReferralUserInAServerRepository.java @@ -0,0 +1,12 @@ +package dev.sheldan.oneplus.bot.modules.referral.repository; + +import dev.sheldan.oneplus.bot.modules.referral.model.database.ReferralUserInAServer; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface ReferralUserInAServerRepository extends JpaRepository { + Optional findByServer_IdAndUser_UserReference_Id(Long serverId, Long userId); +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/ReferralServiceBean.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/ReferralServiceBean.java new file mode 100644 index 0000000..1dbc4ff --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/ReferralServiceBean.java @@ -0,0 +1,77 @@ +package dev.sheldan.oneplus.bot.modules.referral.service; + +import dev.sheldan.abstracto.core.models.ServerUser; +import dev.sheldan.oneplus.bot.modules.referral.model.ReferralType; +import dev.sheldan.oneplus.bot.modules.referral.model.database.ReferralUserInAServer; +import dev.sheldan.oneplus.bot.modules.referral.model.template.Referral; +import dev.sheldan.oneplus.bot.modules.referral.service.management.ReferralUserManagementServiceBean; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Message; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Component +public class ReferralServiceBean { + + @Value("${oneplus.bot.referral.referralRepostDays}") + private Long repostDurationDays; + + @Autowired + private ReferralUserManagementServiceBean referralUserManagementServiceBean; + + private final Pattern referralPattern = Pattern.compile("(?https?://(?:www\\.)?oneplus\\.(?:[a-z]{1,63})[^\\s]*invite(?:#(?[^\\s]+)|.+=([^\\s&]+)))"); + + public List getReferralsFromMessage(Message message) { + List referrals = new ArrayList<>(); + Matcher matcher = referralPattern.matcher(message.getContentRaw()); + while(matcher.find()) { + String fullUrl = matcher.group("whole"); + String referralIdentifier = matcher.group("identifier"); + Referral referral = Referral + .builder() + .referralLink(fullUrl) + .type(getType(referralIdentifier, fullUrl)) + .referralIdentifier(referralIdentifier) + .build(); + referrals.add(referral); + } + return referrals; + } + + private ReferralType getType(String identifier, String fullUrl) { + if(identifier.length() < 20) { + return ReferralType.SMARTPHONE; + } else if(fullUrl.contains(".in")) { + return ReferralType.SMARTPHONE_INDIA; + } else { + return ReferralType.ACCESSORIES; + } + } + + public void updateDbState(ServerUser serverUser) { + Optional userOptional = referralUserManagementServiceBean.getReferralFromDb(serverUser); + if(userOptional.isPresent()) { + userOptional.get().setLastReferralPost(Instant.now()); + } else { + referralUserManagementServiceBean.createReferralUser(serverUser); + } + } + + public Instant getNextReferralDate(Member member) { + ServerUser serverUser = ServerUser.fromMember(member); + Optional userOptional = referralUserManagementServiceBean.getReferralFromDb(serverUser); + return userOptional.map(referralUserInAServer -> referralUserInAServer + .getLastReferralPost() + .plus(repostDurationDays, ChronoUnit.DAYS)) + .orElse(Instant.now()); + } +} diff --git a/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/management/ReferralUserManagementServiceBean.java b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/management/ReferralUserManagementServiceBean.java new file mode 100644 index 0000000..cf30b1c --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/java/dev/sheldan/oneplus/bot/modules/referral/service/management/ReferralUserManagementServiceBean.java @@ -0,0 +1,38 @@ +package dev.sheldan.oneplus.bot.modules.referral.service.management; + +import dev.sheldan.abstracto.core.models.ServerUser; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; +import dev.sheldan.oneplus.bot.modules.referral.model.database.ReferralUserInAServer; +import dev.sheldan.oneplus.bot.modules.referral.repository.ReferralUserInAServerRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.time.Instant; +import java.util.Optional; + +@Component +public class ReferralUserManagementServiceBean { + + @Autowired + private ReferralUserInAServerRepository repository; + + @Autowired + private UserInServerManagementService userInServerManagementService; + + public Optional getReferralFromDb(ServerUser serverUser) { + return repository.findByServer_IdAndUser_UserReference_Id(serverUser.getServerId(), serverUser.getUserId()); + } + + public ReferralUserInAServer createReferralUser(ServerUser serverUser) { + AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(serverUser); + ReferralUserInAServer user = ReferralUserInAServer + .builder() + .user(userInAServer) + .id(userInAServer.getUserInServerId()) + .lastReferralPost(Instant.now()) + .server(userInAServer.getServerReference()) + .build(); + return repository.save(user); + } +} diff --git a/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/collection.xml b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/collection.xml new file mode 100644 index 0000000..d0415fc --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/collection.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/application/oneplus-bot-modules/setups/src/main/resources/migrations/setups-changeLog.xml b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/data.xml similarity index 87% rename from application/oneplus-bot-modules/setups/src/main/resources/migrations/setups-changeLog.xml rename to application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/data.xml index 256d4dc..c3e39a0 100644 --- a/application/oneplus-bot-modules/setups/src/main/resources/migrations/setups-changeLog.xml +++ b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/data.xml @@ -6,5 +6,5 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog dbchangelog.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext dbchangelog.xsd http://www.liquibase.org/xml/ns/pro dbchangelog.xsd" > - + \ No newline at end of file diff --git a/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/feature.xml b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/feature.xml new file mode 100644 index 0000000..02b7077 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-seedData/feature.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/referral_user_in_server.xml b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/referral_user_in_server.xml new file mode 100644 index 0000000..fe118b0 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/referral_user_in_server.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + DROP TRIGGER IF EXISTS referral_user_in_server_update_trigger ON referral_user_in_server; + CREATE TRIGGER referral_user_in_server_update_trigger BEFORE UPDATE ON referral_user_in_server FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure(); + + + DROP TRIGGER IF EXISTS referral_user_in_server_insert_trigger ON referral_user_in_server; + CREATE TRIGGER referral_user_in_server_insert_trigger BEFORE INSERT ON referral_user_in_server FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure(); + + + + \ No newline at end of file diff --git a/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/tables.xml b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/tables.xml new file mode 100644 index 0000000..f240e6f --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/resources/migrations/1.3.11-referral/referral-tables/tables.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/application/oneplus-bot-modules/setups/src/main/resources/migrations/dbchangelog.xsd b/application/oneplus-bot-modules/referral/src/main/resources/migrations/dbchangelog.xsd similarity index 100% rename from application/oneplus-bot-modules/setups/src/main/resources/migrations/dbchangelog.xsd rename to application/oneplus-bot-modules/referral/src/main/resources/migrations/dbchangelog.xsd diff --git a/application/oneplus-bot-modules/referral/src/main/resources/migrations/referral-changeLog.xml b/application/oneplus-bot-modules/referral/src/main/resources/migrations/referral-changeLog.xml new file mode 100644 index 0000000..9e0313c --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/resources/migrations/referral-changeLog.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/application/oneplus-bot-modules/referral/src/main/resources/referral.properties b/application/oneplus-bot-modules/referral/src/main/resources/referral.properties new file mode 100644 index 0000000..6a89710 --- /dev/null +++ b/application/oneplus-bot-modules/referral/src/main/resources/referral.properties @@ -0,0 +1,8 @@ +abstracto.postTargets.referral.name=referral + +abstracto.featureFlags.referral.featureName=referral +abstracto.featureFlags.referral.enabled=false + +oneplus.bot.referral.maxReferralCount=2 +oneplus.bot.referral.deleteDelaySeconds=7 +oneplus.bot.referral.referralRepostDays=14 \ No newline at end of file diff --git a/application/oneplus-bot-modules/setups/pom.xml b/application/oneplus-bot-modules/setup/pom.xml similarity index 97% rename from application/oneplus-bot-modules/setups/pom.xml rename to application/oneplus-bot-modules/setup/pom.xml index f2167f2..182d861 100644 --- a/application/oneplus-bot-modules/setups/pom.xml +++ b/application/oneplus-bot-modules/setup/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - setups + setup diff --git a/application/oneplus-bot-modules/setup/src/main/assembly/liquibase.xml b/application/oneplus-bot-modules/setup/src/main/assembly/liquibase.xml new file mode 100644 index 0000000..8b4774f --- /dev/null +++ b/application/oneplus-bot-modules/setup/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-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsBeanConfig.java b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupBeanConfig.java similarity index 73% rename from application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsBeanConfig.java rename to application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupBeanConfig.java index 51f3572..5c45b24 100644 --- a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsBeanConfig.java +++ b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupBeanConfig.java @@ -1,4 +1,4 @@ -package dev.sheldan.oneplus.bot.modules.setups.config; +package dev.sheldan.oneplus.bot.modules.setup.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -7,8 +7,8 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @Configuration -public class SetupsBeanConfig { - @Bean(value = "setupsDelayedExecutor") +public class SetupBeanConfig { + @Bean(value = "setupDelayedExecutor") public ScheduledExecutorService getDelayedExecutor() { return Executors.newSingleThreadScheduledExecutor(); } diff --git a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeature.java b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureConfig.java similarity index 57% rename from application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeature.java rename to application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureConfig.java index 0ce8eb6..14ef4a3 100644 --- a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeature.java +++ b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureConfig.java @@ -1,4 +1,4 @@ -package dev.sheldan.oneplus.bot.modules.setups.config; +package dev.sheldan.oneplus.bot.modules.setup.config; import dev.sheldan.abstracto.core.config.FeatureConfig; import dev.sheldan.abstracto.core.config.FeatureDefinition; @@ -8,23 +8,23 @@ import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; -import static dev.sheldan.oneplus.bot.modules.setups.listener.SetupsListener.SETUPS_UPVOTE_EMOTE_KEY; +import static dev.sheldan.oneplus.bot.modules.setup.listener.SetupListener.SETUP_UPVOTE_EMOTE_KEY; @Component -public class SetupsFeature implements FeatureConfig { +public class SetupFeatureConfig implements FeatureConfig { @Override public FeatureDefinition getFeature() { - return SetupsFeatureDefinition.SETUPS; + return SetupFeatureDefinition.SETUP; } @Override public List getRequiredPostTargets() { - return Arrays.asList(SetupsPostTarget.SETUPS); + return Arrays.asList(SetupPostTarget.SETUP); } @Override public List getRequiredEmotes() { - return Arrays.asList(SETUPS_UPVOTE_EMOTE_KEY); + return Arrays.asList(SETUP_UPVOTE_EMOTE_KEY); } } diff --git a/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureDefinition.java b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureDefinition.java new file mode 100644 index 0000000..6eb3606 --- /dev/null +++ b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupFeatureDefinition.java @@ -0,0 +1,15 @@ +package dev.sheldan.oneplus.bot.modules.setup.config; + +import dev.sheldan.abstracto.core.config.FeatureDefinition; +import lombok.Getter; + +@Getter +public enum SetupFeatureDefinition implements FeatureDefinition { + SETUP("setup"); + + private String key; + + SetupFeatureDefinition(String key) { + this.key = key; + } +} \ No newline at end of file diff --git a/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupPostTarget.java b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupPostTarget.java new file mode 100644 index 0000000..e120ebc --- /dev/null +++ b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupPostTarget.java @@ -0,0 +1,15 @@ +package dev.sheldan.oneplus.bot.modules.setup.config; + +import dev.sheldan.abstracto.core.config.PostTargetEnum; +import lombok.Getter; + +@Getter +public enum SetupPostTarget implements PostTargetEnum { + SETUP("setup"); + + private String key; + + SetupPostTarget(String key) { + this.key = key; + } +} diff --git a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsProperties.java b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupProperties.java similarity index 51% rename from application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsProperties.java rename to application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupProperties.java index d12bb09..0864bfd 100644 --- a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsProperties.java +++ b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/config/SetupProperties.java @@ -1,10 +1,10 @@ -package dev.sheldan.oneplus.bot.modules.setups.config; +package dev.sheldan.oneplus.bot.modules.setup.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Configuration -@PropertySource("classpath:setups.properties") -public class SetupsProperties { +@PropertySource("classpath:setup.properties") +public class SetupProperties { } diff --git a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/listener/SetupsListener.java b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/listener/SetupListener.java similarity index 62% rename from application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/listener/SetupsListener.java rename to application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/listener/SetupListener.java index ee94d9f..aa90ed9 100644 --- a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/listener/SetupsListener.java +++ b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/listener/SetupListener.java @@ -1,4 +1,4 @@ -package dev.sheldan.oneplus.bot.modules.setups.listener; +package dev.sheldan.oneplus.bot.modules.setup.listener; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.listener.DefaultListenerResult; @@ -8,9 +8,9 @@ import dev.sheldan.abstracto.core.models.listener.MessageReceivedModel; import dev.sheldan.abstracto.core.service.MessageService; import dev.sheldan.abstracto.core.service.ReactionService; import dev.sheldan.abstracto.core.service.management.PostTargetManagement; -import dev.sheldan.oneplus.bot.modules.setups.config.SetupsFeatureDefinition; -import dev.sheldan.oneplus.bot.modules.setups.config.SetupsPostTarget; -import dev.sheldan.oneplus.bot.modules.setups.service.SetupsService; +import dev.sheldan.oneplus.bot.modules.setup.config.SetupFeatureDefinition; +import dev.sheldan.oneplus.bot.modules.setup.config.SetupPostTarget; +import dev.sheldan.oneplus.bot.modules.setup.service.SetupServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Message; import org.springframework.beans.factory.annotation.Autowired; @@ -24,19 +24,19 @@ import java.util.concurrent.TimeUnit; @Component @Slf4j -public class SetupsListener implements AsyncMessageReceivedListener { +public class SetupListener implements AsyncMessageReceivedListener { @Autowired private PostTargetManagement postTargetManagement; @Autowired - private SetupsService setupsService; + private SetupServiceBean setupServiceBean; - @Qualifier("setupsDelayedExecutor") + @Qualifier("setupDelayedExecutor") @Autowired private ScheduledExecutorService scheduledExecutorService; - @Value("${abstracto.setups.deletionDelaySeconds}") + @Value("${oneplus.bot.setup.deletionDelaySeconds}") private Long deletionDelay; @Autowired @@ -45,43 +45,47 @@ public class SetupsListener implements AsyncMessageReceivedListener { @Autowired private ReactionService reactionService; - public static final String SETUPS_UPVOTE_EMOTE_KEY = "setupsUpvote"; + public static final String SETUP_UPVOTE_EMOTE_KEY = "setupUpvote"; @Override public DefaultListenerResult execute(MessageReceivedModel model) { - Optional setupsPostTargetOptional = postTargetManagement.getPostTargetOptional(SetupsPostTarget.SETUPS, model.getServerId()); - if(setupsPostTargetOptional.isPresent()) { - PostTarget setupsTarget = setupsPostTargetOptional.get(); + Long serverId = model.getServerId(); + Optional setupPostTargetOptional = postTargetManagement.getPostTargetOptional(SetupPostTarget.SETUP, serverId); + if(setupPostTargetOptional.isPresent()) { + PostTarget setupTarget = setupPostTargetOptional.get(); Message originalMessage = model.getMessage(); - if(originalMessage.getChannel().getIdLong() == setupsTarget.getChannelReference().getId()) { - Long serverId = model.getServerId(); - boolean currentlyInvalid = setupsService.currentlyInvalid(originalMessage); + if(originalMessage.getChannel().getIdLong() == setupTarget.getChannelReference().getId()) { + if(!originalMessage.isFromGuild() || originalMessage.isWebhookMessage() || originalMessage.getType().isSystem()) { + messageService.deleteMessage(originalMessage); + return DefaultListenerResult.IGNORED; + } + boolean currentlyInvalid = setupServiceBean.currentlyInvalid(originalMessage); if(currentlyInvalid) { - if(setupsService.mightContainEmbed(originalMessage)) { + if(setupServiceBean.mightContainEmbed(originalMessage)) { log.info("Setup message did not contain embeds not attachments, but a link - waiting for embeds on message {}" + " in channel {} in guild {} by user {}.", originalMessage.getIdLong(), originalMessage.getChannel().getIdLong(), originalMessage.getGuild().getIdLong(), originalMessage.getAuthor().getIdLong()); scheduledExecutorService.schedule(() -> { messageService.loadMessage(originalMessage).thenAccept(loadedMessage -> { - if(setupsService.currentlyInvalid(loadedMessage)) { - log.info("Message did not contain attachments nor embeds after a delay - deleting setups message {}.", loadedMessage.getIdLong()); + if(setupServiceBean.currentlyInvalid(loadedMessage)) { + log.info("Message did not contain attachments nor embeds after a delay - deleting setup message {}.", loadedMessage.getIdLong()); messageService.deleteMessage(loadedMessage); } else { log.info("Message contained embeds/attachments after a delay - message was accepted {}.", loadedMessage.getIdLong()); - reactionService.addReactionToMessage(SETUPS_UPVOTE_EMOTE_KEY, serverId, loadedMessage); + reactionService.addReactionToMessage(SETUP_UPVOTE_EMOTE_KEY, serverId, loadedMessage); } }); }, deletionDelay, TimeUnit.SECONDS); } else { log.info("Did not find any attachments nor embeds and no link to lead to any embeds - deleting setup message {} in channel {} in server {}" + - "by user {} for setups.", originalMessage.getIdLong(), originalMessage.getChannel().getIdLong(), originalMessage.getGuild().getIdLong(), + "by user {} for setup.", originalMessage.getIdLong(), originalMessage.getChannel().getIdLong(), originalMessage.getGuild().getIdLong(), originalMessage.getAuthor().getIdLong()); messageService.deleteMessage(originalMessage); } } else { - log.info("Accepting setups message {} in channel {} in guild {} from user {}.", originalMessage.getIdLong(), + log.info("Accepting setup message {} in channel {} in guild {} from user {}.", originalMessage.getIdLong(), originalMessage.getChannel().getIdLong(), originalMessage.getGuild().getIdLong(), originalMessage.getAuthor().getIdLong()); - reactionService.addReactionToMessage(SETUPS_UPVOTE_EMOTE_KEY, serverId, originalMessage); + reactionService.addReactionToMessage(SETUP_UPVOTE_EMOTE_KEY, serverId, originalMessage); } } } @@ -90,6 +94,6 @@ public class SetupsListener implements AsyncMessageReceivedListener { @Override public FeatureDefinition getFeature() { - return SetupsFeatureDefinition.SETUPS; + return SetupFeatureDefinition.SETUP; } } diff --git a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/service/SetupsService.java b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/service/SetupServiceBean.java similarity index 92% rename from application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/service/SetupsService.java rename to application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/service/SetupServiceBean.java index 8a40115..e8d1878 100644 --- a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/service/SetupsService.java +++ b/application/oneplus-bot-modules/setup/src/main/java/dev/sheldan/oneplus/bot/modules/setup/service/SetupServiceBean.java @@ -1,4 +1,4 @@ -package dev.sheldan.oneplus.bot.modules.setups.service; +package dev.sheldan.oneplus.bot.modules.setup.service; import net.dv8tion.jda.api.entities.EmbedType; import net.dv8tion.jda.api.entities.Message; @@ -8,7 +8,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; @Component -public class SetupsService { +public class SetupServiceBean { private static final Pattern URL_REGEX = Pattern.compile("((https?|ftp)://|(www|ftp)\\.)?[a-z0-9-]+(\\.[a-z0-9-]+)+([/?].*)?"); diff --git a/application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/collection.xml b/application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/collection.xml similarity index 88% rename from application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/collection.xml rename to application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/collection.xml index bc9fce9..d11616f 100644 --- a/application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/collection.xml +++ b/application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/collection.xml @@ -6,5 +6,5 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog dbchangelog.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext dbchangelog.xsd http://www.liquibase.org/xml/ns/pro dbchangelog.xsd" > - + \ No newline at end of file diff --git a/application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/data.xml b/application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/data.xml similarity index 100% rename from application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/data.xml rename to application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/data.xml diff --git a/application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/default_emote.xml b/application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/default_emote.xml similarity index 85% rename from application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/default_emote.xml rename to application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/default_emote.xml index 5b9eec3..dfe6435 100644 --- a/application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/default_emote.xml +++ b/application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/default_emote.xml @@ -6,9 +6,9 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog dbchangelog.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext dbchangelog.xsd http://www.liquibase.org/xml/ns/pro dbchangelog.xsd" > - + - + diff --git a/application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/feature.xml b/application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/feature.xml similarity index 85% rename from application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/feature.xml rename to application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/feature.xml index a234f83..9be03ec 100644 --- a/application/oneplus-bot-modules/setups/src/main/resources/migrations/1.3.11-setups/setups-seedData/feature.xml +++ b/application/oneplus-bot-modules/setup/src/main/resources/migrations/1.3.11-setup/setup-seedData/feature.xml @@ -6,9 +6,9 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog dbchangelog.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext dbchangelog.xsd http://www.liquibase.org/xml/ns/pro dbchangelog.xsd" > - + - + \ No newline at end of file diff --git a/application/oneplus-bot-modules/setup/src/main/resources/migrations/dbchangelog.xsd b/application/oneplus-bot-modules/setup/src/main/resources/migrations/dbchangelog.xsd new file mode 100644 index 0000000..83483a5 --- /dev/null +++ b/application/oneplus-bot-modules/setup/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-modules/setup/src/main/resources/migrations/setup-changeLog.xml b/application/oneplus-bot-modules/setup/src/main/resources/migrations/setup-changeLog.xml new file mode 100644 index 0000000..3e538ea --- /dev/null +++ b/application/oneplus-bot-modules/setup/src/main/resources/migrations/setup-changeLog.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/application/oneplus-bot-modules/setup/src/main/resources/setup.properties b/application/oneplus-bot-modules/setup/src/main/resources/setup.properties new file mode 100644 index 0000000..2ffd5d7 --- /dev/null +++ b/application/oneplus-bot-modules/setup/src/main/resources/setup.properties @@ -0,0 +1,6 @@ +abstracto.postTargets.setup.name=setup + +abstracto.featureFlags.setup.featureName=setup +abstracto.featureFlags.setup.enabled=false + +oneplus.bot.setup.deletionDelaySeconds=3 \ No newline at end of file diff --git a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeatureDefinition.java b/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeatureDefinition.java deleted file mode 100644 index 6f07831..0000000 --- a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsFeatureDefinition.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.sheldan.oneplus.bot.modules.setups.config; - -import dev.sheldan.abstracto.core.config.FeatureDefinition; -import lombok.Getter; - -@Getter -public enum SetupsFeatureDefinition implements FeatureDefinition { - SETUPS("setups"); - - private String key; - - SetupsFeatureDefinition(String key) { - this.key = key; - } -} \ No newline at end of file diff --git a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsPostTarget.java b/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsPostTarget.java deleted file mode 100644 index 300dde3..0000000 --- a/application/oneplus-bot-modules/setups/src/main/java/dev/sheldan/oneplus/bot/modules/setups/config/SetupsPostTarget.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.sheldan.oneplus.bot.modules.setups.config; - -import dev.sheldan.abstracto.core.config.PostTargetEnum; -import lombok.Getter; - -@Getter -public enum SetupsPostTarget implements PostTargetEnum { - SETUPS("setups"); - - private String key; - - SetupsPostTarget(String key) { - this.key = key; - } -} diff --git a/application/oneplus-bot-modules/setups/src/main/resources/setups.properties b/application/oneplus-bot-modules/setups/src/main/resources/setups.properties deleted file mode 100644 index 557fee2..0000000 --- a/application/oneplus-bot-modules/setups/src/main/resources/setups.properties +++ /dev/null @@ -1,6 +0,0 @@ -abstracto.postTargets.setups.name=setups - -abstracto.featureFlags.setups.featureName=setups -abstracto.featureFlags.setups.enabled=false - -abstracto.setups.deletionDelaySeconds=3 \ No newline at end of file diff --git a/deployment/image-packaging/pom.xml b/deployment/image-packaging/pom.xml index 1907c8e..3a582e4 100644 --- a/deployment/image-packaging/pom.xml +++ b/deployment/image-packaging/pom.xml @@ -159,6 +159,16 @@ news.zip + + dev.sheldan.oneplus.bot.templates.modules + referral-templates + ${project.version} + zip + true + ${file.basedir}/deployment/template-artifacts/ + referral.zip + + dev.sheldan.abstracto-templates.translations @@ -268,7 +278,7 @@ dev.sheldan.oneplus.bot.templates.translations - starboard-custom + starboard-custom-translations ${project.version} zip true @@ -289,12 +299,22 @@ dev.sheldan.oneplus.bot.templates.translations - setups-translations + setup-translations ${project.version} zip true ${file.basedir}/deployment/translation-artifacts/ - setups.zip + setup.zip + + + + dev.sheldan.oneplus.bot.templates.translations + referral-translations + ${project.version} + zip + true + ${file.basedir}/deployment/translation-artifacts/ + referral.zip @@ -456,13 +476,24 @@ dev.sheldan.oneplus.bot.application.modules - setups + setup ${project.version} liquibase zip true ${file.basedir}/deployment/liquibase-artifacts/ - setups.zip + setup.zip + + + + dev.sheldan.oneplus.bot.application.modules + referral + ${project.version} + liquibase + zip + true + ${file.basedir}/deployment/liquibase-artifacts/ + referral.zip 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 8b5e5e5..50a8c6e 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 @@ -3,11 +3,11 @@ "suggestion", "invite-filter", "starboard-custom", "overrides-templates-webservices", "overrides-templates-core", "overrides-templates-logging", - "news"], + "news", "referral"], "translation_artifacts": ["utility", "core", "entertainment", "starboard", "link-embed", "webservices", "suggestion", "remind", "logging", "invite-filter", "starboard-custom", - "news", "setups"], + "news", "setup", "referral"], "liquibase_artifacts": [ { "zip": "scheduling", "file": "scheduling-changeLog.xml" }, { "zip": "core", "file": "core-changeLog.xml" }, @@ -20,7 +20,8 @@ { "zip": "logging", "file": "logging-changeLog.xml"}, { "zip": "suggestion", "file": "suggestion-changeLog.xml"}, { "zip": "invite-filter", "file": "inviteFilter-changeLog.xml"}, - { "zip": "setups", "file": "setups-changeLog.xml"}, + { "zip": "setup", "file": "setup-changeLog.xml"}, + { "zip": "referral", "file": "referral-changeLog.xml"}, { "zip": "starboard-custom", "file": "starboard-custom-changeLog.xml"}, { "zip": "news", "file": "news-changeLog.xml"} ] diff --git a/pom.xml b/pom.xml index c857e8d..311d6dd 100644 --- a/pom.xml +++ b/pom.xml @@ -19,8 +19,8 @@ 1.8 - 1.2.10 - 1.2.6 + 1.2.11 + 1.2.7 diff --git a/templates/oneplus-bot-modules-templates/pom.xml b/templates/oneplus-bot-modules-templates/pom.xml index baa0e9c..46feb74 100644 --- a/templates/oneplus-bot-modules-templates/pom.xml +++ b/templates/oneplus-bot-modules-templates/pom.xml @@ -12,8 +12,9 @@ pom 1.3.11-SNAPSHOT - starboard-custom + starboard-custom-templates news-templates + referral-templates diff --git a/templates/oneplus-bot-modules-templates/referral-templates/pom.xml b/templates/oneplus-bot-modules-templates/referral-templates/pom.xml new file mode 100644 index 0000000..f0181e4 --- /dev/null +++ b/templates/oneplus-bot-modules-templates/referral-templates/pom.xml @@ -0,0 +1,38 @@ + + + + oneplus-bot-modules-templates + dev.sheldan.oneplus.bot.templates.modules + 1.3.11-SNAPSHOT + + 4.0.0 + + referral-templates + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + referral-templates-${project.version} + false + + src/main/assembly/assembly.xml + + + + + + + + + \ No newline at end of file diff --git a/templates/oneplus-bot-modules-templates/starboard-custom/src/main/assembly/assembly.xml b/templates/oneplus-bot-modules-templates/referral-templates/src/main/assembly/assembly.xml similarity index 100% rename from templates/oneplus-bot-modules-templates/starboard-custom/src/main/assembly/assembly.xml rename to templates/oneplus-bot-modules-templates/referral-templates/src/main/assembly/assembly.xml diff --git a/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_no_referral_link_found_embed_en_US.ftl b/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_no_referral_link_found_embed_en_US.ftl new file mode 100644 index 0000000..a8635d8 --- /dev/null +++ b/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_no_referral_link_found_embed_en_US.ftl @@ -0,0 +1,3 @@ +{ + "additionalMessage": "<@safe_include "no_referral_link_found"/>" +} \ No newline at end of file diff --git a/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_referral_post_embed_en_US.ftl b/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_referral_post_embed_en_US.ftl new file mode 100644 index 0000000..602dc6d --- /dev/null +++ b/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_referral_post_embed_en_US.ftl @@ -0,0 +1,17 @@ +{ + <#include "abstracto_color">, + <#include "member_author"> + <#assign member=postingMember> + <@member_author member=member/>, + <#include "full_member_info"> + "description": "<@safe_include "referralListener_referral_post_description"/>", + "fields": [ + <#list referrals as referral><#assign referral=referral> + { + "name": "<@safe_include "referral_link_type_${referral.type.key}"/>", + "value": "[${referral.referralIdentifier?json_string}](${referral.referralLink?json_string})" + } + <#sep>, + + ] +} \ No newline at end of file diff --git a/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_too_recent_post_embed_en_US.ftl b/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_too_recent_post_embed_en_US.ftl new file mode 100644 index 0000000..5de2510 --- /dev/null +++ b/templates/oneplus-bot-modules-templates/referral-templates/src/main/resources/en_US/listener/referralListener/referralListener_too_recent_post_embed_en_US.ftl @@ -0,0 +1,5 @@ +{ + <#include "abstracto_color">, + "description": "<@safe_include "too_recent_referral_post"/>", + "timeStamp": "${nextReferralDate}" +} \ No newline at end of file diff --git a/templates/oneplus-bot-modules-templates/starboard-custom/pom.xml b/templates/oneplus-bot-modules-templates/starboard-custom-templates/pom.xml similarity index 100% rename from templates/oneplus-bot-modules-templates/starboard-custom/pom.xml rename to templates/oneplus-bot-modules-templates/starboard-custom-templates/pom.xml diff --git a/templates/translations/setups-translations/src/main/assembly/assembly.xml b/templates/oneplus-bot-modules-templates/starboard-custom-templates/src/main/assembly/assembly.xml similarity index 100% rename from templates/translations/setups-translations/src/main/assembly/assembly.xml rename to templates/oneplus-bot-modules-templates/starboard-custom-templates/src/main/assembly/assembly.xml diff --git a/templates/oneplus-bot-modules-templates/starboard-custom/src/main/resources/en_US/listener/starboardNotification/starboard_post_created_notification_embed_en_US.ftl b/templates/oneplus-bot-modules-templates/starboard-custom-templates/src/main/resources/en_US/listener/starboardNotification/starboard_post_created_notification_embed_en_US.ftl similarity index 100% rename from templates/oneplus-bot-modules-templates/starboard-custom/src/main/resources/en_US/listener/starboardNotification/starboard_post_created_notification_embed_en_US.ftl rename to templates/oneplus-bot-modules-templates/starboard-custom-templates/src/main/resources/en_US/listener/starboardNotification/starboard_post_created_notification_embed_en_US.ftl diff --git a/templates/oneplus-bot-modules-templates/starboard-custom/src/main/resources/en_US/listener/starboardNotification/starboard_post_deleted_notification_embed_en_US.ftl b/templates/oneplus-bot-modules-templates/starboard-custom-templates/src/main/resources/en_US/listener/starboardNotification/starboard_post_deleted_notification_embed_en_US.ftl similarity index 100% rename from templates/oneplus-bot-modules-templates/starboard-custom/src/main/resources/en_US/listener/starboardNotification/starboard_post_deleted_notification_embed_en_US.ftl rename to templates/oneplus-bot-modules-templates/starboard-custom-templates/src/main/resources/en_US/listener/starboardNotification/starboard_post_deleted_notification_embed_en_US.ftl diff --git a/templates/translations/pom.xml b/templates/translations/pom.xml index 5a06b36..f5bc131 100644 --- a/templates/translations/pom.xml +++ b/templates/translations/pom.xml @@ -13,6 +13,7 @@ starboard-custom-translations news-translations - setups-translations + setup-translations + referral-translations \ No newline at end of file diff --git a/templates/translations/referral-translations/pom.xml b/templates/translations/referral-translations/pom.xml new file mode 100644 index 0000000..d596c20 --- /dev/null +++ b/templates/translations/referral-translations/pom.xml @@ -0,0 +1,39 @@ + + + + translations + dev.sheldan.oneplus.bot.templates.translations + 1.3.11-SNAPSHOT + + 4.0.0 + + referral-translations + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + referral-translations-${project.version} + false + + src/main/assembly/assembly.xml + + + + + + + + + + \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/assembly/assembly.xml b/templates/translations/referral-translations/src/main/assembly/assembly.xml new file mode 100644 index 0000000..aca1e51 --- /dev/null +++ b/templates/translations/referral-translations/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/referral-translations/src/main/resources/en_US/config/feature_referral_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/config/feature_referral_en_US.ftl new file mode 100644 index 0000000..16f778a --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/config/feature_referral_en_US.ftl @@ -0,0 +1 @@ +Referral \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/resources/en_US/config/feature_setup_posttarget_referral_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/config/feature_setup_posttarget_referral_en_US.ftl new file mode 100644 index 0000000..85f7c99 --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/config/feature_setup_posttarget_referral_en_US.ftl @@ -0,0 +1 @@ +The channel in which the referral codes should be handled in. Currently: ${currentTarget} \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_accessories_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_accessories_en_US.ftl new file mode 100644 index 0000000..5413be1 --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_accessories_en_US.ftl @@ -0,0 +1 @@ +Accessories \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphoneIndia_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphoneIndia_en_US.ftl new file mode 100644 index 0000000..ce721f4 --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphoneIndia_en_US.ftl @@ -0,0 +1 @@ +Smartphone (India) \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphone_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphone_en_US.ftl new file mode 100644 index 0000000..73463dc --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/config/referral_link_type_smartphone_en_US.ftl @@ -0,0 +1 @@ +Smartphone \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/resources/en_US/listener/no_referral_link_found_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/listener/no_referral_link_found_en_US.ftl new file mode 100644 index 0000000..a5652e7 --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/listener/no_referral_link_found_en_US.ftl @@ -0,0 +1 @@ +No referral link found. \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/resources/en_US/listener/referralListener_referral_post_description_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/listener/referralListener_referral_post_description_en_US.ftl new file mode 100644 index 0000000..807ba33 --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/listener/referralListener_referral_post_description_en_US.ftl @@ -0,0 +1 @@ +Sent by <@full_member_info member=member/> \ No newline at end of file diff --git a/templates/translations/referral-translations/src/main/resources/en_US/listener/too_recent_referral_post_en_US.ftl b/templates/translations/referral-translations/src/main/resources/en_US/listener/too_recent_referral_post_en_US.ftl new file mode 100644 index 0000000..63f6d72 --- /dev/null +++ b/templates/translations/referral-translations/src/main/resources/en_US/listener/too_recent_referral_post_en_US.ftl @@ -0,0 +1 @@ +The last referral post was too recent. See the footer for the next time you can retry \ No newline at end of file diff --git a/templates/translations/setups-translations/pom.xml b/templates/translations/setup-translations/pom.xml similarity index 90% rename from templates/translations/setups-translations/pom.xml rename to templates/translations/setup-translations/pom.xml index 9f46702..8e0586d 100644 --- a/templates/translations/setups-translations/pom.xml +++ b/templates/translations/setup-translations/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - setups-translations + setup-translations @@ -23,7 +23,7 @@ single - setups-translations-${project.version} + setup-translations-${project.version} false src/main/assembly/assembly.xml diff --git a/templates/translations/setup-translations/src/main/assembly/assembly.xml b/templates/translations/setup-translations/src/main/assembly/assembly.xml new file mode 100644 index 0000000..aca1e51 --- /dev/null +++ b/templates/translations/setup-translations/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/setup-translations/src/main/resources/en_US/config/feature_setup_en_US.ftl b/templates/translations/setup-translations/src/main/resources/en_US/config/feature_setup_en_US.ftl new file mode 100644 index 0000000..54fee71 --- /dev/null +++ b/templates/translations/setup-translations/src/main/resources/en_US/config/feature_setup_en_US.ftl @@ -0,0 +1 @@ +Setup \ No newline at end of file diff --git a/templates/translations/setups-translations/src/main/resources/en_US/config/feature_setup_posttarget_setups_en_US.ftl b/templates/translations/setup-translations/src/main/resources/en_US/config/feature_setup_posttarget_setup_en_US.ftl similarity index 100% rename from templates/translations/setups-translations/src/main/resources/en_US/config/feature_setup_posttarget_setups_en_US.ftl rename to templates/translations/setup-translations/src/main/resources/en_US/config/feature_setup_posttarget_setup_en_US.ftl diff --git a/templates/translations/setups-translations/src/main/resources/en_US/config/feature_setups_en_US.ftl b/templates/translations/setups-translations/src/main/resources/en_US/config/feature_setups_en_US.ftl deleted file mode 100644 index 3c29d26..0000000 --- a/templates/translations/setups-translations/src/main/resources/en_US/config/feature_setups_en_US.ftl +++ /dev/null @@ -1 +0,0 @@ -Setups \ No newline at end of file diff --git a/templates/translations/starboard-custom-translations/pom.xml b/templates/translations/starboard-custom-translations/pom.xml index d32c12a..9b42f75 100644 --- a/templates/translations/starboard-custom-translations/pom.xml +++ b/templates/translations/starboard-custom-translations/pom.xml @@ -7,7 +7,7 @@ 4.0.0 - starboard-custom + starboard-custom-translations pom