1+ module . exports = {
2+ name : "userinfo" ,
3+ description : "User data, need info on da user..." ,
4+ guildOnly : false ,
5+ authorizedGuilds : [ ] ,
6+ hidden : false ,
7+ permissions : [ "DEFAULT" ] ,
8+ cooldown : 5 ,
9+ aliases : [ ] ,
10+ syntax : [ " <@MentionOrUserID>" ] ,
11+ execute : async ( app , message , args ) => {
12+ async function userInfo ( userID ) {
13+ var states = {
14+ "offline" : app . config . system . emotes . discord . offline + " **Offline**" ,
15+ "idle" : app . config . system . emotes . discord . idle + " **Idle**" ,
16+ "dnd" : app . config . system . emotes . discord . dnd + " **Do Not Disturb**" ,
17+ "online" : app . config . system . emotes . discord . online + " **Online**"
18+ } ;
19+
20+ function getJoinPosition ( ID ) {
21+ var memberJoins = message . guild . members . cache . map ( member => member ) . sort ( ( a , b ) => a . joinedAt - b . joinedAt ) ;
22+ for ( var i = 0 ; i < memberJoins . length ; i ++ ) { if ( memberJoins [ i ] . id == ID ) return i ; } ;
23+ } ;
24+
25+ try {
26+ var user = await app . client . api . users ( userID ) . get ( ) ;
27+ if ( ! user )
28+ throw new Error ( "That user does not exist." ) ;
29+ user . tag = `${ user . username } #${ user . discriminator } ` ; // Manually add this so it looks cool
30+
31+ var embed = {
32+ thumbnail : { url : `https://cdn.discordapp.com/avatars/${ user . id } /${ user . avatar } .${ app . functions . isAnimated ( user . avatar ) ? "gif" : "png" } ?size=1024` } ,
33+ title : `${ app . config . system . emotes . information } **${ user . tag } ${ ( user . bot ? "*[BOT]*" : "" ) } **` ,
34+ color : ( user [ "accent_color" ] ) ? user [ "accent_color" ] : app . config . system . embedColors . blue ,
35+ fields : [
36+ { name : "Username" , value : user . username , inline : true } ,
37+ { name : "Discriminator" , value : user . discriminator , inline : true } ,
38+ { name : "Full Tag" , value : user . tag , inline : true } ,
39+ { name : "User ID" , value : user . id , inline : false } ,
40+ ]
41+ } ;
42+
43+ if ( user . banner != null )
44+ embed [ "image" ] = { url : `https://cdn.discordapp.com/banners/${ user . id } /${ user . banner } .${ app . functions . isAnimated ( user . banner ) ? "gif" : "png" } ?size=600` } ;
45+
46+ if ( message . guild ) {
47+ var serverUser = await message . guild . members . cache . get ( userID ) || await message . guild . members . fetch ( userID , true ) ;
48+ embed . fields . push ( { name : '\u200b' , value : '\u200b' , inline : false } ) ;
49+ if ( serverUser . roles ) {
50+ var roles = serverUser . roles . cache . map ( role => role ) . filter ( role => role . id != message . guild . id ) . sort ( ( a , b ) => a . comparePositionTo ( b ) ) . map ( role => role ) ;
51+ embed . fields . push ( { name : `Roles (**${ roles . length } **)` , value : roles . length > 0 ? roles . join ( " " ) : "No roles :(" , inline : true } )
52+ } ;
53+ if ( serverUser . presence ) embed . description = states [ serverUser . presence . status ] ;
54+ if ( serverUser . nickname ) {
55+ embed . fields . push ( { name : `Nickname` , value : serverUser . nickname , inline : true } ) ;
56+ embed . fields . push ( { name : '\u200b' , value : '\u200b' , inline : true } ) ;
57+ } ;
58+ embed . fields . push ( { name : "Join Position" , value : ( getJoinPosition ( userID ) + 1 ) . toString ( ) , inline : true } , { name : "Joined" , value : ( app . functions . TStoHR ( new Date ( ) . getTime ( ) - new Date ( serverUser . joinedTimestamp ) . getTime ( ) ) + " ago" ) , inline : true } )
59+ } ;
60+
61+ app . functions . msgHandler ( message , { embeds : [ embed ] } )
62+ } catch ( Ex ) {
63+ return app . functions . msgHandler ( message , {
64+ embeds : [ {
65+ description : `${ app . config . system . emotes . error } **${ Ex . message } **` ,
66+ color : app . config . system . embedColors . red ,
67+ } ]
68+ } ) ;
69+ } ;
70+ } ;
71+ if ( ! args [ 0 ] ) return userInfo ( message . author . id ) ;
72+ else return userInfo ( app . functions . getID ( args [ 0 ] ) ) ;
73+
74+ }
75+ } ;
0 commit comments