mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-14 11:48:16 +00:00
[AB-xxx] adding link to the leaderboard to the leaderboard command response
This commit is contained in:
@@ -28,7 +28,9 @@ 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 net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -70,6 +72,9 @@ public class LeaderBoardCommand extends AbstractConditionableCommand {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private InteractionService interactionService;
|
private InteractionService interactionService;
|
||||||
|
|
||||||
|
@Value("${abstracto.experience.leaderboard.externalHost}")
|
||||||
|
private String leaderboardExternalHost;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
||||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
@@ -91,11 +96,18 @@ public class LeaderBoardCommand extends AbstractConditionableCommand {
|
|||||||
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
||||||
CompletableFuture<List<LeaderBoardEntryModel>> userRankFuture = converter.fromLeaderBoardEntry(Arrays.asList(userRank));
|
CompletableFuture<List<LeaderBoardEntryModel>> userRankFuture = converter.fromLeaderBoardEntry(Arrays.asList(userRank));
|
||||||
futures.add(userRankFuture);
|
futures.add(userRankFuture);
|
||||||
|
String leaderboardUrl;
|
||||||
|
if(!StringUtils.isBlank(leaderboardExternalHost)) {
|
||||||
|
leaderboardUrl = String.format("%s/experience/leaderboards/%s", leaderboardExternalHost, actorUser.getGuild().getIdLong());
|
||||||
|
} else {
|
||||||
|
leaderboardUrl = null;
|
||||||
|
}
|
||||||
return FutureUtils.toSingleFuture(futures).thenCompose(aVoid -> {
|
return FutureUtils.toSingleFuture(futures).thenCompose(aVoid -> {
|
||||||
List<LeaderBoardEntryModel> finalModels = completableFutures.join();
|
List<LeaderBoardEntryModel> finalModels = completableFutures.join();
|
||||||
LeaderBoardModel leaderBoardModel = LeaderBoardModel
|
LeaderBoardModel leaderBoardModel = LeaderBoardModel
|
||||||
.builder()
|
.builder()
|
||||||
.userExperiences(finalModels)
|
.userExperiences(finalModels)
|
||||||
|
.leaderboardUrl(leaderboardUrl)
|
||||||
.userExecuting(userRankFuture.join().get(0))
|
.userExecuting(userRankFuture.join().get(0))
|
||||||
.build();
|
.build();
|
||||||
return CompletableFuture.completedFuture(templateService.renderEmbedTemplate(LEADER_BOARD_POST_EMBED_TEMPLATE, leaderBoardModel, actorUser.getGuild().getIdLong()));
|
return CompletableFuture.completedFuture(templateService.renderEmbedTemplate(LEADER_BOARD_POST_EMBED_TEMPLATE, leaderBoardModel, actorUser.getGuild().getIdLong()));
|
||||||
|
|||||||
@@ -17,4 +17,6 @@ abstracto.featureModes.levelUpNotification.enabled=false
|
|||||||
|
|
||||||
abstracto.featureModes.levelAction.featureName=experience
|
abstracto.featureModes.levelAction.featureName=experience
|
||||||
abstracto.featureModes.levelAction.mode=levelAction
|
abstracto.featureModes.levelAction.mode=levelAction
|
||||||
abstracto.featureModes.levelAction.enabled=false
|
abstracto.featureModes.levelAction.enabled=false
|
||||||
|
|
||||||
|
abstracto.experience.leaderboard.externalHost=${FRONTEND_HOST:}
|
||||||
@@ -24,4 +24,5 @@ public class LeaderBoardModel extends SlimUserInitiatedServerContext {
|
|||||||
* The {@link LeaderBoardEntryModel} containing the leaderboard information executing the command.
|
* The {@link LeaderBoardEntryModel} containing the leaderboard information executing the command.
|
||||||
*/
|
*/
|
||||||
private LeaderBoardEntryModel userExecuting;
|
private LeaderBoardEntryModel userExecuting;
|
||||||
|
private String leaderboardUrl;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user