mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-16 04:21:49 +00:00
added command to specifically disable/experience for a user
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
package dev.sheldan.abstracto.experience.commands;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.experience.config.features.ExperienceFeature;
|
||||||
|
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class DisableExpGain extends AbstractConditionableCommand {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AUserExperienceService aUserExperienceService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
Member para = (Member) commandContext.getParameters().getParameters().get(0);
|
||||||
|
AUserInAServer userInAServer = userInServerManagementService.loadUser(para);
|
||||||
|
aUserExperienceService.disableExperienceForUser(userInAServer);
|
||||||
|
return CommandResult.fromSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandConfiguration getConfiguration() {
|
||||||
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
parameters.add(Parameter.builder().name("user").templated(true).type(Member.class).build());
|
||||||
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
|
return CommandConfiguration.builder()
|
||||||
|
.name("disableExpGain")
|
||||||
|
.module(ExperienceModule.EXPERIENCE)
|
||||||
|
.causesReaction(true)
|
||||||
|
.templated(true)
|
||||||
|
.parameters(parameters)
|
||||||
|
.help(helpInfo)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ExperienceFeature.EXPERIENCE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package dev.sheldan.abstracto.experience.commands;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.experience.config.features.ExperienceFeature;
|
||||||
|
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class EnableExpGain extends AbstractConditionableCommand {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AUserExperienceService aUserExperienceService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
Member para = (Member) commandContext.getParameters().getParameters().get(0);
|
||||||
|
AUserInAServer userInAServer = userInServerManagementService.loadUser(para);
|
||||||
|
aUserExperienceService.enableExperienceForUser(userInAServer);
|
||||||
|
return CommandResult.fromSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandConfiguration getConfiguration() {
|
||||||
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
parameters.add(Parameter.builder().name("user").templated(true).type(Member.class).build());
|
||||||
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
|
return CommandConfiguration.builder()
|
||||||
|
.name("enableExpGain")
|
||||||
|
.module(ExperienceModule.EXPERIENCE)
|
||||||
|
.causesReaction(true)
|
||||||
|
.templated(true)
|
||||||
|
.parameters(parameters)
|
||||||
|
.help(helpInfo)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ExperienceFeature.EXPERIENCE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -71,7 +71,6 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addExperience(AUserInAServer userInAServer) {
|
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;
|
Long second = Instant.now().getEpochSecond() / 60;
|
||||||
if(runtimeExperience.containsKey(second)) {
|
if(runtimeExperience.containsKey(second)) {
|
||||||
List<AServer> existing = runtimeExperience.get(second);
|
List<AServer> existing = runtimeExperience.get(second);
|
||||||
@@ -156,9 +155,13 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
gainedExperience = (int) Math.floor(gainedExperience * multiplier);
|
gainedExperience = (int) Math.floor(gainedExperience * multiplier);
|
||||||
log.trace("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience);
|
log.trace("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience);
|
||||||
AUserExperience aUserExperience = userExperienceManagementService.incrementExpForUser(userInAServer, gainedExperience.longValue(), 1L);
|
AUserExperience aUserExperience = userExperienceManagementService.incrementExpForUser(userInAServer, gainedExperience.longValue(), 1L);
|
||||||
updateUserlevel(aUserExperience, levels);
|
if(!aUserExperience.getExperienceGainDisabled()) {
|
||||||
updateUserRole(aUserExperience, roles);
|
updateUserlevel(aUserExperience, levels);
|
||||||
userExperienceManagementService.saveUser(aUserExperience);
|
updateUserRole(aUserExperience, roles);
|
||||||
|
userExperienceManagementService.saveUser(aUserExperience);
|
||||||
|
} else {
|
||||||
|
log.trace("Experience gain was disabled. User did not gain any experience.");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -248,6 +251,18 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableExperienceForUser(AUserInAServer userInAServer) {
|
||||||
|
AUserExperience userExperience = userExperienceManagementService.findUserInServer(userInAServer);
|
||||||
|
userExperience.setExperienceGainDisabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableExperienceForUser(AUserInAServer userInAServer) {
|
||||||
|
AUserExperience userExperience = userExperienceManagementService.findUserInServer(userInAServer);
|
||||||
|
userExperience.setExperienceGainDisabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
private MessageToSend getUserSyncStatusUpdateModel(Integer current, Integer total) {
|
private MessageToSend getUserSyncStatusUpdateModel(Integer current, Integer total) {
|
||||||
UserSyncStatusModel statusModel = UserSyncStatusModel.builder().currentCount(current).totalUserCount(total).build();
|
UserSyncStatusModel statusModel = UserSyncStatusModel.builder().currentCount(current).totalUserCount(total).build();
|
||||||
return templateService.renderEmbedTemplate("user_sync_status_message", statusModel);
|
return templateService.renderEmbedTemplate("user_sync_status_message", statusModel);
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ public class UserExperienceManagementServiceBean implements UserExperienceManage
|
|||||||
.builder()
|
.builder()
|
||||||
.experience(0L)
|
.experience(0L)
|
||||||
.messageCount(0L)
|
.messageCount(0L)
|
||||||
|
.experienceGainDisabled(false)
|
||||||
.user(aUserInAServer)
|
.user(aUserInAServer)
|
||||||
.id(aUserInAServer.getUserInServerId())
|
.id(aUserInAServer.getUserInServerId())
|
||||||
.currentLevel(startingLevel)
|
.currentLevel(startingLevel)
|
||||||
@@ -60,8 +61,10 @@ public class UserExperienceManagementServiceBean implements UserExperienceManage
|
|||||||
Optional<AUserExperience> byId = repository.findById(user.getUserInServerId());
|
Optional<AUserExperience> byId = repository.findById(user.getUserInServerId());
|
||||||
if(byId.isPresent()) {
|
if(byId.isPresent()) {
|
||||||
AUserExperience userExperience = byId.get();
|
AUserExperience userExperience = byId.get();
|
||||||
userExperience.setMessageCount(userExperience.getMessageCount() + messageCount);
|
if(!userExperience.getExperienceGainDisabled()) {
|
||||||
userExperience.setExperience(userExperience.getExperience() + experience);
|
userExperience.setMessageCount(userExperience.getMessageCount() + messageCount);
|
||||||
|
userExperience.setExperience(userExperience.getExperience() + experience);
|
||||||
|
}
|
||||||
return userExperience;
|
return userExperience;
|
||||||
} else {
|
} else {
|
||||||
AExperienceLevel startingLevel = experienceLevelManagementService.getLevel(0).orElseThrow(() -> new AbstractoRunTimeException(String.format("Could not find level %s", 0)));
|
AExperienceLevel startingLevel = experienceLevelManagementService.getLevel(0).orElseThrow(() -> new AbstractoRunTimeException(String.format("Could not find level %s", 0)));
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ public class AUserExperience implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Long messageCount;
|
private Long messageCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not the experience gain has been disabled for this user
|
||||||
|
*/
|
||||||
|
private Boolean experienceGainDisabled;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link AExperienceLevel } which the user currently has.
|
* The {@link AExperienceLevel } which the user currently has.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -125,4 +125,7 @@ public interface AUserExperienceService {
|
|||||||
* @param toExecute The {@link Consumer} which should be executed on each element of the passed list
|
* @param toExecute The {@link Consumer} which should be executed on each element of the passed list
|
||||||
*/
|
*/
|
||||||
void executeActionOnUserExperiencesWithFeedBack(List<AUserExperience> experiences, AChannel channel, Consumer<AUserExperience> toExecute);
|
void executeActionOnUserExperiencesWithFeedBack(List<AUserExperience> experiences, AChannel channel, Consumer<AUserExperience> toExecute);
|
||||||
|
|
||||||
|
void disableExperienceForUser(AUserInAServer userInAServer);
|
||||||
|
void enableExperienceForUser(AUserInAServer userInAServer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Disables experience gain for a particular member
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Disables the experience gain for one specific user. This user will not gain experience and will not gain ranks.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
The user to disable experience gain for.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
disableExpGain <user>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Enables experience gain for a particular member
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Enables the experience gain for one specific user. This user will gain experience and will gain ranks.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
The user to enable experience gain for.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
enableExpGain <user>
|
||||||
Reference in New Issue
Block a user