From 476658117705992dc59caf3c06440ce8b17a228d Mon Sep 17 00:00:00 2001 From: Savvy Date: Tue, 15 Aug 2017 00:01:24 -0400 Subject: [PATCH] Added rank/leaderboard command (needs fixing). --- .../2.13/taskArtifacts/cache.properties.lock | Bin 17 -> 17 bytes .gradle/2.13/taskArtifacts/fileHashes.bin | Bin 41971 -> 42195 bytes .gradle/2.13/taskArtifacts/fileSnapshots.bin | Bin 1040007 -> 1040007 bytes .gradle/2.13/taskArtifacts/taskArtifacts.bin | Bin 35285 -> 35285 bytes ...dle__mysql_mysql_connector_java_5_1_38.xml | 5 +- .../Gradle__net_sf_trove4j_trove4j_3_0_3.xml | 5 +- .idea/modules/Rixa_main.iml | 2 +- .idea/modules/Rixa_test.iml | 2 +- .idea/workspace.xml | 1248 +++++------------ src/main/java/me/savvy/rixa/Rixa.java | 5 +- .../commands/general/LeaderboardCommand.java | 30 + .../rixa/commands/general/LevelsCommand.java | 58 +- .../rixa/commands/general/PingCommand.java | 1 + .../java/me/savvy/rixa/guild/RixaGuild.java | 2 + .../rixa/modules/levels/LevelsModule.java | 33 +- 15 files changed, 422 insertions(+), 969 deletions(-) create mode 100644 src/main/java/me/savvy/rixa/commands/general/LeaderboardCommand.java diff --git a/.gradle/2.13/taskArtifacts/cache.properties.lock b/.gradle/2.13/taskArtifacts/cache.properties.lock index f0bb6bc321921ebcba4349bb57be154fe51a0177..cae8b1714bf3ad2ff59edf6b0644930e43e670a9 100644 GIT binary patch literal 17 VcmZRM`)gkj_?x4T0Sp|z0{}DI1up;q literal 17 UcmZRM`)gkj_?x4T0Ss(>05d2AfB*mh diff --git a/.gradle/2.13/taskArtifacts/fileHashes.bin b/.gradle/2.13/taskArtifacts/fileHashes.bin index eaeec7eb123354584a2e587dbfc6e8365a697cb4..91b68317ae4c9ecfcf807f0cddfd7bb9c674e4a1 100644 GIT binary patch delta 1619 zcmXYxc}&x17{}W}xv}La?Ub$s>c#+pjbk$mi%S%cd$<5@YziSD8pn-5ISedLScLkl zAT&i71duH<_;HlB6v++{aVRc}iW3Lu#A8l~7^Y);kN*C8@;u+q_j#Z9_^nNHu3zFb zBy(!}m9Z}UIkQ5xh6xkpa(P?Q=DL3II?p0sr*}t>*or^1N7(gf@l1s&sb<=?JJ|3N zJ-0XQIrzksOlNxhq!#=L^;MsLqOR?t*^V{lV$h#f?CJiA2x}%j;)$pElJ8&&vpct% zZMWn*oIqv#BsigZ4Oa4;QF*u?*!cmdI%1?%hud(dQUuBQQ7EacGa=q2Ihl_U?IJ7? zWROd%tY!FPpAdoyaFtnrm;!7#8ceI^fu!me<-|=z@PDAE_qdRGQCq=99dzqZ((sjsy94Xh!0>|*m+`4y znNU!|J5fWa@l8rOijcpE2~+;ck)|B3VS5~C%gcQ?I(v8MjR$m+qn=bL=pvKEd|iz; zt6xQvYzeuSAAKeOD^(J1H~F+xb${@$ZRcbTyMm{d(W}H~dv`z9vro>r;C9fWaz-XY zrPL&JmF)Peik#OLSWyL`>S#NyI`74ZbXHz1u5R;ucqFUDe{zxpVY^hy5B=ibrB+$Wjc4lmll5tz5W@Pb z=}c`|n2-i#F1wjcS@l}{oPHs$^JzY{9TAw;^fwWuLz+cay}0MH^>G))5OBtEQqk~N24j~;{IGo_YO}+E#Z7)!whs!@^3-TH#`_wx@y$b{~ z^Lrmb0yJz!UC8+Idf^D@H!rMu6gkp{!-Le@MvohMK0oc)BCp#e(8Ol@-cF3(AR-?N Mo@rI4KRwI;f2k-xF#rGn delta 1411 zcmXYwdrXs87{>dRRtl?HS4vwPw1VBJptu4O;*7Y9Ln%_j3^H^=j5ESAVTcTRO?1M* zDBWx2Vv2TRvgxvj-^Pq&OvaY3weJGzeKw>f?C!Crv^k`y@xcgw5P=N5s?)j((EB8j9yK z1wq}d7uYQg#~5)?=lhRGK1l`qt+m_A#xSWHBT)%F{z~eFKSmDEzUVRJE3b<@4K~O{lPY6AJ3f7x(j6VeSN)_Cw zC$sQ>3jJohcla`;my4lhrwr!J$=EvrOD%agMhPQ3ba;3X4VWxAC$bH)%Ty4y=n)-h zqqGzVz1fQCh#xAggq{XFUCcqEAs5GlzXZmnQm^4}I`P?E>ym%0$y4{8Es69b+>10# z^#-{ml{P#FpAi~tcw_D`L=E}ulxI_4|iu1KT2;49n> zTh)Gm4-?h0xG}K}9#qS~@_r)wxWghuVWHE|(seR@l_Z_#F;qVq@mSBAx%Sk#S<;DC zr=UsV3%C=u$jb7pkIx*Y2s6+QRU0&Hj6#`cnoK1UMD@Kw-^O^?WE0}k?I zdLZh^M{1CvYSLD$qU3DZ-{#uSZ+DAMS5 zf4r|kLpOOZsnoVKj$GIux`)vgTn#OXj*h#OQ2kQ=*7LlVX3ks7_FQ_{ z`hX5S{FKtt(}gk(2 zO>%KTwETR>^nmTWZ&SaBzrv{3sBA!h@u7 Z_GA2%g447ZznT;?E|O8Ou<_#c{{gxo1^WO1 diff --git a/.gradle/2.13/taskArtifacts/fileSnapshots.bin b/.gradle/2.13/taskArtifacts/fileSnapshots.bin index 73133bbb436216a281483bdb358d218223ee43a5..64a422e02d2b0ae44cf799e09dac44abbec18b95 100644 GIT binary patch delta 4950 zcmeHL3s4o;8Qybt@B6i@0{8OJdjSO>Ac6wQ@HAH>pacmj4q7e`6_mH2Kx{!!N`wH} z!a+zCABY&mBGHqoL~neQ00vAmF(ZnoXc)1gfD#*PyIw+?HpDSDHl3t9^Us|5&%ggU z`+evC&Oe*i=$Y5(S#0J+oKO%1q2!Dpz{4{H;c>_?rjRK?co`eUJe0zXO$=kvo09s4 zZc28iayr|ibfBxX0bcEs8hQ+qAl9FyRchP1kNg@w!-ww=JEvUw``6E*wtDL?r@qUr z!aX7%HEXMKWjCn8>B|*2=C&R@x6v>Go!!|U)ogaQsgjK`UC(}Ls-z$8YVJ+&J$=^@ zz+1AM6`HAOGJNIUgT1a}4Nggp3#&GZQP_Y5YYOa^8GN9;gDp2xv+ZUMtkPU*YuW96 zXJz5s$l+xU7LM%8+J9pEl%iwq2ETM%F>7nCVRhyvUeoeR9YV-O`r&L-`bS=v-p~^v zQ*~Jz{Nmc9BmNoA=X>^;uM08w$>siRqPZ)3%G`nWoM}Bi&ntE1aH3DNY>&B`U2Wk& zN2(e!FD&uk8zzK*bzzGwTy2x8k_wXKtF;EFq@{Z#eR7(A%VwYHCx^4dMzZ&~;EY|W z+HFf03}Z)KbQlTFG>;Dn3Vtv+9K5YMM?D^^$Abh1hQLx(JWug=siC38x_Zv5e~DW9bZ-{|2%|)B$Diz$W*ZD^DCQia8l- znRadI2tY`Gkr#>+SCBQ-^KJ7L8GZ72aYN|Xv%zMKO}$04##O$+E@9wnh}lXeq2d%u zgTo6zD!_NH!&MnVr#240wqf`X2VW?NLHAYStfzalq8K`ojo_~?ve?%m+F<;~o!VCs zQ!n0xrB|pR2}8f;SNwsy{^sdL0p=002fUiT1u^0v9(bB*G0NHjm?;6#x~S;nhy-17 z)ZB!)I9+^{edJnQN(xCwZ*@D_{V)}?$Dh>oTcwS`Gd_fY(jS4GOdZnQ>0oSh{^`uiFYUr=f0J z-~WWUfm2`IW@hu=InXAs+m+Ya`vS~?K%CS}HAw|OU!J04&IGuk zK)5$fP(u*f8n^}PjpX(Kah13m7n)KO#PJ@IX!1KXiMg6=5l(0UbLWJGq(mpDgr(@x zV%CM($2o>2M<*tv#H>q5PDj~gzzp@9P!o}+TNH)8V#!-zLf5ljVoTOpp-mFth)Z4< z#RIhA3+m=G>V6U@+v)Nf5M8}ZjlqvU6dM6_*pWXAdDR2QAEE)w8SyqAT6-4KxTjY# z|Cw5iIIRvt3o{heh*7~LEW0HBcr@w0-yxNesC~Vt@Tq=_C8MhY;?$uNtD9vF9P(nG zF<*PcW=fg_F$u!0ILAx07YO!o^z8fD(es1q;pOvVD#7+b-dyl4Dxmf#W_Ai_i0L?P0FBvtvEP5KKEC+=&f`1fQOAF&XM7Y4N$n&XO#e!} z3*yTcMAt70eYhLW#~0=zPHgJ%LL=#JK3-cQx<)>qo7^aiQRhX7CBY6x7VyrcX;wB|18oS5T(+nX16c>)`e;7$|mgTPd%f?;0n0}pzt@v zLHJmWULY_|^m{C;IoUQt9C_U;f20URD6y(GXTrzLj*2*HfI z=zWOd#XKd{+MpyE^g~q|U}}&TyrNG$(_iR)f*`z4z?}aP7INs+@_7@N3yU+_EhCdF z?8@AqhXc%UFrfGbo*2mS)c&cw?!6}wPc{aY-F8{!T=*{lf!~V$0-$#@o4wx&C3-8Q zs4Y`Mk5czGC} zkR!2>Z0EFO{!{y<>d9z5jzLct;=x;EDm=G(82x@>to`NSfJZMZD2tKi9ccUSeaa}( zQowKxkKh-_$7TT?8j}mGmQ^Juxdg;|yMNw;HGdT8!9QjHr=>}=MIMw#FOza6<4n%| J>QJoD{Rf|4hT;GK delta 3874 zcmchZ3s@B88prqhW`^CF9d>3BVs}9VF^-Dj3SPLR!s;5{xM)h6T?XHhDEef*~#Y|&pyxh>^%ROcfOhb z_x}FhWbGS~wQq#Q#SbNnQz#TVc_1SL_v}-mdPF#nmVd z`5@<$QM;VKwVhCB4wZJg`b(iyWePr@eUZ>tz7-N}m z(N>{Qd`u30jm#wY4Bd+u*HRhVF7CU@K(Q}6F_d@`x>O(k&W%c+pp;{|2Z#6!NSof{ zZr$OJp{@xBAP}d~Tkwu2QIG~Eq@b;n#r^H9mv_k5pEzAuH`~!~jRCmR=#ZyUcG+(v zg(Z|91j0>}!N9w2w7^0kgA)-X_MsnFlK!pq9FjYb7D@FM)&j$=^lA*l2GIoqNy5xw z5}Hg+A)+UCAr`ZI(Tq%HAw<4SCDTxM-@D%C}6R@Ga|{jL2^}6}?2R>A7^6 z9YcB2#NLfwB)0jqO+1};GCXPFjgu`4lIvle8{Mwz^nqO6EHsHDoO?zcZo6@6|NBzg zW6JR-?>(O@CdM}W1Cbx{4HB`PYJ`h(sdMPQWkj~DkraWS>%4_fgr zo1UqzDoecVH1m~$+U|2kL8J#8g-QEyTt`0SsCR)2parBAUkN(Zu4n7e<3E*EOh}zQ z6t2x@b|P}X#I1$&C+Mllhgb>Uy@1TLBSUJgYs4(SJPQ2s=rveJC68?$F*BizE_k*| zXe>|fYAKkpoDZ~hl(QE4l`;b`6lG#Fg0K2BQw>^i!kw@vyfFW}(YG?kTx)r5jI{2p z$sI524^^Q|wubnerPa!ZUhW`De4(s*$ztRkrPi!Y?BBY+>0bNgV=?&XyguKoXtb0X z>YrF{^zb5b!#zXXccLuujr5=0vgZ}=-cdL0gJ{!|qn)0D>}e)`xE9Koz)U8VDwVo& z95bDVQO=A$Vk$XutCb+J55(`XkYYag{eumtA?pF(^CI-*SXJ0^=R6g zq*F8tsjHaU0a}r}-KVW)_+(!+aI5CW7e9`^@0GZeevgta?h~`}vl)5V$wLYG*{Y4N zDCOie=i$Y0&`INih}^X6A;&<|7_2#LGbI*}(<(R7#Zk_^tDb!P^2KDhmM@;lZ^zQ0i>BPNFR zLLJR4!q3jaeALm>35e7V;w;3~g}s{x>t>>Z5aY^Psg69DPQjH5HiaT=0G(F}Y+nTW zKzb^Ium!?x3^jY$C5Who%M)EY$Ja$KxQzz5h-Pt%?iBeL9YA;=s)91A^l*?y=-1x!f;@#FcFg; z&a930|7Z}A4eF$yq-F3&h_zZ%MrQS3|0n~@j17Mx5YCj0iOKdSgRpi3ul0~ zja(5XtxMTnD$^i^!ZZkH61n5bAk2wh#KAy!{so#;52go`0|R+al5SLXBT3`bnPN}H zv52_u_a94JnQ~@H_bbh0;0N54O=6iHhS=WxSV1fHbGn|AQ1%5;y)|IGSgF55>P~RU z&?iQnDy*!uFCevJ>|O`=M0EnziY}+UQ!ZOPuV$aI#2<0#(*Pmols6G6n!=^Qv3l+q zWygaSVr()I4_D*~mJ{sqt|qZ3kqgwW9T)7!aJ!m4d{$-7mD?ou0q}(IG6_2=QZfZ?}lUJdY^Bbocbw{BXb*B@U0|-(Kw4*ISo~K9;Uz90c^coN4 zL)LG+0*P}5l>TGepNf(HCoq?w=!|BnEo83Z4nEd_M-p592-%>_Y91m>_*Im4!wEly zBD6^6LjE`T{eq1E3SwVW#v`!md4$FAhRCtC+&rD(^8Ebc__f^xx$=J{#U*xHqSf)! zqyro5K&;@t!lW!vB@!8{n=oq*mn{c&sJeypE434C7ZN%BoQPX5e*UkZ6XQ_G%g?q4 zH3Vdq?9Sizl(pkSWH7M?tA=Ss{?i~aaQBq7EtOg6KCa{AZ7hP!;!+G@uXA}S_`F#i zOMz)IHx-k9(dyT>)eh^jE}4@wo}VASx1MVHzsc+jE8X)KnN68_ mdq9^uJ}2Ejwcmz_F;MMHRE~U3R!B524|{oNAS7BCo$)WOIm4U) diff --git a/.gradle/2.13/taskArtifacts/taskArtifacts.bin b/.gradle/2.13/taskArtifacts/taskArtifacts.bin index 85463a5c0a1055d55ad2a088d0a64480c3829ad0..93d27771b0f9c7f78064df5f8006eaa96d2a1e26 100644 GIT binary patch delta 196 zcmcaQnd$0erVX9m5`VO|aBo+U@fLkid#1DEUAkG)9-Aw#Eu-EE1JAb6?-3^l5yvVmo zSAs+4=Brm%+Txic@_PEOyuxv_XVv&7wyBWJj`_Y|aaH9S10>A81y ukZtdSwU<31vagn3eEj8@jgzKtOw+k7Ze?$7aQUtY>Td_jZtiUJVFmz|Mrj8C delta 200 zcmcaQnd$0erVX9m5<+)B - - - - + \ 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 - - - - - - - - @@ -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()); } }