Skip to content

Commit 11bf6bd

Browse files
improved return values
1 parent b90589b commit 11bf6bd

File tree

4 files changed

+30
-26
lines changed

4 files changed

+30
-26
lines changed

src/main/java/net/javadiscord/javabot/systems/help/HelpExperienceService.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
import lombok.RequiredArgsConstructor;
55
import lombok.extern.slf4j.Slf4j;
66
import net.dv8tion.jda.api.entities.Guild;
7+
import net.dv8tion.jda.api.entities.Role;
78
import net.javadiscord.javabot.Bot;
89
import net.javadiscord.javabot.systems.help.dao.HelpAccountRepository;
910
import net.javadiscord.javabot.systems.help.dao.HelpTransactionRepository;
1011
import net.javadiscord.javabot.systems.help.model.HelpAccount;
1112
import net.javadiscord.javabot.systems.help.model.HelpTransaction;
1213
import net.javadiscord.javabot.systems.help.model.HelpTransactionMessage;
14+
import net.javadiscord.javabot.util.Pair;
1315

1416
import java.sql.Connection;
1517
import java.sql.SQLException;
@@ -102,14 +104,14 @@ public HelpTransaction performTransaction(long recipient, double value, HelpTran
102104
}
103105

104106
private void checkExperienceRoles(Guild guild, HelpAccount account) {
105-
guild.retrieveMemberById(account.getUserId()).queue(member -> {
106-
Bot.config.get(guild).getHelp().getExperienceRoles().forEach((key, value) -> {
107-
if (key.equals(account.getCurrentExperienceGoal(guild).getKey())) {
108-
guild.addRoleToMember(member, guild.getRoleById(key)).queue();
109-
} else {
110-
guild.removeRoleFromMember(member, guild.getRoleById(key)).queue();
111-
}
112-
});
113-
}, e -> {});
107+
guild.retrieveMemberById(account.getUserId()).queue(member ->
108+
Bot.config.get(guild).getHelp().getExperienceRoles().forEach((key, value) -> {
109+
Pair<Role, Double> role = account.getCurrentExperienceGoal(guild);
110+
if (key.equals(role.first().getIdLong())) {
111+
guild.addRoleToMember(member, role.first()).queue();
112+
} else {
113+
guild.removeRoleFromMember(member, role.first()).queue();
114+
}
115+
}), e -> {});
114116
}
115117
}

src/main/java/net/javadiscord/javabot/systems/help/commands/subcommands/ExperienceLeaderboardSubcommand.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package net.javadiscord.javabot.systems.help.commands.subcommands;
22

33
import net.dv8tion.jda.api.EmbedBuilder;
4-
import net.dv8tion.jda.api.entities.Emoji;
5-
import net.dv8tion.jda.api.entities.Guild;
6-
import net.dv8tion.jda.api.entities.MessageEmbed;
7-
import net.dv8tion.jda.api.entities.User;
4+
import net.dv8tion.jda.api.entities.*;
85
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
96
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
107
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
@@ -18,10 +15,10 @@
1815
import net.javadiscord.javabot.data.h2db.DbHelper;
1916
import net.javadiscord.javabot.systems.help.dao.HelpAccountRepository;
2017
import net.javadiscord.javabot.systems.help.model.HelpAccount;
18+
import net.javadiscord.javabot.util.Pair;
2119

2220
import java.sql.SQLException;
2321
import java.util.List;
24-
import java.util.Map;
2522

2623
/**
2724
* Command that generates a leaderboard based on the help channel experience.
@@ -71,12 +68,11 @@ private static MessageEmbed buildExperienceLeaderboard(Guild guild, HelpAccountR
7168
.setColor(Bot.config.get(guild).getSlashCommand().getDefaultColor())
7269
.setFooter(String.format("Page %s/%s", Math.min(page, maxPage), maxPage));
7370
accounts.forEach(account -> {
74-
Map.Entry<Long, Double> currentRole = account.getCurrentExperienceGoal(guild);
75-
System.out.println(guild.getJDA().getUserCache().toString());
71+
Pair<Role, Double> currentRole = account.getCurrentExperienceGoal(guild);
7672
User user = guild.getJDA().getUserById(account.getUserId());
7773
builder.addField(
7874
String.format("**%s.** %s", (accounts.indexOf(account) + 1) + (page - 1) * PAGE_SIZE, user == null ? account.getUserId() : user.getAsTag()),
79-
String.format("<@&%s>: `%.0f XP`\n", currentRole.getKey(), account.getExperience()),
75+
String.format("%s`%.0f XP`\n", currentRole.first() != null ? currentRole.first().getAsMention() + ": " : "", account.getExperience()),
8076
false);
8177
});
8278
return builder.build();

src/main/java/net/javadiscord/javabot/systems/help/commands/subcommands/HelpAccountSubcommand.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import net.dv8tion.jda.api.EmbedBuilder;
44
import net.dv8tion.jda.api.entities.Guild;
55
import net.dv8tion.jda.api.entities.MessageEmbed;
6+
import net.dv8tion.jda.api.entities.Role;
67
import net.dv8tion.jda.api.entities.User;
78
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
89
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
@@ -15,10 +16,10 @@
1516
import net.javadiscord.javabot.systems.help.HelpExperienceService;
1617
import net.javadiscord.javabot.systems.help.model.HelpAccount;
1718
import net.javadiscord.javabot.systems.help.model.HelpTransaction;
19+
import net.javadiscord.javabot.util.Pair;
1820
import net.javadiscord.javabot.util.StringUtils;
1921

2022
import java.sql.SQLException;
21-
import java.util.Map;
2223

2324
/**
2425
* Handles commands to show information about how a user has been thanked for
@@ -73,9 +74,9 @@ private String formatTransactionHistory(long userId) {
7374

7475
private String formatExperience(Guild guild, HelpAccount account) {
7576
double current = account.getExperience() - account.getLastExperienceGoal(guild);
76-
Map.Entry<Long, Double> role = account.getNextExperienceGoal(guild);
77-
double goal = role.getValue() - account.getLastExperienceGoal(guild);
78-
StringBuilder sb = new StringBuilder(String.format("<@&%s>: ", role.getKey()));
77+
Pair<Role, Double> role = account.getNextExperienceGoal(guild);
78+
double goal = role.second() - account.getLastExperienceGoal(guild);
79+
StringBuilder sb = new StringBuilder(String.format("%s: ", role.first().getAsMention()));
7980
if (goal > 0) {
8081
sb.append(String.format("%.2f XP / %.2f XP (%.2f%%)", current, goal, (current / goal) * 100))
8182
.append("\n")

src/main/java/net/javadiscord/javabot/systems/help/model/HelpAccount.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import lombok.Data;
44
import net.dv8tion.jda.api.entities.Guild;
5+
import net.dv8tion.jda.api.entities.Role;
56
import net.javadiscord.javabot.Bot;
7+
import net.javadiscord.javabot.util.Pair;
68

79
import java.util.Comparator;
810
import java.util.Map;
@@ -24,17 +26,17 @@ public void updateExperience(double change) {
2426
* Tries to get the current experience role.
2527
*
2628
* @param guild The current {@link Guild}.
27-
* @return An {@link java.util.Map.Entry} that has the role's id as its key, and the experience needed as its value.
29+
* @return A {@link Pair} with both the Role, and the experience needed.
2830
*/
29-
public Map.Entry<Long, Double> getCurrentExperienceGoal(Guild guild) {
31+
public Pair<Role, Double> getCurrentExperienceGoal(Guild guild) {
3032
Map<Long, Double> experienceRoles = Bot.config.get(guild).getHelp().getExperienceRoles();
3133
Map.Entry<Long, Double> highestExperience = Map.entry(0L, 0.0);
3234
for (Map.Entry<Long, Double> entry : experienceRoles.entrySet()) {
3335
if (experience > entry.getValue() && entry.getValue() > highestExperience.getValue()) {
3436
highestExperience = entry;
3537
}
3638
}
37-
return highestExperience;
39+
return new Pair<>(guild.getRoleById(highestExperience.getKey()), highestExperience.getValue());
3840
}
3941

4042
/**
@@ -57,12 +59,15 @@ public double getLastExperienceGoal(Guild guild) {
5759
* @param guild The current {@link Guild}.
5860
* @return An {@link java.util.Map.Entry} that has the role's id as its key, and the experience needed as its value.
5961
*/
60-
public Map.Entry<Long, Double> getNextExperienceGoal(Guild guild) {
62+
public Pair<Role, Double> getNextExperienceGoal(Guild guild) {
6163
Map<Long, Double> experienceRoles = Bot.config.get(guild).getHelp().getExperienceRoles();
6264
Optional<Map.Entry<Long, Double>> experienceOptional = experienceRoles.entrySet()
6365
.stream()
6466
.filter(r -> r.getValue() > experience)
6567
.findFirst();
66-
return experienceOptional.orElse(Map.entry(experienceRoles.keySet().stream().max(Comparator.naturalOrder()).orElse(0L), 0.0));
68+
Map.Entry<Long, Double> entry = experienceOptional.orElseGet(() ->
69+
Map.entry(experienceRoles.keySet().stream().max(Comparator.naturalOrder()).orElse(0L), 0.0)
70+
);
71+
return new Pair<>(guild.getRoleById(entry.getKey()), entry.getValue());
6772
}
6873
}

0 commit comments

Comments
 (0)