mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-15 12:10:21 +00:00
[AB-251] adding optional member parameter to rank command to show the rank of another member
This commit is contained in:
@@ -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.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
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.config.FeatureDefinition;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
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.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -66,10 +66,15 @@ public class Rank extends AbstractConditionableCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
||||||
RankModel rankModel = (RankModel) ContextConverter.slimFromCommandContext(commandContext, RankModel.class);
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
|
Member parameter = !parameters.isEmpty() ? (Member) parameters.get(0) : commandContext.getAuthor();
|
||||||
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(parameter);
|
||||||
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
||||||
CompletableFuture<LeaderBoardEntryModel> future = converter.fromLeaderBoardEntry(userRank);
|
CompletableFuture<LeaderBoardEntryModel> future = converter.fromLeaderBoardEntry(userRank);
|
||||||
|
RankModel rankModel = RankModel
|
||||||
|
.builder()
|
||||||
|
.member(parameter)
|
||||||
|
.build();
|
||||||
return future.thenCompose(leaderBoardEntryModel ->
|
return future.thenCompose(leaderBoardEntryModel ->
|
||||||
self.renderAndSendRank(commandContext, rankModel, leaderBoardEntryModel)
|
self.renderAndSendRank(commandContext, rankModel, leaderBoardEntryModel)
|
||||||
).thenApply(result -> CommandResult.fromIgnored());
|
).thenApply(result -> CommandResult.fromIgnored());
|
||||||
@@ -89,6 +94,7 @@ public class Rank extends AbstractConditionableCommand {
|
|||||||
@Override
|
@Override
|
||||||
public CommandConfiguration getConfiguration() {
|
public CommandConfiguration getConfiguration() {
|
||||||
List<Parameter> parameters = new ArrayList<>();
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
parameters.add(Parameter.builder().name("member").templated(true).type(Member.class).optional(true).build());
|
||||||
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
return CommandConfiguration.builder()
|
return CommandConfiguration.builder()
|
||||||
.name("rank")
|
.name("rank")
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package dev.sheldan.abstracto.experience.model.template;
|
package dev.sheldan.abstracto.experience.model.template;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
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
|
* Object containing the provided property to render the rank command template. This includes the
|
||||||
@@ -12,8 +12,8 @@ import lombok.experimental.SuperBuilder;
|
|||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@SuperBuilder
|
@Builder
|
||||||
public class RankModel extends SlimUserInitiatedServerContext {
|
public class RankModel {
|
||||||
/**
|
/**
|
||||||
* The {@link LeaderBoardEntryModel} containing the experience information about the user executing the rank
|
* The {@link LeaderBoardEntryModel} containing the experience information about the user executing the rank
|
||||||
* command.
|
* command.
|
||||||
@@ -23,4 +23,8 @@ public class RankModel extends SlimUserInitiatedServerContext {
|
|||||||
* The necessary experience to the next level up.
|
* The necessary experience to the next level up.
|
||||||
*/
|
*/
|
||||||
private Long experienceToNextLevel;
|
private Long experienceToNextLevel;
|
||||||
|
/**
|
||||||
|
* The member to show the rank for
|
||||||
|
*/
|
||||||
|
private Member member;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user