diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/Rank.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/Rank.java index 819481a05..aa063050e 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/Rank.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/command/Rank.java @@ -6,7 +6,6 @@ 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.command.execution.ContextConverter; import dev.sheldan.abstracto.core.config.FeatureDefinition; import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.ChannelService; @@ -24,6 +23,7 @@ import dev.sheldan.abstracto.experience.service.management.UserExperienceManagem import dev.sheldan.abstracto.core.templating.model.MessageToSend; import dev.sheldan.abstracto.core.templating.service.TemplateService; import lombok.extern.slf4j.Slf4j; +import net.dv8tion.jda.api.entities.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -66,10 +66,15 @@ public class Rank extends AbstractConditionableCommand { @Override public CompletableFuture executeAsync(CommandContext commandContext) { - RankModel rankModel = (RankModel) ContextConverter.slimFromCommandContext(commandContext, RankModel.class); - AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); + List parameters = commandContext.getParameters().getParameters(); + Member parameter = !parameters.isEmpty() ? (Member) parameters.get(0) : commandContext.getAuthor(); + AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(parameter); LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer); CompletableFuture future = converter.fromLeaderBoardEntry(userRank); + RankModel rankModel = RankModel + .builder() + .member(parameter) + .build(); return future.thenCompose(leaderBoardEntryModel -> self.renderAndSendRank(commandContext, rankModel, leaderBoardEntryModel) ).thenApply(result -> CommandResult.fromIgnored()); @@ -89,6 +94,7 @@ public class Rank extends AbstractConditionableCommand { @Override public CommandConfiguration getConfiguration() { List parameters = new ArrayList<>(); + parameters.add(Parameter.builder().name("member").templated(true).type(Member.class).optional(true).build()); HelpInfo helpInfo = HelpInfo.builder().templated(true).build(); return CommandConfiguration.builder() .name("rank") diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-int/src/main/java/dev/sheldan/abstracto/experience/model/template/RankModel.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-int/src/main/java/dev/sheldan/abstracto/experience/model/template/RankModel.java index 3de9ee300..06818d794 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-int/src/main/java/dev/sheldan/abstracto/experience/model/template/RankModel.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-int/src/main/java/dev/sheldan/abstracto/experience/model/template/RankModel.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.experience.model.template; -import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext; +import lombok.Builder; import lombok.Getter; import lombok.Setter; -import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Member; /** * Object containing the provided property to render the rank command template. This includes the @@ -12,8 +12,8 @@ import lombok.experimental.SuperBuilder; */ @Getter @Setter -@SuperBuilder -public class RankModel extends SlimUserInitiatedServerContext { +@Builder +public class RankModel { /** * The {@link LeaderBoardEntryModel} containing the experience information about the user executing the rank * command. @@ -23,4 +23,8 @@ public class RankModel extends SlimUserInitiatedServerContext { * The necessary experience to the next level up. */ private Long experienceToNextLevel; + /** + * The member to show the rank for + */ + private Member member; }