diff --git a/.gradle/2.13/taskArtifacts/cache.properties.lock b/.gradle/2.13/taskArtifacts/cache.properties.lock
index f0bb6bc..cae8b17 100644
Binary files a/.gradle/2.13/taskArtifacts/cache.properties.lock and b/.gradle/2.13/taskArtifacts/cache.properties.lock differ
diff --git a/.gradle/2.13/taskArtifacts/fileHashes.bin b/.gradle/2.13/taskArtifacts/fileHashes.bin
index eaeec7e..91b6831 100644
Binary files a/.gradle/2.13/taskArtifacts/fileHashes.bin and b/.gradle/2.13/taskArtifacts/fileHashes.bin differ
diff --git a/.gradle/2.13/taskArtifacts/fileSnapshots.bin b/.gradle/2.13/taskArtifacts/fileSnapshots.bin
index 73133bb..64a422e 100644
Binary files a/.gradle/2.13/taskArtifacts/fileSnapshots.bin and b/.gradle/2.13/taskArtifacts/fileSnapshots.bin differ
diff --git a/.gradle/2.13/taskArtifacts/taskArtifacts.bin b/.gradle/2.13/taskArtifacts/taskArtifacts.bin
index 85463a5..93d2777 100644
Binary files a/.gradle/2.13/taskArtifacts/taskArtifacts.bin and b/.gradle/2.13/taskArtifacts/taskArtifacts.bin differ
diff --git a/.idea/libraries/Gradle__mysql_mysql_connector_java_5_1_38.xml b/.idea/libraries/Gradle__mysql_mysql_connector_java_5_1_38.xml
index b66e8b8..1bad8c9 100644
--- a/.idea/libraries/Gradle__mysql_mysql_connector_java_5_1_38.xml
+++ b/.idea/libraries/Gradle__mysql_mysql_connector_java_5_1_38.xml
@@ -2,11 +2,8 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__net_sf_trove4j_trove4j_3_0_3.xml b/.idea/libraries/Gradle__net_sf_trove4j_trove4j_3_0_3.xml
index 43ec32e..7e69dc8 100644
--- a/.idea/libraries/Gradle__net_sf_trove4j_trove4j_3_0_3.xml
+++ b/.idea/libraries/Gradle__net_sf_trove4j_trove4j_3_0_3.xml
@@ -2,8 +2,11 @@
+
-
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/Rixa_main.iml b/.idea/modules/Rixa_main.iml
index 7606438..6626c8d 100644
--- a/.idea/modules/Rixa_main.iml
+++ b/.idea/modules/Rixa_main.iml
@@ -1,7 +1,7 @@
-
+
diff --git a/.idea/modules/Rixa_test.iml b/.idea/modules/Rixa_test.iml
index 1f38323..3da79b3 100644
--- a/.idea/modules/Rixa_test.iml
+++ b/.idea/modules/Rixa_test.iml
@@ -1,7 +1,7 @@
-
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 6046760..6ed53bc 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,12 +2,8 @@
-
-<<<<<<< HEAD
-=======
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
+
@@ -25,7 +21,6 @@
-
@@ -45,135 +40,45 @@
-<<<<<<< HEAD
-
-
-
-
-
-=======
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-
-
-
-
-<<<<<<< HEAD
-
-
-
-
-
-=======
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -232,7 +137,7 @@
@@ -655,7 +560,6 @@
@@ -724,19 +623,11 @@
-<<<<<<< HEAD
-=======
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
@@ -756,15 +647,9 @@
-<<<<<<< HEAD
-=======
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-<<<<<<< HEAD
@@ -843,6 +728,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -857,110 +752,7 @@
-=======
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
+
@@ -996,171 +788,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $PROJECT_DIR$/.gradle/2.13/taskArtifacts/cache.properties.lock
- $PROJECT_DIR$/.gradle/2.13/taskArtifacts/fileHashes.bin
- $PROJECT_DIR$/.gradle/2.13/taskArtifacts/fileSnapshots.bin
- $PROJECT_DIR$/.gradle/2.13/taskArtifacts/taskArtifacts.bin
- $PROJECT_DIR$/.idea/modules/Rixa_main.iml
- $PROJECT_DIR$/.idea/modules/Rixa_test.iml
- $PROJECT_DIR$/.idea/workspace.xml
- $PROJECT_DIR$/build.gradle
- $PROJECT_DIR$/build/tmp/jar/MANIFEST.MF
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/BatchMoveCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/MusicCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/PingCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/ServerInfoCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandHandler.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/DeleteMessagesCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/MuteCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/PurgeMessagesCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/filemanager/ConfigManager.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/filemanager/LanguageManager.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/events/BotEvent.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MemberEvent.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/extras/polls/Poll.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaGuild.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/levels/LevelsModule.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/reactions/react/ConfigReaction.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/reactions/react/HelpReaction.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/MessageBuilder.java
-
-
-
-
-
-
-
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/AddRoleCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/RemoveRoleCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/TwitterCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/LevelsCommand.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/events/VoiceChannel.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/user/UserData.java
-
-
-
-
-
-
-
- $PROJECT_DIR$/.idea/libraries/Gradle__com_mashape_unirest_unirest_java_1_4_9.xml
- $PROJECT_DIR$/.idea/libraries/Gradle__com_neovisionaries_nv_websocket_client_2_0.xml
- $PROJECT_DIR$/.idea/libraries/Gradle__org_apache_httpcomponents_httpasyncclient_4_1_1.xml
- $PROJECT_DIR$/.idea/libraries/Gradle__org_apache_httpcomponents_httpcore_nio_4_4_4.xml
- $PROJECT_DIR$/.idea/libraries/Gradle__org_apache_httpcomponents_httpmime_4_5_2.xml
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/Thunderbolt.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/exceptions/FileLoadException.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/io/ThunderFile.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/io/ThunderboltThreadPool.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/ItemList.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/JSONArray.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/JSONAware.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/JSONException.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/JSONObject.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/JSONStreamAware.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/JSONString.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/json/JSONTokener.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/data/thunderbolt/utils/Validator.java
- $PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaManager.java
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1174,7 +801,25 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1192,9 +837,8 @@
-
-
+
@@ -1212,29 +856,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1252,80 +875,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -1333,7 +901,6 @@
-
@@ -1348,60 +915,6 @@
-
-
-
-
-
-
-
-<<<<<<< HEAD
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-=======
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1422,40 +935,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -1463,7 +948,6 @@
-
@@ -1491,27 +975,88 @@
-
-
+
-
+
-
+
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1556,14 +1101,6 @@
-
- 1501261410126
-
-
-
- 1501261410126
-
-
@@ -1579,84 +1116,25 @@
-
+
-<<<<<<< HEAD
-=======
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-<<<<<<< HEAD
-
+
+
+
-
-=======
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
@@ -1685,10 +1163,6 @@
-
-
-
-
@@ -1700,37 +1174,6 @@
-<<<<<<< HEAD
-=======
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1748,11 +1191,8 @@
-
-
-
-
-
+
+
@@ -1821,17 +1261,32 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
@@ -1846,7 +1301,6 @@
-<<<<<<< HEAD
@@ -1858,14 +1312,6 @@
-=======
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
@@ -1883,21 +1329,13 @@
-
+
-
-
-
-
-
-
-
-
-
+
+
-
@@ -1905,7 +1343,13 @@
-
+
+
+
+
+
+
+
@@ -1920,14 +1364,6 @@
-
-
-
-
-
-
-
-<<<<<<< HEAD
@@ -1935,73 +1371,6 @@
-=======
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-
-
-
-
-<<<<<<< HEAD
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2059,64 +1428,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2130,14 +1441,6 @@
-
-
-
-
-
-
-
-
@@ -2165,48 +1468,149 @@
-=======
-
-
-
-
-
-
-
-
-
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-
-
-
-
-<<<<<<< HEAD
-
-
-=======
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
-
-<<<<<<< HEAD
-=======
-
-
->>>>>>> 72304bb14ceff865c5e525ea00e77760a05af553
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/me/savvy/rixa/Rixa.java b/src/main/java/me/savvy/rixa/Rixa.java
index 0bc5148..566e260 100644
--- a/src/main/java/me/savvy/rixa/Rixa.java
+++ b/src/main/java/me/savvy/rixa/Rixa.java
@@ -103,8 +103,9 @@ public class Rixa {
new DeleteMessagesCommand(), new PingCommand(), new PurgeMessagesCommand(),
new BatchMoveCommand(), new MuteCommand(), new MusicCommand(),
new ConfigCommand(), new UrbanDictionaryCommand(), new YoutubeCommand(),
- new AddRoleCommand(), new RemoveRoleCommand(), new LevelsCommand()});
- register(new React[] {new HelpReaction(), new ConfigReaction()});
+ new AddRoleCommand(), new RemoveRoleCommand(), new LevelsCommand(),
+ new LeaderboardCommand()});
+ register(new React[] {new HelpReaction(), new ConfigReaction() });
data = new Data(DataType.SQL);
}
diff --git a/src/main/java/me/savvy/rixa/commands/general/LeaderboardCommand.java b/src/main/java/me/savvy/rixa/commands/general/LeaderboardCommand.java
new file mode 100644
index 0000000..0be2205
--- /dev/null
+++ b/src/main/java/me/savvy/rixa/commands/general/LeaderboardCommand.java
@@ -0,0 +1,30 @@
+package me.savvy.rixa.commands.general;
+
+import me.savvy.rixa.commands.handlers.Command;
+import me.savvy.rixa.commands.handlers.CommandExec;
+import me.savvy.rixa.guild.RixaGuild;
+import me.savvy.rixa.utils.MessageBuilder;
+import net.dv8tion.jda.core.entities.ChannelType;
+import net.dv8tion.jda.core.entities.Message;
+import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
+
+public class LeaderboardCommand implements CommandExec {
+
+ @Override
+ @Command(mainCommand = "leaderboard",
+ description = "Check your ping!",
+ aliases = {"leaderboards", "levels"},
+ channelType = ChannelType.TEXT)
+ public void execute(GuildMessageReceivedEvent event) {
+ RixaGuild rixaGuild = RixaGuild.getGuild(event.getGuild());
+ if (!rixaGuild.getLevelsModule().isEnabled()) {
+ new MessageBuilder("Levels are not enabled on this server!").setColor(event.getMember().getColor()).queue(event.getChannel());
+ return;
+ }
+ Message message = event.getChannel().sendMessage
+ (rixaGuild.getLevelsModule().leaderboard
+ (event.getMember(), 0).getBuilder().build()).complete();
+ message.addReaction("\u2B05").complete();
+ message.addReaction("\u27A1").complete();
+ }
+}
diff --git a/src/main/java/me/savvy/rixa/commands/general/LevelsCommand.java b/src/main/java/me/savvy/rixa/commands/general/LevelsCommand.java
index 7192c0d..9a67e67 100644
--- a/src/main/java/me/savvy/rixa/commands/general/LevelsCommand.java
+++ b/src/main/java/me/savvy/rixa/commands/general/LevelsCommand.java
@@ -1,7 +1,9 @@
package me.savvy.rixa.commands.general;
+import me.savvy.rixa.Rixa;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
+import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.user.UserData;
import me.savvy.rixa.utils.MessageBuilder;
@@ -10,6 +12,8 @@ import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import java.io.IOException;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.*;
/**
@@ -23,21 +27,33 @@ public class LevelsCommand implements CommandExec {
channelType = ChannelType.TEXT)
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaGuild.getGuild(event.getGuild());
- if(!rixaGuild.getLevelsModule().isEnabled()) {
+ if (!rixaGuild.getLevelsModule().isEnabled()) {
new MessageBuilder("Levels are not enabled on this server!").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
UserData data = rixaGuild.getLevelsModule().getUserData(event.getAuthor().getId());
-// Map newMap = new HashMap<>();
-// rixaGuild.getLevelsModule().getUserData().forEach((s, userData) -> {
-// newMap.put(userData, userData.getExperience());
-// });
-// sortHashMapByValues(newMap);
+ String query = "SELECT * FROM `levels` WHERE `guild_id` = '" + event.getGuild().getId() + "' ORDER BY `experience` DESC";
+ ResultSet rs = Rixa.getDbManager().executeQuery(query);
+ int rowNumber = 0;
+ String rank = "Not found.";
+ try {
+ rs.beforeFirst();
+ while (rs.next()) {
+ rowNumber++;
+ if (rs.getString("user_id").equalsIgnoreCase(event.getAuthor().getId())) {
+ rank = String.valueOf(rowNumber);
+ break;
+ }
+ }
+ rs.close();
+ } catch(SQLException ignored) {
+ ignored.printStackTrace();
+ }
new MessageBuilder()
.setAuthor(event.getAuthor().getName(), event.getAuthor().getEffectiveAvatarUrl(), event.getAuthor().getEffectiveAvatarUrl())
.setTitle(event.getAuthor().getName() + "'s level")
.setColor(event.getMember().getColor())
- .addField("Rank", "0", true)
+ .addField("Rank", rank, true)
.addField("Level", String.valueOf(data.getLevel()), true)
.addField("Exp Needed",
data.getRemainingExperience() + "/" + data.getNeededXP
@@ -45,32 +61,4 @@ public class LevelsCommand implements CommandExec {
.addField("Total Exp", String.valueOf(data.getExperience()), false)
.queue(event.getChannel());
}
-
- public LinkedHashMap sortHashMapByValues(
- Map passedMap) {
- List mapKeys = new ArrayList<>(passedMap.keySet());
- List mapValues = new ArrayList<>(passedMap.values());
- Collections.sort(mapValues);
- //Collections.sort(mapKeys);
-
-
- LinkedHashMap sortedMap =
- new LinkedHashMap<>();
-
- for (Integer val : mapValues) {
- Iterator keyIt = mapKeys.iterator();
-
- while (keyIt.hasNext()) {
- UserData key = keyIt.next();
- Integer comp1 = passedMap.get(key);
-
- if (comp1.equals(val)) {
- keyIt.remove();
- sortedMap.put(key, val);
- break;
- }
- }
- }
- return sortedMap;
- }
}
diff --git a/src/main/java/me/savvy/rixa/commands/general/PingCommand.java b/src/main/java/me/savvy/rixa/commands/general/PingCommand.java
index 5f19692..7762ed8 100644
--- a/src/main/java/me/savvy/rixa/commands/general/PingCommand.java
+++ b/src/main/java/me/savvy/rixa/commands/general/PingCommand.java
@@ -12,6 +12,7 @@ import java.time.temporal.ChronoUnit;
* Created by Timber on 5/23/2017.
*/
public class PingCommand implements CommandExec {
+
@Override
@Command(mainCommand = "ping",
description = "Check your ping!",
diff --git a/src/main/java/me/savvy/rixa/guild/RixaGuild.java b/src/main/java/me/savvy/rixa/guild/RixaGuild.java
index f1165c4..2282ecc 100644
--- a/src/main/java/me/savvy/rixa/guild/RixaGuild.java
+++ b/src/main/java/me/savvy/rixa/guild/RixaGuild.java
@@ -92,6 +92,8 @@ public class RixaGuild {
("SELECT `" + permission.toString().toUpperCase() + "` FROM `permissions` WHERE `role_id` = ?");
ps.setString(1, role.getId());
ResultSet rs = db.getObject(ps);
+ ps.close();
+ rs.close();
return rs.getBoolean(permission.toString().toUpperCase());
} catch (SQLException e) {
e.printStackTrace();
diff --git a/src/main/java/me/savvy/rixa/modules/levels/LevelsModule.java b/src/main/java/me/savvy/rixa/modules/levels/LevelsModule.java
index 3d219ba..2442ba7 100644
--- a/src/main/java/me/savvy/rixa/modules/levels/LevelsModule.java
+++ b/src/main/java/me/savvy/rixa/modules/levels/LevelsModule.java
@@ -8,12 +8,13 @@ import me.savvy.rixa.enums.Result;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.user.UserData;
import me.savvy.rixa.modules.RixaModule;
+import me.savvy.rixa.utils.MessageBuilder;
+import net.dv8tion.jda.core.entities.Member;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
/**
* Created by Timber on 5/23/2017.
@@ -30,6 +31,32 @@ public class LevelsModule implements RixaModule {
load();
}
+ public MessageBuilder leaderboard(Member member, int page) {
+ int sizePerPage = 4;
+ int maxPages = userData.size() / sizePerPage + (userData.size() % sizePerPage > 0 ? 1 : 0);
+ if(page < 0) {
+ page = 0;
+ }
+ if(page > maxPages - 2) {
+ page = maxPages - 3;
+ }
+ int from = Math.max(0, page * sizePerPage);
+ int to = Math.min(userData.size(), (page + 2) * sizePerPage);
+ List userList = new ArrayList<>(userData.values()).subList(from, to);
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int i = 0; i < userList.size(); i++) {
+ UserData user = userData.get(i);
+ stringBuilder.append(i)
+ .append(1).append(" ").append(user.getUser().getName())
+ .append("#").append(user.getUser().getDiscriminator())
+ .append(" (Lvl. ").append(user.getLevel()).append(")")
+ .append("\n");
+ }
+ MessageBuilder builder = new MessageBuilder(stringBuilder.toString());
+ builder.footer("Page: (" + page + " / " + (maxPages - 2) + ")", member.getGuild().getIconUrl());
+ return builder.setColor(member.getColor()).setTitle(String.format("Leaderboard: %s", member.getGuild().getName()));
+ }
+
@Override
public String getName() {
return "Levels";
@@ -101,6 +128,6 @@ public class LevelsModule implements RixaModule {
public void setEnabled(boolean enabled) {
this.enabled = enabled;
- Rixa.getData().update("modules", "enabled", "guild_id", enabled, rixaGuild.getGuild().getId());
+ Rixa.getData().update("modules", "levels", "guild_id", enabled, rixaGuild.getGuild().getId());
}
}