diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/ExpScale.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/ExpScale.java index 996302968..6b68691c1 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/ExpScale.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/ExpScale.java @@ -8,6 +8,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.service.ConfigService; import dev.sheldan.abstracto.experience.config.ExperienceFeatures; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,6 +16,7 @@ import java.util.ArrayList; import java.util.List; @Component +@Slf4j public class ExpScale extends AbstractConditionableCommand { public static final String EXP_MULTIPLIER_KEY = "expMultiplier"; @@ -24,7 +26,9 @@ public class ExpScale extends AbstractConditionableCommand { @Override public CommandResult execute(CommandContext commandContext) { Double scale = (Double) commandContext.getParameters().getParameters().get(0); - configService.setDoubleValue(EXP_MULTIPLIER_KEY, commandContext.getGuild().getIdLong(), scale); + Long guildId = commandContext.getGuild().getIdLong(); + configService.setDoubleValue(EXP_MULTIPLIER_KEY, guildId, scale); + log.info("Setting experience scale to {} for {}", scale, guildId); return CommandResult.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SetRole.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SetExpRole.java similarity index 71% rename from abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SetRole.java rename to abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SetExpRole.java index 9c706eba7..86fc3ffcc 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SetRole.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SetExpRole.java @@ -6,10 +6,15 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; +import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; +import dev.sheldan.abstracto.core.exception.RoleException; import dev.sheldan.abstracto.core.models.database.ARole; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.service.RoleService; import dev.sheldan.abstracto.core.service.management.RoleManagementService; import dev.sheldan.abstracto.experience.config.ExperienceFeatures; import dev.sheldan.abstracto.experience.service.ExperienceRoleService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -17,7 +22,8 @@ import java.util.ArrayList; import java.util.List; @Component -public class SetRole extends AbstractConditionableCommand { +@Slf4j +public class SetExpRole extends AbstractConditionableCommand { @Autowired private ExperienceRoleService experienceRoleService; @@ -25,13 +31,21 @@ public class SetRole extends AbstractConditionableCommand { @Autowired private RoleManagementService roleManagementService; + @Autowired + private RoleService roleService; + @Override public CommandResult execute(CommandContext commandContext) { Integer level = (Integer) commandContext.getParameters().getParameters().get(0); Long roleId = (Long) commandContext.getParameters().getParameters().get(1); ARole role = roleManagementService.findRole(roleId); - experienceRoleService.setRoleToLevel(role, level, commandContext.getUserInitiatedContext().getServer()); + AServer server = commandContext.getUserInitiatedContext().getServer(); + if(!roleService.isRoleInServer(server, role)) { + throw new RoleException("Role not found."); + } + log.info("Setting role {} to be used for level {} on server {}", roleId, level, server.getId()); + experienceRoleService.setRoleToLevel(role, level, server); return CommandResult.fromSuccess(); } @@ -40,9 +54,9 @@ public class SetRole extends AbstractConditionableCommand { List parameters = new ArrayList<>(); parameters.add(Parameter.builder().name("level").type(Integer.class).build()); parameters.add(Parameter.builder().name("roleId").type(Long.class).build()); - HelpInfo helpInfo = HelpInfo.builder().longHelp("Sets the role to a certain level").usage("setRole ").build(); + HelpInfo helpInfo = HelpInfo.builder().longHelp("Sets the role to a certain level").usage("setExpRole ").build(); return CommandConfiguration.builder() - .name("setRole") + .name("setExpRole") .module(ExperienceModule.EXPERIENCE) .description("Sets the role to a certain level") .causesReaction(true) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SyncRoles.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SyncRoles.java index 5d48d5098..58758f937 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SyncRoles.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/SyncRoles.java @@ -6,8 +6,10 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; +import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.experience.config.ExperienceFeatures; import dev.sheldan.abstracto.experience.service.ExperienceTrackerService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,6 +17,7 @@ import java.util.ArrayList; import java.util.List; @Component +@Slf4j public class SyncRoles extends AbstractConditionableCommand { @Autowired @@ -22,7 +25,9 @@ public class SyncRoles extends AbstractConditionableCommand { @Override public CommandResult execute(CommandContext commandContext) { - experienceTrackerService.syncUserRolesWithFeedback(commandContext.getUserInitiatedContext().getServer(), commandContext.getUserInitiatedContext().getChannel()); + AServer server = commandContext.getUserInitiatedContext().getServer(); + log.info("Synchronizing roles on server {}", server.getId()); + experienceTrackerService.syncUserRolesWithFeedback(server, commandContext.getUserInitiatedContext().getChannel()); return CommandResult.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/UnSetRole.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/UnSetExpRole.java similarity index 92% rename from abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/UnSetRole.java rename to abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/UnSetExpRole.java index fa0715224..2dbd13da8 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/UnSetRole.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/commands/UnSetExpRole.java @@ -17,7 +17,7 @@ import java.util.ArrayList; import java.util.List; @Component -public class UnSetRole extends AbstractConditionableCommand { +public class UnSetExpRole extends AbstractConditionableCommand { @Autowired private RoleManagementService roleManagementService; @@ -25,7 +25,6 @@ public class UnSetRole extends AbstractConditionableCommand { @Autowired private ExperienceRoleService experienceRoleService; - @Override public CommandResult execute(CommandContext commandContext) { Long roleId = (Long) commandContext.getParameters().getParameters().get(0); @@ -38,9 +37,9 @@ public class UnSetRole extends AbstractConditionableCommand { public CommandConfiguration getConfiguration() { List parameters = new ArrayList<>(); parameters.add(Parameter.builder().name("roleId").type(Long.class).build()); - HelpInfo helpInfo = HelpInfo.builder().longHelp("Removes the role from the experience tracking").usage("unsetRole ").build(); + HelpInfo helpInfo = HelpInfo.builder().longHelp("Removes the role from the experience tracking").usage("unSetExpRole ").build(); return CommandConfiguration.builder() - .name("unsetRole") + .name("unSetExpRole") .module(ExperienceModule.EXPERIENCE) .description("Removes the role from experience tracking") .causesReaction(true) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceConfigListener.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceConfigListener.java index db0fba484..2f83c3731 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceConfigListener.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceConfigListener.java @@ -20,7 +20,7 @@ public class ExperienceConfigListener implements ServerConfigListener { @Override public void updateServerConfig(AServer server) { - log.info("Setting up experience for {}", server.getId()); + log.info("Setting up experience configuration for server {}.", server.getId()); service.createDoubleValueIfNotExist("minExp", server.getId(), experienceConfig.getMinExp().doubleValue()); service.createDoubleValueIfNotExist("maxExp", server.getId(), experienceConfig.getMaxExp().doubleValue()); service.createDoubleValueIfNotExist("expMultiplier", server.getId(), experienceConfig.getExpMultiplier().doubleValue()); diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceLevelLoader.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceLevelLoader.java index abe699803..d7e232efc 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceLevelLoader.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/config/ExperienceLevelLoader.java @@ -21,6 +21,7 @@ public class ExperienceLevelLoader { public void handleContextRefreshEvent(ContextRefreshedEvent ctxStartEvt) { Integer maxLevel = experienceConfig.getMaxLvl(); Long experience = 0L; + log.info("Setting up experience level configuration."); experienceLevelService.createExperienceLevel(0, 0L); for (int i = 1; i < maxLevel; i++) { experience = experience + experienceLevelService.calculateExperienceForLevel(i - 1); diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/job/ExperiencePersistingJob.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/job/ExperiencePersistingJob.java index 5aaf6bc2e..b0b6be72f 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/job/ExperiencePersistingJob.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/job/ExperiencePersistingJob.java @@ -28,9 +28,10 @@ public class ExperiencePersistingJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { HashMap> runtimeExperience = experienceTrackerService.getRuntimeExperience(); - log.info("Persisting experience"); + log.info("Running experience persisting job."); Long pastMinute = (Instant.now().getEpochSecond() / 60) - 1; if(runtimeExperience.containsKey(pastMinute)) { + log.info("Found experience to persist."); experienceTrackerService.handleExperienceGain(runtimeExperience.get(pastMinute)); runtimeExperience.remove(pastMinute); } 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 3c1cd0dac..e16a04846 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 @@ -7,12 +7,14 @@ import dev.sheldan.abstracto.experience.config.ExperienceFeatures; import dev.sheldan.abstracto.experience.models.database.AUserExperience; import dev.sheldan.abstracto.experience.service.ExperienceTrackerService; import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService; +import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component +@Slf4j public class JoiningUserRoleListener implements JoinListener { @Autowired @@ -28,6 +30,7 @@ public class JoiningUserRoleListener implements JoinListener { public void execute(Member member, Guild guild, AUserInAServer aUserInAServer) { AUserExperience userExperience = userExperienceManagementService.findUserInServer(aUserInAServer); if(userExperience != null) { + log.info("User {} joined {} with previous experience. Setting up experience role again (if necessary).", member.getUser().getIdLong(), guild.getIdLong()); experienceTrackerService.syncForSingleUser(userExperience); } } diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceLevelServiceBean.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceLevelServiceBean.java index 72221ba97..947801408 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceLevelServiceBean.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceLevelServiceBean.java @@ -2,10 +2,12 @@ package dev.sheldan.abstracto.experience.service; import dev.sheldan.abstracto.experience.models.database.AExperienceLevel; import dev.sheldan.abstracto.experience.service.management.ExperienceLevelManagementService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component +@Slf4j public class ExperienceLevelServiceBean implements ExperienceLevelService { @Autowired @@ -14,6 +16,7 @@ public class ExperienceLevelServiceBean implements ExperienceLevelService { @Override public void createExperienceLevel(Integer level, Long experienceNeeded) { if(!experienceLevelManagementService.levelExists(level)) { + log.trace("Creating new experience level {} with experience needed {}.", level, experienceNeeded); experienceLevelManagementService.createExperienceLevel(level, experienceNeeded); } } diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceRoleServiceBean.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceRoleServiceBean.java index 95b314982..9a4cccebb 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceRoleServiceBean.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceRoleServiceBean.java @@ -7,12 +7,14 @@ import dev.sheldan.abstracto.experience.models.database.AExperienceRole; import dev.sheldan.abstracto.experience.service.management.ExperienceLevelManagementService; import dev.sheldan.abstracto.experience.service.management.ExperienceRoleManagementService; import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; @Component +@Slf4j public class ExperienceRoleServiceBean implements ExperienceRoleService { @Autowired @@ -38,6 +40,7 @@ public class ExperienceRoleServiceBean implements ExperienceRoleService { public void unsetRole(ARole role, AServer server) { AExperienceRole roleInServer = experienceRoleManagementService.getRoleInServer(role, server); if(roleInServer.getUsers().size() > 0) { + log.info("Recalculating the roles for {} users, because their current role was removed from experience tracking.", roleInServer.getUsers().size()); roleInServer.getUsers().forEach(userExperience -> { List roles = experienceRoleManagementService.getExperienceRoleForServer(server); roles.removeIf(role1 -> role1.getId().equals(roleInServer.getId())); diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceTrackerServiceBean.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceTrackerServiceBean.java index 86a17f4b6..25bdf0235 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceTrackerServiceBean.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/ExperienceTrackerServiceBean.java @@ -60,6 +60,7 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { @Override public void addExperience(AUserInAServer userInAServer) { + log.trace("Adding experience for user {} in server {}", userInAServer.getUserReference().getId(), userInAServer.getServerReference().getId()); Long second = Instant.now().getEpochSecond() / 60; if(runtimeExperience.containsKey(second)) { List existing = runtimeExperience.get(second); @@ -115,11 +116,13 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { @Override public void increaseExpForUser(AUserExperience userInAServer, Long experience, List levels) { + AUserInAServer user = userInAServer.getUser(); + log.trace("Increasing experience for user {} in server {} by {}.", user.getUserReference().getId(), user.getServerReference().getId(), experience); userInAServer.setExperience(userInAServer.getExperience() + experience); Integer correctLevel = calculateLevel(userInAServer, levels); Integer currentLevel = userInAServer.getCurrentLevel() != null ? userInAServer.getCurrentLevel().getLevel() : 0; if(!correctLevel.equals(currentLevel)) { - log.info("User {} leveled from {} to {}", userInAServer.getUser().getUserReference().getId(), currentLevel, correctLevel); + log.info("User {} leveled from {} to {}", user.getUserReference().getId(), currentLevel, correctLevel); userInAServer.setCurrentLevel(experienceLevelManagementService.getLevel(correctLevel)); } } @@ -128,7 +131,7 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { @Override public void handleExperienceGain(List servers) { servers.forEach(serverExp -> { - log.debug("Handling experience for server {}", serverExp.getId()); + log.trace("Handling experience for server {}", serverExp.getId()); int minExp = configService.getDoubleValue("minExp", serverExp.getId()).intValue(); int maxExp = configService.getDoubleValue("maxExp", serverExp.getId()).intValue(); Integer multiplier = configService.getDoubleValue("expMultiplier", serverExp.getId()).intValue(); @@ -136,10 +139,11 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { List levels = experienceLevelManagementService.getLevelConfig(); List roles = experienceRoleManagementService.getExperienceRoleForServer(serverExp); levels.sort(Comparator.comparing(AExperienceLevel::getExperienceNeeded)); + roles.sort(Comparator.comparing(role -> role.getLevel().getLevel())); serverExp.getUsers().forEach(userInAServer -> { Integer gainedExperience = iterator.next(); gainedExperience *= multiplier; - log.debug("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience); + log.trace("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience); AUserExperience userExperience = userExperienceManagementService.findUserInServer(userInAServer); increaseExpForUser(userExperience, gainedExperience.longValue(), levels); userExperience.setMessageCount(userExperience.getMessageCount() + 1); @@ -150,21 +154,23 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { @Override public void handleExperienceRoleForUser(AUserExperience userExperience, List roles) { + AUserInAServer user = userExperience.getUser(); + log.trace("Updating experience role for user {} in server {}", user.getUserReference().getId(), user.getServerReference().getId()); AExperienceRole role = calculateRole(userExperience, roles); boolean currentlyHasNoExperienceRole = userExperience.getCurrentExperienceRole() == null; if(role == null) { if(!currentlyHasNoExperienceRole){ - roleService.removeRoleFromUser(userExperience.getUser(), userExperience.getCurrentExperienceRole().getRole()); + roleService.removeRoleFromUser(user, userExperience.getCurrentExperienceRole().getRole()); } return; } if(currentlyHasNoExperienceRole || !role.getRole().getId().equals(userExperience.getCurrentExperienceRole().getRole().getId())) { - log.info("User {} gets a new role {}", userExperience.getUser().getUserReference().getId(), role.getRole().getId()); + log.info("User {} in server {} gets a new role {}", user.getUserReference().getId(), user.getServerReference().getId(), role.getRole().getId()); if(!currentlyHasNoExperienceRole) { - roleService.removeRoleFromUser(userExperience.getUser(), userExperience.getCurrentExperienceRole().getRole()); + roleService.removeRoleFromUser(user, userExperience.getCurrentExperienceRole().getRole()); } userExperience.setCurrentExperienceRole(role); - roleService.addRoleToUser(userExperience.getUser(), userExperience.getCurrentExperienceRole().getRole()); + roleService.addRoleToUser(user, userExperience.getCurrentExperienceRole().getRole()); } } @@ -175,7 +181,7 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { List roles = experienceRoleManagementService.getExperienceRoleForServer(server); for (int i = 0; i < aUserExperiences.size(); i++) { AUserExperience userExperience = aUserExperiences.get(i); - log.debug("Synchronizing {} out of {}", i, aUserExperiences.size()); + log.trace("Synchronizing {} out of {}", i, aUserExperiences.size()); handleExperienceRoleForUser(userExperience, roles); } } @@ -189,13 +195,15 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { MessageToSend status = templateService.renderEmbedTemplate("status_message", statusModel); try { Message statusMessage = messageService.createStatusMessage(status, channel).get(); + int interval = Math.min(aUserExperiences.size() / 10, 100); for (int i = 0; i < aUserExperiences.size(); i++) { - if((i % 100) == 1) { + if((i % interval) == 1) { + log.trace("Updating feedback message with new index {} out of {}", i, aUserExperiences.size()); UserSyncStatusModel incrementalStatusModel = UserSyncStatusModel.builder().currentCount(i).totalUserCount(aUserExperiences.size()).build(); status = templateService.renderEmbedTemplate("status_message", incrementalStatusModel); messageService.updateStatusMessage(channel, statusMessage.getIdLong(), status); } - log.debug("Synchronizing {} out of {}", i, aUserExperiences.size()); + log.trace("Synchronizing {} out of {}", i, aUserExperiences.size()); AUserExperience userExperience = aUserExperiences.get(i); handleExperienceRoleForUser(userExperience, roles); } @@ -210,15 +218,15 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { @Override public void syncForSingleUser(AUserExperience userExperience) { - log.info("Synchronizing for user {}", userExperience.getUser().getUserReference().getId()); - List roles = experienceRoleManagementService.getExperienceRoleForServer(userExperience.getUser().getServerReference()); + AUserInAServer user = userExperience.getUser(); + log.info("Synchronizing for user {} in server {}", user.getUserReference().getId(), user.getServerReference().getId()); + List roles = experienceRoleManagementService.getExperienceRoleForServer(user.getServerReference()); handleExperienceRoleForUser(userExperience, roles); } @Override public LeaderBoard findLeaderBoardData(AServer server, Integer page) { List experiences = userExperienceManagementService.findLeaderboardUsersPaginated(server, page * 10, (page +1) * 10); - log.info("We found {}", experiences.size()); List entries = new ArrayList<>(); for (int i = 0; i < experiences.size(); i++) { AUserExperience userExperience = experiences.get(i); @@ -229,6 +237,7 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService { @Override public LeaderBoardEntry getRankOfUserInServer(AUserInAServer userInAServer) { + log.info("Retrieving rank for {}", userInAServer.getUserReference().getId()); AUserExperience experience = userExperienceManagementService.findUserInServer(userInAServer); LeaderBoardEntryResult rankOfUserInServer = userExperienceManagementService.getRankOfUserInServer(experience); AUserExperience aUserExperience = AUserExperience diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/management/ExperienceRoleManagementServiceBean.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/management/ExperienceRoleManagementServiceBean.java index 4b9ef8aec..b341ca790 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/management/ExperienceRoleManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/management/ExperienceRoleManagementServiceBean.java @@ -5,12 +5,14 @@ import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.experience.models.database.AExperienceLevel; import dev.sheldan.abstracto.experience.models.database.AExperienceRole; import dev.sheldan.abstracto.experience.repository.ExperienceRoleRepository; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; @Component +@Slf4j public class ExperienceRoleManagementServiceBean implements ExperienceRoleManagementService { @Autowired @@ -18,6 +20,7 @@ public class ExperienceRoleManagementServiceBean implements ExperienceRoleManage @Override public void unSetLevelInServer(AExperienceLevel level, AServer server) { + log.trace("Removing all role assignments for level {}.", level.getLevel()); List existingExperienceRoles = experienceRoleRepository.findByLevelAndRoleServer(level, server); existingExperienceRoles.forEach(existingRole -> { experienceRoleRepository.delete(existingRole); 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 4c6607ea0..35709d0cd 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 @@ -43,6 +43,7 @@ public class JoinLogger implements JoinListener { @Override public void execute(Member member, Guild guild, AUserInAServer aUserInAServer) { + log.info("User {} joined server {}.", aUserInAServer.getUserReference().getId(), aUserInAServer.getServerReference().getId()); HashMap parameters = getUserParameter(member.getUser()); String text = templateService.renderTemplateWithMap(USER_JOIN_TEMPLATE, parameters);; postTargetService.sendTextInPostTarget(text, JOIN_LOG_TARGET, guild.getIdLong()); 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 6eaad1bf1..a83c0e498 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 @@ -43,6 +43,7 @@ public class LeaveLogger implements LeaveListener { @Override public void execute(Member member, Guild guild) { + log.info("User {} left server {}.", member.getUser().getId(), guild.getIdLong()); String text = templateService.renderTemplateWithMap(USER_LEAVE_TEMPLATE, getUserParameter(member.getUser())); postTargetService.sendTextInPostTarget(text, LEAVE_LOG_TARGET, guild.getIdLong()); } 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 a13e663a1..12f516a9e 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 @@ -36,6 +36,7 @@ public class MessageDeleteLogListener implements MessageDeletedListener { @Override public void execute(CachedMessage messageFromCache) { + log.trace("Message {} in channel {} in guild {} was deleted.", messageFromCache.getMessageId(), messageFromCache.getChannelId(), messageFromCache.getServerId()); MessageDeletedLog logModel = (MessageDeletedLog) contextUtils.fromMessage(messageFromCache, MessageDeletedLog.class); logModel.setMessage(messageFromCache); String simpleMessageUpdatedMessage = templateService.renderTemplate(MESSAGE_DELETED_TEMPLATE, logModel); 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 10768550b..128e64f20 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 @@ -34,9 +34,10 @@ public class MessageEditedListener implements MessageTextUpdatedListener { @Transactional public void execute(CachedMessage messageBefore, Message messageAfter) { if(messageBefore.getContent().equals(messageAfter.getContentRaw())){ - log.debug("Message content was the same. Possible reason was: message was not in cache."); + log.trace("Message content was the same. Possible reason was: message was not in cache."); return; } + log.trace("Message {} in channel {} in guild {} was edited.", messageBefore.getMessageId(), messageBefore.getChannelId(), messageBefore.getServerId()); MessageEditedLog log = MessageEditedLog. builder(). messageAfter(messageAfter) diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java index 7f8759a02..edcffe6d0 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java @@ -31,6 +31,7 @@ public class KickServiceBean implements KickService { @Override public void kickMember(Member member, String reason, KickLogModel kickLogModel) { Optional guildById = botService.getGuildById(kickLogModel.getGuild().getIdLong()); + log.info("Kicking user {} from guild {}", member.getUser().getIdLong(), member.getGuild().getIdLong()); if(guildById.isPresent()) { guildById.get().kick(member, reason).queue(); this.sendKickLog(kickLogModel); diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java index 8fc8effa5..b7e38aeed 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java @@ -20,6 +20,7 @@ public class SlowModeServiceBean implements SlowModeService { @Override public void setSlowMode(TextChannel channel, Duration duration) { + log.info("Setting slow mode to {} in channel {} in server {}", duration.toString(), channel.getIdLong(), channel.getGuild().getId()); long seconds = duration.getSeconds(); if(seconds > TextChannel.MAX_SLOWMODE) { throw new IllegalArgumentException("Slow mode duration must be < " + TextChannel.MAX_SLOWMODE + " seconds."); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java index 2a22153b8..6a72d4508 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java @@ -19,6 +19,7 @@ public class StarboardConfigListener implements ServerConfigListener { @Override public void updateServerConfig(AServer server) { + log.info("Creating starboard config for server {}", server.getId()); for (int i = 0; i < starboardConfig.getLvl().size(); i++) { Integer value = starboardConfig.getLvl().get(i); configManagementService.createIfNotExists(server.getId(), "starLvl" + ( i + 1 ), Double.valueOf(value)); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/jobs/ReminderJob.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/jobs/ReminderJob.java index 4405ba401..c814df924 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/jobs/ReminderJob.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/jobs/ReminderJob.java @@ -24,8 +24,8 @@ public class ReminderJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { try { - reminderService.executeReminder(reminderId); log.info("executing reminder job for reminder {}", reminderId); + reminderService.executeReminder(reminderId); } catch (Exception e) { log.error("Reminder job failed to execute.", e); } 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 be0474c7a..9391eeaec 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 @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.utility.listener.embed; import dev.sheldan.abstracto.core.listener.ReactedAddedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.database.AEmote; +import dev.sheldan.abstracto.core.models.database.AUser; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.BotService; import dev.sheldan.abstracto.core.service.EmoteService; @@ -48,12 +49,14 @@ public class MessageEmbedRemovalReactionListener implements ReactedAddedListener AEmote aEmote = emoteService.getEmoteOrFakeEmote(REMOVAL_EMOTE, guildId); MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote(); Optional emoteInGuild = botService.getEmote(guildId, aEmote); + log.trace("Removing embed in message {} in channel {} in server {} because of a user reaction.", message.getMessageId(), message.getChannelId(), message.getServerId()); if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, aEmote, emoteInGuild.orElse(null))) { Optional embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId()); if(embeddedMessageOptional.isPresent()) { EmbeddedMessage embeddedMessage = embeddedMessageOptional.get(); - if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUserReference().getId()) - || embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUserReference().getId()) + AUser userReacting = userAdding.getUserReference(); + if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userReacting.getId()) + || embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userReacting.getId()) ) { messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> { messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage); 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 29a002a25..440c6bf90 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 @@ -74,6 +74,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote(); Optional emoteInGuild = botService.getEmote(guildId, aEmote); if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, aEmote, emoteInGuild.orElse(null))) { + log.trace("User {} in server {} reacted with star to put a message {} on starboard.", userAdding.getUserReference().getId(), userAdding.getServerReference().getId(), message.getMessageId()); Optional reactionOptional = EmoteUtils.getReactionFromMessageByEmote(message, aEmote); updateStarboardPost(message, reactionOptional.orElse(null), userAdding, true); } @@ -85,28 +86,31 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi List userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId()); Double starMinimum = getFromConfig("starLvl1", message.getServerId()); if (userExceptAuthor.size() >= starMinimum) { + log.info("Post reached starboard minimum. Message {} in channel {} in server {} will be starred/updated.", + message.getMessageId(), message.getChannelId(), message.getServerId()); AUserInAServer author = userManagementService.loadUser(message.getServerId(), message.getAuthorId()); if(starboardPostOptional.isPresent()) { StarboardPost starboardPost = starboardPostOptional.get(); starboardPost.setIgnored(false); starboardService.updateStarboardPost(starboardPost, message, userExceptAuthor); if(adding) { + log.trace("Adding reactor {} from message {}", userReacting.getUserReference().getId(), message.getMessageId()); starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUserReference()); } else { + log.trace("Removing reactor {} from message {}", userReacting.getUserReference().getId(), message.getMessageId()); starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUserReference()); } } else { + log.info("Creating starboard post for message {} in channel {} in server {}", message.getMessageId(), message.getChannelId(), message.getServerId()); starboardService.createStarboardPost(message, userExceptAuthor, userReacting, author); } } else { - if(starboardPostOptional.isPresent()) { - this.completelyRemoveStarboardPost(starboardPostOptional.get()); - } + log.info("Removing starboard post for message {} in channel {} in server {}. It fell under the threshold {}", message.getMessageId(), message.getChannelId(), message.getServerId(), starMinimum); + starboardPostOptional.ifPresent(this::completelyRemoveStarboardPost); } } else { - if(starboardPostOptional.isPresent()) { - this.completelyRemoveStarboardPost(starboardPostOptional.get()); - } + log.info("Removing starboard post for message {} in channel {} in server {}", message.getMessageId(), message.getChannelId(), message.getServerId()); + starboardPostOptional.ifPresent(this::completelyRemoveStarboardPost); } } @@ -127,6 +131,8 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote(); Optional emoteInGuild = botService.getEmote(guildId, aEmote); if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, aEmote, emoteInGuild.orElse(null))) { + log.trace("User {} in server {} removed star reaction from message {} on starboard.", + userRemoving.getUserReference().getId(), userRemoving.getServerReference().getId(), message.getMessageId()); Optional reactionOptional = EmoteUtils.getReactionFromMessageByEmote(message, aEmote); updateStarboardPost(message, reactionOptional.orElse(null), userRemoving, false); } 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 bf53e11a5..115e3b19a 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 @@ -5,12 +5,14 @@ import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.models.database.StarboardPost; import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Optional; @Component +@Slf4j public class StarboardPostDeletedListener implements MessageDeletedListener { @Autowired @@ -20,6 +22,9 @@ public class StarboardPostDeletedListener implements MessageDeletedListener { public void execute(CachedMessage messageBefore) { Optional byStarboardPostId = starboardPostManagementService.findByStarboardPostId(messageBefore.getMessageId()); if(byStarboardPostId.isPresent()) { + StarboardPost post = byStarboardPostId.get(); + // TODO channel missing + log.info("Removing starboard post: message {}, channel {}, server {}, because the message was deleted", post.getPostMessageId(), messageBefore.getChannelId(), post.getAuthor().getId()); starboardPostManagementService.setStarboardPostIgnored(messageBefore.getMessageId(), true); } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java index 9960f8642..023cc68d9 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java @@ -110,7 +110,8 @@ public class MessageEmbedServiceBean implements MessageEmbedService { MessageEmbeddedModel messageEmbeddedModel = buildTemplateParameter(embeddingMessage, cachedMessage); MessageToSend embed = templateService.renderEmbedTemplate(MESSAGE_EMBED_TEMPLATE, messageEmbeddedModel); List> completableFutures = channelService.sendMessageToEndInTextChannel(embed, target); - + log.trace("Embedding message {} from channel {} from server {}, because of user {}", cachedMessage.getMessageId(), + cachedMessage.getChannelId(), cachedMessage.getServerId(), cause.getUserReference().getId()); CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> { try { Message createdMessage = completableFutures.get(0).get(); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java index 866a3eed5..a5d0e7f5c 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java @@ -73,13 +73,17 @@ public class RemindServiceBean implements ReminderService { reminderModel.setReminder(reminder); MessageToSend message = templateService.renderEmbedTemplate(REMINDER_EMBED_KEY, reminderModel); channelService.sendMessageToEndInAChannel(message, reminderModel.getChannel()); + log.info("Creating reminder for user {} in guild {} due at {}.", + user.getUserReference().getId(), user.getServerReference().getId(), remindAt); if(remindIn.getSeconds() < 60) { + log.trace("Directly scheduling the reminder, because it was below the threshold."); ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.schedule(() -> { self.executeReminder(reminder.getId()); }, remindIn.toNanos(), TimeUnit.NANOSECONDS); } else { + log.trace("Starting scheduled job to execute reminder."); JobDataMap parameters = new JobDataMap(); parameters.putAsString("reminderId", reminder.getId()); schedulerService.executeJobWithParametersOnce("reminderJob", "utility", parameters, Date.from(reminder.getTargetDate())); @@ -92,6 +96,7 @@ public class RemindServiceBean implements ReminderService { Reminder reminderToRemindFor = reminderManagementService.loadReminder(reminderId); AServer server = reminderToRemindFor.getServer(); AChannel channel = reminderToRemindFor.getChannel(); + log.info("Executing reminder {}.", reminderId); Optional guildToAnswerIn = botService.getGuildById(server.getId()); if(guildToAnswerIn.isPresent()) { Optional channelToAnswerIn = botService.getTextChannelFromServer(server.getId(), channel.getId()); @@ -99,6 +104,7 @@ public class RemindServiceBean implements ReminderService { if(channelToAnswerIn.isPresent()) { AUser userReference = reminderToRemindFor.getRemindedUser().getUserReference(); Member memberInServer = botService.getMemberInServer(server.getId(), userReference.getId()); + log.trace("Reminding user {}", memberInServer.getUser().getIdLong()); ExecutedReminderModel build = ExecutedReminderModel .builder() .reminder(reminderToRemindFor) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/RoleServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/RoleServiceBean.java index ad41881f4..25238e4db 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/RoleServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/RoleServiceBean.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.exception.GuildException; import dev.sheldan.abstracto.core.exception.RoleException; import dev.sheldan.abstracto.core.models.database.ARole; +import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.management.RoleManagementService; import lombok.extern.slf4j.Slf4j; @@ -69,4 +70,14 @@ public class RoleServiceBean implements RoleService { throw new RoleException(String.format("Cannot find role %s to mark as deleted.", id)); } } + + @Override + public boolean isRoleInServer(AServer server, ARole role) { + Optional guildById = botService.getGuildById(server.getId()); + if(guildById.isPresent()) { + return guildById.get().getRoleById(role.getId()) != null; + } else { + throw new GuildException(String.format("Failed to load guild %s.", server.getId())); + } + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java index c44f0cdb7..20bb0376a 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java @@ -69,7 +69,7 @@ public class StartupServiceBean implements Startup { availableServers.forEach(aLong -> { AServer newAServer = serverManagementService.loadOrCreate(aLong); Guild newGuild = instance.getGuildById(aLong); - log.debug("Synchronizing server: {}", aLong); + log.trace("Synchronizing server: {}", aLong); if(newGuild != null){ synchronizeRolesOf(newGuild, newAServer); synchronizeChannelsOf(newGuild, newAServer); @@ -89,7 +89,7 @@ public class StartupServiceBean implements Startup { Set newRoles = SetUtils.disjunction(availableRoles, knownRolesId); newRoles.forEach(aLong -> { ARole newRole = roleManagementService.createRole(aLong, existingAServer); - log.debug("Adding new role: {}", aLong); + log.trace("Adding new role: {}", aLong); existingAServer.getRoles().add(newRole); }); } @@ -102,7 +102,7 @@ public class StartupServiceBean implements Startup { Set newChannels = SetUtils.difference(existingChannelsIds, knownChannelsIds); newChannels.forEach(aLong -> { GuildChannel channel1 = available.stream().filter(channel -> channel.getIdLong() == aLong).findFirst().get(); - log.debug("Adding new channel: {}", aLong); + log.trace("Adding new channel: {}", aLong); AChannelType type = AChannel.getAChannelType(channel1.getType()); AChannel newChannel = channelManagementService.createChannel(channel1.getIdLong(), type); serverManagementService.addChannelToServer(existingServer, newChannel); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/RoleService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/RoleService.java index 968fd70c6..dd173a767 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/RoleService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/RoleService.java @@ -1,6 +1,7 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.models.database.ARole; +import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.entities.Role; @@ -9,4 +10,5 @@ public interface RoleService { void removeRoleFromUser(AUserInAServer aUserInAServer, ARole role); void markDeleted(Role role); void markDeleted(Long id); + boolean isRoleInServer(AServer server, ARole role); } diff --git a/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/config/TemplateSeedDataLoader.java b/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/config/TemplateSeedDataLoader.java index c3646daf2..b90c7b464 100644 --- a/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/config/TemplateSeedDataLoader.java +++ b/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/config/TemplateSeedDataLoader.java @@ -33,7 +33,7 @@ public class TemplateSeedDataLoader { try { String templateKey = FilenameUtils.getBaseName(resource.getFilename()); String templateContent = IOUtils.toString(resource.getURI(), Charset.defaultCharset()); - log.debug("Creating template {}", templateKey); + log.trace("Creating template {}", templateKey); service.createTemplate(templateKey, templateContent); } catch (IOException e) { e.printStackTrace();