11const Command = require ( "../Command.js" ) ;
2- const { MessageAttachment} = require ( "discord.js" ) ;
2+ const { MessageAttachment } = require ( "discord.js" ) ;
33const canvas = require ( "discord-canvas" ) ;
44rankCardCanvas = new canvas . RankCard ( ) ;
55
@@ -9,47 +9,33 @@ module.exports = class RankCommand extends Command {
99 name : "rank" ,
1010 usage : "rank <user mention/ID>" ,
1111 description :
12- "Fetches a user's xp. If no user is given, your own xp will be displayed." ,
12+ "Fetches a user's xp. If no user is given, your own xp will be displayed." ,
1313 type : client . types . LEVELS ,
1414 examples : [ "rank @MDC" ] ,
1515 } ) ;
1616 }
1717 async run ( message , args ) {
18- // Check if user is in a voice channel
19- if ( message . member . voice . channel )
20- return await this . sendErrorMessage (
21- message ,
22- 1 ,
23- "Because a limitation of the API, you can't use this command in a voice channel."
24- ) ;
18+ let {
19+ xp,
20+ level,
21+ total_messages,
22+ total_commands,
23+ total_reactions,
24+ total_voice,
25+ total_pictures,
26+ } = await message . client . mongodb . users . selectRow (
27+ message . author . id ,
28+ message . guild . id
29+ ) ;
30+
2531 const member =
26- this . getMemberFromMention ( message , args [ 0 ] ) ||
27- message . guild . members . cache . get ( args [ 0 ] ) ||
28- message . member ;
29- const xp = message . client . db . users . selectXP
30- . pluck ( )
31- . get ( member . id , message . guild . id ) ;
32- const level = message . client . db . users . selectLevel
33- . pluck ( )
34- . get ( member . id , message . guild . id ) ;
35- let total_messages = message . client . db . users . selectTotalMessages
36- . pluck ( )
37- . get ( member . id , message . guild . id ) ;
38- let total_commands = message . client . db . users . selectTotalCommands
39- . pluck ( )
40- . get ( member . id , message . guild . id ) ;
41- let total_reactions = message . client . db . users . selectTotalReactions
42- . pluck ( )
43- . get ( member . id , message . guild . id ) ;
44- let total_voice = message . client . db . users . selectTotalVoice
45- . pluck ( )
46- . get ( member . id , message . guild . id ) ;
47- let total_pictures = message . client . db . users . selectTotalPictures
48- . pluck ( )
49- . get ( member . id , message . guild . id ) ;
32+ this . getMemberFromMention ( message , args [ 0 ] ) ||
33+ message . guild . members . cache . get ( args [ 0 ] ) ||
34+ message . member ;
35+
5036 const requiredXP = 50 * Math . pow ( level , 2 ) ;
51- const leaderboard = message . client . db . users . selectRank . all (
52- message . guild . id
37+ const leaderboard = await message . client . mongodb . users . selectRank (
38+ message . guild . id
5339 ) ;
5440 const position = leaderboard . map ( ( row ) => row . user_id ) . indexOf ( member . id ) ;
5541 let boosts = member . premiumSince ;
@@ -58,9 +44,13 @@ module.exports = class RankCommand extends Command {
5844 let mod_badge_or_admin_role = null ;
5945
6046 let moderator_role =
61- await message . client . mongodb . settings ( message . guild . id ) || "" ;
47+ ( await message . client . mongodb . settings . selectModRoleId (
48+ message . guild . id
49+ ) ) || "" ;
6250 let admin_role =
63- await message . client . mongodb . settings . selectAdminRoleId ( message . guild . id ) || "" ;
51+ ( await message . client . mongodb . settings . selectAdminRoleId (
52+ message . guild . id
53+ ) ) || "" ;
6454
6555 if ( member . roles . cache . has ( moderator_role ) ) {
6656 mod_badge_or_admin_role = "https://i.imgur.com/tpaksRh.png" ;
@@ -131,32 +121,32 @@ module.exports = class RankCommand extends Command {
131121 }
132122
133123 let image = await rankCardCanvas
134- . setAvatar ( member . user . displayAvatarURL ( { format : "png" , dynamic : true } ) )
135- . setXP ( "current" , xp )
136- . setXP ( "needed" , requiredXP )
137- . setLevel ( level )
138- . setRank ( position + 1 )
139- . setUsername ( member . displayName )
140- . setRankName ( username )
141- . setColor ( "level-box" , "#d7588f" )
142- . setText (
143- "needed-xp" ,
144- "{current}/{needed} for next rank. {latest} remaining!"
145- )
146- . setRadius ( 20 )
147- . setAddon ( "reputation" , false )
148- . setBackground ( "https://i.imgur.com/rLArvSC.png" )
149- . setBadge ( 1 , total_messages )
150- . setBadge ( 2 , total_voice )
151- . setBadge ( 4 , total_pictures )
152- . setBadge ( 5 , total_reactions )
153- . setBadge ( 6 , mod_badge_or_admin_role )
154- . setBadge ( 7 , boosts )
155- . setBadge ( 9 , total_commands )
156- . toAttachment ( ) ;
124+ . setAvatar ( member . user . displayAvatarURL ( { format : "png" , dynamic : true } ) )
125+ . setXP ( "current" , xp )
126+ . setXP ( "needed" , requiredXP )
127+ . setLevel ( level )
128+ . setRank ( position + 1 )
129+ . setUsername ( member . displayName )
130+ . setRankName ( username )
131+ . setColor ( "level-box" , "#d7588f" )
132+ . setText (
133+ "needed-xp" ,
134+ "{current}/{needed} for next rank. {latest} remaining!"
135+ )
136+ . setRadius ( 20 )
137+ . setAddon ( "reputation" , false )
138+ . setBackground ( "https://i.imgur.com/rLArvSC.png" )
139+ . setBadge ( 1 , total_messages )
140+ . setBadge ( 2 , total_voice )
141+ . setBadge ( 4 , total_pictures )
142+ . setBadge ( 5 , total_reactions )
143+ . setBadge ( 6 , mod_badge_or_admin_role )
144+ . setBadge ( 7 , boosts )
145+ . setBadge ( 9 , total_commands )
146+ . toAttachment ( ) ;
157147
158148 let attachment = new MessageAttachment ( image . toBuffer ( ) , "rank.png" ) ;
159149
160- return message . channel . send ( { files : [ attachment ] } ) ;
150+ return message . channel . send ( { files : [ attachment ] } ) ;
161151 }
162152} ;
0 commit comments