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);
|
guildService.saveGuild(batGuild);
|
||||||
continue;
|
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;
|
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.Feature;
|
||||||
import cc.fascinated.bat.features.scoresaber.command.numberone.NumberOneFeedCommand;
|
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.scoresaber.ScoreSaberCommand;
|
||||||
import cc.fascinated.bat.features.scoresaber.command.userfeed.UserFeedCommand;
|
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 cc.fascinated.bat.service.CommandService;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -24,4 +32,40 @@ public class ScoreSaberFeature extends Feature {
|
|||||||
commandService.registerCommand(context.getBean(UserFeedCommand.class));
|
commandService.registerCommand(context.getBean(UserFeedCommand.class));
|
||||||
commandService.registerCommand(context.getBean(NumberOneFeedCommand.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);
|
guildService.saveGuild(batGuild);
|
||||||
continue;
|
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