forked from Fascinated/Bat
cleanup score embed and add thumbnail of the song art
This commit is contained in:
parent
85405f5856
commit
f4439338f9
@ -64,42 +64,7 @@ public class NumberOneScoreFeedListener implements EventListener {
|
||||
guildService.saveGuild(batGuild);
|
||||
continue;
|
||||
}
|
||||
channel.sendMessageEmbeds(this.buildScoreEmbed(score)).queue();
|
||||
channel.sendMessageEmbeds(ScoreSaberFeature.buildScoreEmbed(score)).queue();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds an embed for a score.
|
||||
*
|
||||
* @param score The score.
|
||||
* @return The embed.
|
||||
*/
|
||||
public MessageEmbed buildScoreEmbed(ScoreSaberPlayerScoreToken score) {
|
||||
ScoreSaberScoreToken scoreToken = score.getScore();
|
||||
ScoreSaberLeaderboardToken leaderboardToken = score.getLeaderboard();
|
||||
ScoreSaberScoreToken.LeaderboardPlayerInfo playerInfo = scoreToken.getLeaderboardPlayerInfo();
|
||||
return EmbedUtils.genericEmbed()
|
||||
.setAuthor(playerInfo.getName() + " just set a new #1!", "https://scoresaber.com/u/%s".formatted(playerInfo.getId()),
|
||||
"https://cdn.scoresaber.com/avatars/%s.jpg".formatted(playerInfo.getId()))
|
||||
.setDescription("**%s** (%s%s)\n[[Map Link]](%s) [[SS Profile]](%s)".formatted(
|
||||
leaderboardToken.getSongName(),
|
||||
ScoreSaberUtils.getFormattedDifficulty(leaderboardToken.getDifficulty().getDifficulty()),
|
||||
leaderboardToken.isRanked() ? " " + leaderboardToken.getStars() + "⭐" : "",
|
||||
"https://scoresaber.com/leaderboard/%s".formatted(leaderboardToken.getId()),
|
||||
"https://scoresaber.com/u/%s".formatted(playerInfo.getId())
|
||||
))
|
||||
.addField("Accuracy", "%s%%".formatted(
|
||||
leaderboardToken.getMaxScore() == 0 ? "N/A" : NumberUtils.formatNumberCommas(((double) scoreToken.getBaseScore() / leaderboardToken.getMaxScore()) * 100)
|
||||
), true)
|
||||
.addField("Raw PP", scoreToken.getPp() == 0 ? "Unranked" : NumberUtils.formatNumberCommas(scoreToken.getPp()), true)
|
||||
.addField("Rank", "#%s".formatted(NumberUtils.formatNumberCommas(scoreToken.getRank())), true)
|
||||
.addField("Misses", "%s".formatted(scoreToken.getMissedNotes()), true)
|
||||
.addField("Bad Cuts", "%s".formatted(scoreToken.getBadCuts()), true)
|
||||
.addField("Max Combo", "%s %s".formatted(
|
||||
scoreToken.getMaxCombo(),
|
||||
scoreToken.getMaxCombo() == leaderboardToken.getMaxScore() ? "(FC)" : ""
|
||||
), true)
|
||||
.setTimestamp(DateUtils.getDateFromString(scoreToken.getTimeSet()).toInstant())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,19 @@
|
||||
package cc.fascinated.bat.features.scoresaber;
|
||||
|
||||
import cc.fascinated.bat.common.DateUtils;
|
||||
import cc.fascinated.bat.common.EmbedUtils;
|
||||
import cc.fascinated.bat.common.NumberUtils;
|
||||
import cc.fascinated.bat.common.ScoreSaberUtils;
|
||||
import cc.fascinated.bat.features.Feature;
|
||||
import cc.fascinated.bat.features.scoresaber.command.numberone.NumberOneFeedCommand;
|
||||
import cc.fascinated.bat.features.scoresaber.command.scoresaber.ScoreSaberCommand;
|
||||
import cc.fascinated.bat.features.scoresaber.command.userfeed.UserFeedCommand;
|
||||
import cc.fascinated.bat.model.token.beatsaber.scoresaber.ScoreSaberLeaderboardToken;
|
||||
import cc.fascinated.bat.model.token.beatsaber.scoresaber.ScoreSaberPlayerScoreToken;
|
||||
import cc.fascinated.bat.model.token.beatsaber.scoresaber.ScoreSaberScoreToken;
|
||||
import cc.fascinated.bat.service.CommandService;
|
||||
import lombok.NonNull;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -24,4 +32,40 @@ public class ScoreSaberFeature extends Feature {
|
||||
commandService.registerCommand(context.getBean(UserFeedCommand.class));
|
||||
commandService.registerCommand(context.getBean(NumberOneFeedCommand.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds an embed for a score.
|
||||
*
|
||||
* @param score The score.
|
||||
* @return The embed.
|
||||
*/
|
||||
public static MessageEmbed buildScoreEmbed(ScoreSaberPlayerScoreToken score) {
|
||||
ScoreSaberScoreToken scoreToken = score.getScore();
|
||||
ScoreSaberLeaderboardToken leaderboardToken = score.getLeaderboard();
|
||||
ScoreSaberScoreToken.LeaderboardPlayerInfo playerInfo = scoreToken.getLeaderboardPlayerInfo();
|
||||
return EmbedUtils.genericEmbed()
|
||||
.setThumbnail("https://cdn.scoresaber.com/covers/%s.png".formatted(leaderboardToken.getSongHash()))
|
||||
.setAuthor(playerInfo.getName() + " just set a new score!", "https://scoresaber.com/u/%s".formatted(playerInfo.getId()),
|
||||
"https://cdn.scoresaber.com/avatars/%s.jpg".formatted(playerInfo.getId()))
|
||||
.setDescription("**%s** (%s%s)\n[[Map Link]](%s) [[SS Profile]](%s)".formatted(
|
||||
leaderboardToken.getSongName(),
|
||||
ScoreSaberUtils.getFormattedDifficulty(leaderboardToken.getDifficulty().getDifficulty()),
|
||||
leaderboardToken.isRanked() ? " " + leaderboardToken.getStars() + "⭐" : "",
|
||||
"https://scoresaber.com/leaderboard/%s".formatted(leaderboardToken.getId()),
|
||||
"https://scoresaber.com/u/%s".formatted(playerInfo.getId())
|
||||
))
|
||||
.addField("Accuracy", "%s%%".formatted(
|
||||
leaderboardToken.getMaxScore() == 0 ? "N/A" : NumberUtils.formatNumberCommas(((double) scoreToken.getBaseScore() / leaderboardToken.getMaxScore()) * 100)
|
||||
), true)
|
||||
.addField("Raw PP", scoreToken.getPp() == 0 ? "Unranked" : NumberUtils.formatNumberCommas(scoreToken.getPp()), true)
|
||||
.addField("Rank", "#%s".formatted(NumberUtils.formatNumberCommas(scoreToken.getRank())), true)
|
||||
.addField("Misses", "%s".formatted(scoreToken.getMissedNotes()), true)
|
||||
.addField("Bad Cuts", "%s".formatted(scoreToken.getBadCuts()), true)
|
||||
.addField("Max Combo", "%s %s".formatted(
|
||||
scoreToken.getMaxCombo(),
|
||||
scoreToken.getMaxCombo() == leaderboardToken.getMaxScore() ? "(FC)" : ""
|
||||
), true)
|
||||
.setTimestamp(DateUtils.getDateFromString(scoreToken.getTimeSet()).toInstant())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
@ -52,42 +52,7 @@ public class UserScoreFeedListener implements EventListener {
|
||||
guildService.saveGuild(batGuild);
|
||||
continue;
|
||||
}
|
||||
channel.sendMessageEmbeds(this.buildScoreEmbed(score)).queue();
|
||||
channel.sendMessageEmbeds(ScoreSaberFeature.buildScoreEmbed(score)).queue();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds an embed for a score.
|
||||
*
|
||||
* @param score The score.
|
||||
* @return The embed.
|
||||
*/
|
||||
public MessageEmbed buildScoreEmbed(ScoreSaberPlayerScoreToken score) {
|
||||
ScoreSaberScoreToken scoreToken = score.getScore();
|
||||
ScoreSaberLeaderboardToken leaderboardToken = score.getLeaderboard();
|
||||
ScoreSaberScoreToken.LeaderboardPlayerInfo playerInfo = scoreToken.getLeaderboardPlayerInfo();
|
||||
return EmbedUtils.genericEmbed()
|
||||
.setAuthor(playerInfo.getName() + " just set a new score!", "https://scoresaber.com/u/%s".formatted(playerInfo.getId()),
|
||||
"https://cdn.scoresaber.com/avatars/%s.jpg".formatted(playerInfo.getId()))
|
||||
.setDescription("**%s** (%s%s)\n[[Map Link]](%s) [[SS Profile]](%s)".formatted(
|
||||
leaderboardToken.getSongName(),
|
||||
ScoreSaberUtils.getFormattedDifficulty(leaderboardToken.getDifficulty().getDifficulty()),
|
||||
leaderboardToken.isRanked() ? " " + leaderboardToken.getStars() + "⭐" : "",
|
||||
"https://scoresaber.com/leaderboard/%s".formatted(leaderboardToken.getId()),
|
||||
"https://scoresaber.com/u/%s".formatted(playerInfo.getId())
|
||||
))
|
||||
.addField("Accuracy", "%s%%".formatted(
|
||||
leaderboardToken.getMaxScore() == 0 ? "N/A" : NumberUtils.formatNumberCommas(((double) scoreToken.getBaseScore() / leaderboardToken.getMaxScore()) * 100)
|
||||
), true)
|
||||
.addField("Raw PP", scoreToken.getPp() == 0 ? "Unranked" : NumberUtils.formatNumberCommas(scoreToken.getPp()), true)
|
||||
.addField("Rank", "#%s".formatted(NumberUtils.formatNumberCommas(scoreToken.getRank())), true)
|
||||
.addField("Misses", "%s".formatted(scoreToken.getMissedNotes()), true)
|
||||
.addField("Bad Cuts", "%s".formatted(scoreToken.getBadCuts()), true)
|
||||
.addField("Max Combo", "%s %s".formatted(
|
||||
scoreToken.getMaxCombo(),
|
||||
scoreToken.getMaxCombo() == leaderboardToken.getMaxScore() ? "(FC)" : ""
|
||||
), true)
|
||||
.setTimestamp(DateUtils.getDateFromString(scoreToken.getTimeSet()).toInstant())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user