1
+ require ( 'dotenv' ) . config ( ) ;
2
+ const { Client, MessageEmbed } = require ( 'discord.js' ) ;
3
+ const client = new Client ( ) ;
4
+
5
+ client . login ( process . env . BOT_TOKEN ) ;
6
+
7
+ client . on ( 'ready' , ( ) => console . log ( `${ client . user . tag } logged in.` ) ) ;
8
+
9
+ client . on ( 'message' , message => {
10
+ if ( message . author . bot ) return ;
11
+ console . log ( message . mentions ) ;
12
+ if ( message . content . toLowerCase ( ) . startsWith ( '!stats' ) ) {
13
+ const args = message . content . split ( ' ' ) ;
14
+ console . log ( args ) ;
15
+ if ( args . length > 2 ) {
16
+ message . channel . send ( `Incorrect Usage: !stats | !stats <user_id> | !stats @mention` ) ;
17
+ } else if ( args . length === 2 ) {
18
+ const member = message . mentions . members . size === 1 ?
19
+ message . mentions . members . first ( ) :
20
+ message . guild . members . cache . get ( args [ 1 ] ) ;
21
+ if ( member ) {
22
+ const embed = new MessageEmbed ( )
23
+ . setAuthor ( `${ member . user . tag } (${ member . id } )` , member . user . displayAvatarURL ( ) )
24
+ . setThumbnail ( member . user . displayAvatarURL ( ) )
25
+ . addField ( 'Created On' , member . user . createdAt . toLocaleString ( ) , true )
26
+ . addField ( 'Joined On' , member . joinedAt , true )
27
+ . addField ( 'Kickable' , member . kickable , false )
28
+ . addField ( 'Voice Channel' , member . voice . channel ? member . voice . channel . name + `(${ member . voice . channel . id } )` : 'None' )
29
+ . addField ( 'Presence' , member . presence . status )
30
+ . setDescription ( `${ member . roles . cache . map ( role => role . toString ( ) ) . join ( ' ' ) } ` ) ;
31
+ message . channel . send ( embed ) ;
32
+ } else {
33
+ message . channel . send ( `I couldn't find that member with ID ${ args [ 1 ] } ` ) ;
34
+ }
35
+
36
+ } else {
37
+ const { guild } = message ;
38
+ const embed = new MessageEmbed ( )
39
+ . setAuthor ( `${ guild . name } (${ guild . id } )` , guild . iconURL ( ) )
40
+ . setThumbnail ( guild . iconURL ( ) )
41
+ . addField ( 'Created On' , guild . createdAt . toLocaleString ( ) , true )
42
+ . addField ( 'Guild Owner' , guild . owner . user . tag )
43
+ . addField ( 'Total Members' , guild . memberCount , true )
44
+ . addField ( 'Total Real Members' , guild . members . cache . filter ( member => ! member . user . bot ) . size , true )
45
+ . addField ( 'Total Bots' , guild . members . cache . filter ( member => member . user . bot ) . size , true )
46
+ . addField ( 'Total Channels' , guild . channels . cache . size , true )
47
+ . addField ( 'Total Text Channels' , guild . channels . cache . filter ( ch => ch . type === 'text' ) . size , true )
48
+ . addField ( 'Total Voice Channels' , guild . channels . cache . filter ( ch => ch . type === 'voice' ) . size , true )
49
+ . setColor ( '#5CC5FF' )
50
+ . setDescription ( `${ guild . roles . cache . map ( role => role . toString ( ) ) . join ( ' ' ) } ` ) ;
51
+ message . channel . send ( embed ) ;
52
+ }
53
+ }
54
+ } ) ;
0 commit comments