diff --git a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostDeletedListener.java b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostDeletedListener.java index 438368495..598d7ff6a 100644 --- a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostDeletedListener.java +++ b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostDeletedListener.java @@ -5,6 +5,7 @@ import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlace import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlacePost; import dev.sheldan.abstracto.assignableroles.service.management.AssignableRolePlacePostManagementService; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageDeletedListener; import dev.sheldan.abstracto.core.models.AServerAChannelAUser; import dev.sheldan.abstracto.core.models.GuildChannelMember; @@ -37,4 +38,9 @@ public class AssignablePostDeletedListener implements MessageDeletedListener { public FeatureEnum getFeature() { return AssignableRoleFeature.ASSIGNABLE_ROLES; } + + @Override + public Integer getPriority() { + return ListenerPriority.LOW; + } } diff --git a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionAdded.java b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionAdded.java index 65c05c7ce..391eb2047 100644 --- a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionAdded.java +++ b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionAdded.java @@ -12,6 +12,7 @@ import dev.sheldan.abstracto.assignableroles.service.management.AssignableRolePl import dev.sheldan.abstracto.assignableroles.service.management.AssignableRolePlacePostManagementService; import dev.sheldan.abstracto.assignableroles.service.management.AssignedRoleUserManagementService; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.ReactedAddedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.database.AUserInAServer; @@ -130,4 +131,9 @@ public class AssignablePostReactionAdded implements ReactedAddedListener { public FeatureEnum getFeature() { return AssignableRoleFeature.ASSIGNABLE_ROLES; } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionRemoved.java b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionRemoved.java index f2470b7df..8f791a431 100644 --- a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionRemoved.java +++ b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/listener/AssignablePostReactionRemoved.java @@ -5,6 +5,7 @@ import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlace import dev.sheldan.abstracto.assignableroles.service.AssignableRoleService; import dev.sheldan.abstracto.assignableroles.service.management.AssignableRolePlacePostManagementService; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.ReactedRemovedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.database.AUserInAServer; @@ -62,4 +63,9 @@ public class AssignablePostReactionRemoved implements ReactedRemovedListener { } } } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/ExperienceTrackerListener.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/ExperienceTrackerListener.java index 639b6bf17..bb8777467 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/ExperienceTrackerListener.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/ExperienceTrackerListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.experience.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageReceivedListener; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; @@ -36,4 +37,9 @@ public class ExperienceTrackerListener implements MessageReceivedListener { public FeatureEnum getFeature() { return ExperienceFeature.EXPERIENCE; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/JoiningUserRoleListener.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/JoiningUserRoleListener.java index 183bb15f6..c80f8c606 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/JoiningUserRoleListener.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/listener/JoiningUserRoleListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.experience.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.JoinListener; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.experience.config.features.ExperienceFeature; @@ -45,4 +46,9 @@ public class JoiningUserRoleListener implements JoinListener { public FeatureEnum getFeature() { return ExperienceFeature.EXPERIENCE; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java index fb3a5a01f..7dda44718 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.moderation.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.JoinListener; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.PostTargetService; @@ -47,4 +48,9 @@ public class JoinLogger implements JoinListener { public FeatureEnum getFeature() { return ModerationFeatures.LOGGING; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinMuteListener.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinMuteListener.java index 0bbbc9495..09c0cc34e 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinMuteListener.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinMuteListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.moderation.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.JoinListener; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures; @@ -34,4 +35,9 @@ public class JoinMuteListener implements JoinListener { public FeatureEnum getFeature() { return ModerationFeatures.MUTING; } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java index f3648fa59..08201db62 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.moderation.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.LeaveListener; import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures; @@ -49,4 +50,9 @@ public class LeaveLogger implements LeaveListener { public FeatureEnum getFeature() { return ModerationFeatures.LOGGING; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageDeleteLogListener.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageDeleteLogListener.java index e95117318..8bc1512ea 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageDeleteLogListener.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageDeleteLogListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.moderation.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageDeletedListener; import dev.sheldan.abstracto.core.models.AServerAChannelAUser; import dev.sheldan.abstracto.core.models.GuildChannelMember; @@ -74,4 +75,9 @@ public class MessageDeleteLogListener implements MessageDeletedListener { public FeatureEnum getFeature() { return ModerationFeatures.LOGGING; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageEditedListener.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageEditedListener.java index a24691b24..ad7aee4ae 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageEditedListener.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/MessageEditedListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.moderation.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageTextUpdatedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures; @@ -51,4 +52,9 @@ public class MessageEditedListener implements MessageTextUpdatedListener { public FeatureEnum getFeature() { return ModerationFeatures.LOGGING; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageDeletedListener.java b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageDeletedListener.java index c5dd77d26..5100e2a64 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageDeletedListener.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageDeletedListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.modmail.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageDeletedListener; import dev.sheldan.abstracto.core.models.AServerAChannelAUser; import dev.sheldan.abstracto.core.models.GuildChannelMember; @@ -54,7 +55,7 @@ public class ModMailMessageDeletedListener implements MessageDeletedListener { } else { channelDeletePromise = CompletableFuture.completedFuture(null); } - CompletableFuture.allOf(dmDeletePromise, channelDeletePromise).thenAccept(unused -> + CompletableFuture.allOf(dmDeletePromise, channelDeletePromise).whenComplete((unused, throwable) -> self.removeMessageFromThread(messageBefore.getMessageId()) ); }); @@ -74,4 +75,9 @@ public class ModMailMessageDeletedListener implements MessageDeletedListener { public FeatureEnum getFeature() { return ModMailFeatures.MOD_MAIL; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageEditedListener.java b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageEditedListener.java index eaed8e9b0..1619d1c3d 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageEditedListener.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageEditedListener.java @@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.command.config.Parameters; import dev.sheldan.abstracto.core.command.service.CommandRegistry; import dev.sheldan.abstracto.core.command.service.CommandService; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageTextUpdatedListener; import dev.sheldan.abstracto.core.models.FullUserInServer; import dev.sheldan.abstracto.core.models.cache.CachedMessage; @@ -129,4 +130,9 @@ public class ModMailMessageEditedListener implements MessageTextUpdatedListener public FeatureEnum getFeature() { return ModMailFeatures.MOD_MAIL; } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageListener.java b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageListener.java index 3ddd7c56f..1eed3480b 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageListener.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModMailMessageListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.modmail.listener; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.PrivateMessageReceivedListener; import dev.sheldan.abstracto.core.models.database.AUser; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; @@ -64,4 +65,9 @@ public class ModMailMessageListener implements PrivateMessageReceivedListener { public FeatureEnum getFeature() { return ModMailFeatures.MOD_MAIL; } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java index 25706b126..74594ebf2 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.utility.listener.embed; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageReceivedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.service.MessageCache; @@ -76,4 +77,9 @@ public class MessageEmbedListener implements MessageReceivedListener { public FeatureEnum getFeature() { return UtilityFeature.LINK_EMBEDS; } + + @Override + public Integer getPriority() { + return ListenerPriority.MEDIUM; + } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java index 4ca613c11..b6ee00d56 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.utility.listener.embed; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.ReactedAddedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.database.AEmote; @@ -72,4 +73,9 @@ public class MessageEmbedRemovalReactionListener implements ReactedAddedListener public FeatureEnum getFeature() { return UtilityFeature.LINK_EMBEDS; } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java index 942bdbd37..f8fb84a1c 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.utility.listener.starboard; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.ReactedAddedListener; import dev.sheldan.abstracto.core.listener.ReactedRemovedListener; import dev.sheldan.abstracto.core.listener.ReactionClearedListener; @@ -165,4 +166,9 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi completelyRemoveStarboardPost(starboardPost); }); } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java index 0c1fe038d..2c943e728 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.utility.listener.starboard; import dev.sheldan.abstracto.core.config.FeatureEnum; +import dev.sheldan.abstracto.core.config.ListenerPriority; import dev.sheldan.abstracto.core.listener.MessageDeletedListener; import dev.sheldan.abstracto.core.models.AServerAChannelAUser; import dev.sheldan.abstracto.core.models.GuildChannelMember; @@ -36,4 +37,9 @@ public class StarboardPostDeletedListener implements MessageDeletedListener { public FeatureEnum getFeature() { return UtilityFeature.STARBOARD; } + + @Override + public Integer getPriority() { + return ListenerPriority.HIGH; + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java index a37c9e033..4c8b336ad 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java @@ -14,6 +14,9 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import java.util.Collections; +import java.util.Comparator; import java.util.List; @Service @@ -57,4 +60,9 @@ public class JoinListenerBean extends ListenerAdapter { log.trace("Executing join listener {} for member {} in guild {}.", joinListener.getClass().getName(), event.getMember().getId(), event.getGuild().getId()); joinListener.execute(event.getMember(), event.getGuild(), aUserInAServer); } + + @PostConstruct + public void postConstruct() { + listenerList.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListenerBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListenerBean.java index 07913f51a..87f1bb029 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListenerBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListenerBean.java @@ -13,6 +13,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import java.util.Comparator; import java.util.List; @Service @@ -52,4 +54,9 @@ public class LeaveListenerBean extends ListenerAdapter { log.trace("Executing leave listener {} for member {} in guild {}.", leaveListener.getClass().getName(), event.getMember().getId(), event.getGuild().getId()); leaveListener.execute(event.getMember(), event.getGuild()); } + + @PostConstruct + public void postConstruct() { + listenerList.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListenerBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListenerBean.java index df7252a53..04245893b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListenerBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListenerBean.java @@ -22,6 +22,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import java.util.Comparator; import java.util.List; import java.util.function.Consumer; @@ -106,4 +108,9 @@ public class MessageDeletedListenerBean extends ListenerAdapter { log.trace("Executing message deleted listener {} for message {} in guild {}.", messageDeletedListener.getClass().getName(), cachedMessage.getMessageId(), cachedMessage.getMessageId()); messageDeletedListener.execute(cachedMessage, authorUser, authorMember); } + + @PostConstruct + public void postConstruct() { + listener.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListenerBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListenerBean.java index c76565d6c..f6e1b593c 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListenerBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListenerBean.java @@ -16,6 +16,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import java.util.Comparator; import java.util.List; @Component @@ -88,4 +90,10 @@ public class MessageReceivedListenerBean extends ListenerAdapter { log.trace("Executing private message listener {} for member {}.", messageReceivedListener.getClass().getName(), event.getAuthor().getId()); messageReceivedListener.execute(event.getMessage()); } + + @PostConstruct + public void postConstruct() { + listenerList.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + privateMessageReceivedListeners.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageUpdatedListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageUpdatedListener.java index 301632e84..4df3a0430 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageUpdatedListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/MessageUpdatedListener.java @@ -16,6 +16,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import java.util.Comparator; import java.util.List; @Component @@ -69,4 +71,9 @@ public class MessageUpdatedListener extends ListenerAdapter { public void executeIndividualMessageUpdatedListener(Message message, CachedMessage cachedMessage, MessageTextUpdatedListener messageTextUpdatedListener) { messageTextUpdatedListener.execute(cachedMessage, message); } + + @PostConstruct + public void postConstruct() { + listener.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java index b590d46a6..83e3be280 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java @@ -18,6 +18,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; @@ -198,4 +200,11 @@ public class ReactionUpdatedListener extends ListenerAdapter { }); } + @PostConstruct + public void postConstruct() { + reactionRemovedListeners.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + addedListenerList.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + clearedListenerList.sort(Comparator.comparing(Prioritized::getPriority).reversed()); + } + } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/config/ListenerPriority.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/config/ListenerPriority.java new file mode 100644 index 000000000..47fa9fdcc --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/config/ListenerPriority.java @@ -0,0 +1,9 @@ +package dev.sheldan.abstracto.core.config; + +public class ListenerPriority { + public static final Integer HIGHEST = 100; + public static final Integer HIGH = 75; + public static final Integer MEDIUM = 50; + public static final Integer LOW = 25; + public static final Integer LOWEST = 0; +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/JoinListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/JoinListener.java index 609e73bab..22a439c4f 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/JoinListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/JoinListener.java @@ -4,6 +4,6 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; -public interface JoinListener extends FeatureAware { +public interface JoinListener extends FeatureAware, Prioritized { void execute(Member member, Guild guild, AUserInAServer aUserInAServer); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListener.java index 7e3515362..9d9520e1a 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/LeaveListener.java @@ -3,6 +3,6 @@ package dev.sheldan.abstracto.core.listener; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; -public interface LeaveListener extends FeatureAware { +public interface LeaveListener extends FeatureAware, Prioritized { void execute(Member member, Guild guild); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListener.java index 1aafbc25a..4d9a45fc2 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageDeletedListener.java @@ -4,6 +4,6 @@ import dev.sheldan.abstracto.core.models.AServerAChannelAUser; import dev.sheldan.abstracto.core.models.GuildChannelMember; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -public interface MessageDeletedListener extends FeatureAware { +public interface MessageDeletedListener extends FeatureAware, Prioritized { void execute(CachedMessage messageBefore, AServerAChannelAUser authorUser, GuildChannelMember authorMember); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListener.java index 8ce2257a2..09b2d7bba 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageReceivedListener.java @@ -2,6 +2,6 @@ package dev.sheldan.abstracto.core.listener; import net.dv8tion.jda.api.entities.Message; -public interface MessageReceivedListener extends FeatureAware { +public interface MessageReceivedListener extends FeatureAware, Prioritized { void execute(Message message); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageTextUpdatedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageTextUpdatedListener.java index bbb4289e9..dd3df3134 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageTextUpdatedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/MessageTextUpdatedListener.java @@ -3,6 +3,6 @@ package dev.sheldan.abstracto.core.listener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import net.dv8tion.jda.api.entities.Message; -public interface MessageTextUpdatedListener extends FeatureAware { +public interface MessageTextUpdatedListener extends FeatureAware, Prioritized { void execute(CachedMessage messageBefore, Message messageAfter); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/Prioritized.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/Prioritized.java new file mode 100644 index 000000000..0d2c9d344 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/Prioritized.java @@ -0,0 +1,5 @@ +package dev.sheldan.abstracto.core.listener; + +public interface Prioritized { + Integer getPriority(); +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/PrivateMessageReceivedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/PrivateMessageReceivedListener.java index fa18ee289..77a8dbefc 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/PrivateMessageReceivedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/PrivateMessageReceivedListener.java @@ -2,6 +2,6 @@ package dev.sheldan.abstracto.core.listener; import net.dv8tion.jda.api.entities.Message; -public interface PrivateMessageReceivedListener extends FeatureAware { +public interface PrivateMessageReceivedListener extends FeatureAware, Prioritized { void execute(Message message); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java index e43a959f4..4380e335b 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java @@ -4,6 +4,6 @@ import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionAddEvent; -public interface ReactedAddedListener extends FeatureAware { +public interface ReactedAddedListener extends FeatureAware, Prioritized { void executeReactionAdded(CachedMessage message, GuildMessageReactionAddEvent event, AUserInAServer userAdding); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java index 669a88280..e8e5b7e3b 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java @@ -4,6 +4,6 @@ import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionRemoveEvent; -public interface ReactedRemovedListener extends FeatureAware { +public interface ReactedRemovedListener extends FeatureAware, Prioritized { void executeReactionRemoved(CachedMessage message, GuildMessageReactionRemoveEvent reaction, AUserInAServer userRemoving); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactionClearedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactionClearedListener.java index d50322833..6549ebfa3 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactionClearedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactionClearedListener.java @@ -2,6 +2,6 @@ package dev.sheldan.abstracto.core.listener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -public interface ReactionClearedListener extends FeatureAware { +public interface ReactionClearedListener extends FeatureAware, Prioritized { void executeReactionCleared(CachedMessage message); }