Skip to content

Commit 76b7769

Browse files
committed
Add leveling role add/remove reasons and make them run in exact order
1 parent e0ad201 commit 76b7769

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

src/main/java/tk/bluetree242/discordsrvutils/leveling/PlayerStats.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@
2525
import github.scarsz.discordsrv.DiscordSRV;
2626
import github.scarsz.discordsrv.dependencies.jda.api.entities.Member;
2727
import github.scarsz.discordsrv.dependencies.jda.api.entities.Role;
28+
import github.scarsz.discordsrv.dependencies.jda.api.requests.RestAction;
2829
import tk.bluetree242.discordsrvutils.DiscordSRVUtils;
2930
import tk.bluetree242.discordsrvutils.exceptions.UnCheckedSQLException;
3031

3132
import java.sql.Connection;
3233
import java.sql.PreparedStatement;
3334
import java.sql.SQLException;
35+
import java.util.ArrayList;
36+
import java.util.Collection;
3437
import java.util.UUID;
3538
import java.util.concurrent.CompletableFuture;
3639

@@ -103,14 +106,16 @@ public CompletableFuture<Boolean> setXP(int xp) {
103106
LevelingManager manager = LevelingManager.get();
104107
Member member = core.getGuild().retrieveMemberById(id).complete();
105108
if (member == null) return true;
109+
Collection actions = new ArrayList<>();
106110
for (Role role : manager.getRolesToRemove(level)) {
107111
if (member.getRoles().contains(role))
108-
core.getGuild().removeRoleFromMember(member, role).queue();
112+
actions.add(core.getGuild().removeRoleFromMember(member, role).reason("User Leveled Up"));
109113
}
110114
Role toAdd = manager.getRoleForLevel(level);
111115
if (toAdd != null) {
112-
core.getGuild().addRoleToMember(member, toAdd).queue();
116+
actions.add(core.getGuild().addRoleToMember(member, toAdd).reason("User Leveled Up"));
113117
}
118+
RestAction.allOf(actions).queue();
114119
return true;
115120
}
116121
PreparedStatement p1 = conn.prepareStatement("UPDATE leveling SET XP=? WHERE UUID=?");

src/main/java/tk/bluetree242/discordsrvutils/listeners/discordsrv/DiscordSRVListener.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,16 @@
3030
import github.scarsz.discordsrv.api.events.DiscordReadyEvent;
3131
import github.scarsz.discordsrv.dependencies.jda.api.entities.Member;
3232
import github.scarsz.discordsrv.dependencies.jda.api.entities.Role;
33+
import github.scarsz.discordsrv.dependencies.jda.api.requests.RestAction;
3334
import org.bukkit.Bukkit;
3435
import tk.bluetree242.discordsrvutils.DiscordSRVUtils;
3536
import tk.bluetree242.discordsrvutils.exceptions.StartupException;
3637
import tk.bluetree242.discordsrvutils.leveling.LevelingManager;
3738

39+
import java.util.ArrayList;
40+
import java.util.Collection;
41+
import java.util.List;
42+
3843
public class DiscordSRVListener {
3944
private final DiscordSRVUtils core = DiscordSRVUtils.get();
4045

@@ -59,14 +64,16 @@ public void onLink(AccountLinkedEvent e) {
5964
if (id == null) return;
6065
Member member = core.getGuild().retrieveMemberById(id).complete();
6166
if (member == null) return;
67+
Collection actions = new ArrayList<>();
6268
for (Role role : manager.getRolesToRemove(stats.getLevel())) {
6369
if (member.getRoles().contains(role))
64-
core.getGuild().removeRoleFromMember(member, role).queue();
70+
actions.add(core.getGuild().removeRoleFromMember(member, role).reason("User should not have this role"));
6571
}
6672
Role toAdd = manager.getRoleForLevel(level);
6773
if (toAdd != null && !member.getRoles().contains(toAdd)) {
68-
core.getGuild().addRoleToMember(member, toAdd).queue();
74+
actions.add(core.getGuild().addRoleToMember(member, toAdd).reason("Account Linked"));
6975
}
76+
RestAction.allOf(actions).queue();
7077
});
7178

7279
}
@@ -81,7 +88,7 @@ public void onUnlink(AccountUnlinkedEvent e) {
8188
if (member != null) {
8289
for (Role role : manager.getRolesToRemove(null)) {
8390
if (member.getRoles().contains(role))
84-
core.getGuild().removeRoleFromMember(member, role).queue();
91+
core.getGuild().removeRoleFromMember(member, role).reason("Account Unlinked").queue();
8592
}
8693
}
8794
});

0 commit comments

Comments
 (0)