2020-07-01 09:14:33 +00:00
/* eslint-disable no-undef */
2020-07-01 08:58:42 +00:00
/* eslint-disable no-warning-comments */
const Command = require ( '../../Structures/Command' ) ;
const { MessageEmbed } = require ( 'discord.js' ) ;
const moment = require ( 'moment' ) ;
const filterLevels = {
DISABLED : 'Off' ,
MEMBERS _WITHOUT _ROLES : 'No Role' ,
ALL _MEMBERS : 'Everyone'
} ;
const verificationLevels = {
NONE : 'None' ,
LOW : 'Low' ,
MEDIUM : 'Medium' ,
HIGH : '(╯°□°)╯︵ ┻━┻' ,
VERY _HIGH : '┻━┻ ミヽ(ಠ益ಠ)ノ彡┻━┻'
} ;
const regions = {
brazil : 'Brazil' ,
europe : 'Europe' ,
hongkong : 'Hong Kong' ,
india : 'India' ,
japan : 'Japan' ,
russia : 'Russia' ,
singapore : 'Singapore' ,
southafrica : 'South Africa' ,
sydney : 'Sydney' ,
'us-central' : 'US Central' ,
'us-east' : 'US East' ,
'us-west' : 'US West' ,
'us-south' : 'US South'
} ;
module . exports = class extends Command {
constructor ( ... args ) {
super ( ... args , {
2020-07-01 13:35:37 +00:00
aliases : [ 'server' , 'guild' , 'guildinfo' ] ,
category : 'Information'
2020-07-01 08:58:42 +00:00
} ) ;
}
async run ( message ) {
const roles = message . guild . roles . cache . sort ( ( a , b ) => b . position - a . position ) . map ( role => role . toString ( ) ) ;
const members = message . guild . members . cache ;
const channels = message . guild . channels . cache ;
const emojis = message . guild . emojis . cache ;
const embed = new MessageEmbed ( )
. setDescription ( ` **Guild information for __ ${ message . guild . name } __** ` )
. setColor ( 'BLUE' )
. setThumbnail ( message . guild . iconURL ( { dynamic : true } ) )
. addField ( 'General' , [
` **❯ Name:** ${ message . guild . name } ` ,
` **❯ ID:** ${ message . guild . id } ` ,
` **❯ Owner:** ${ message . guild . owner . user . tag } ( ${ message . guild . ownerID } ) ` ,
` **❯ Region:** ${ regions [ message . guild . region ] } ` ,
` **❯ Boost Tier:** ${ message . guild . premiumTier ? ` Tier ${ message . guild . premiumTier } ` : 'None' } ` ,
` **❯ Explicit Filter:** ${ filterLevels [ message . guild . explicitContentFilter ] } ` ,
` **❯ Verification Level:** ${ verificationLevels [ message . guild . verificationLevel ] } ` ,
` **❯ Time Created:** ${ moment ( message . guild . createdTimestamp ) . format ( 'LT' ) } ${ moment ( message . guild . createdTimestamp ) . format ( 'LL' ) } ${ moment ( message . guild . createdTimestamp ) . fromNow ( ) } ) ` ,
'\u200b'
] )
. addField ( 'Statistics' , [
` **❯ Role Count:** ${ roles . length } ` ,
` **❯ Emoji Count:** ${ emojis . size } ` ,
` **❯ Regular Emoji Count:** ${ emojis . filter ( emoji => ! emoji . animated ) . size } ` ,
` **❯ Animated Emoji Count:** ${ emojis . filter ( emoji => emoji . animated ) . size } ` ,
` **❯ Member Count:** ${ message . guild . memberCount } ` ,
` **❯ Humans:** ${ members . filter ( member => ! member . user . bot ) . size } ` ,
` **❯ Bots:** ${ members . filter ( member => member . user . bot ) . size } ` ,
` **❯ Text Channels:** ${ channels . filter ( channel => channel . type === 'text' ) } ` ,
` **❯ Voice Channels:** ${ channels . filter ( channel => channel . type === 'voice' ) } ` ,
` **❯ Boost Count:** ${ message . guild . premiumSubscriptionCount || '0' } ` ,
` \u 200b `
] )
. addField ( 'Presence' , [
` **❯ Online:** ${ members . filter ( member => member . presence . status === 'online' ) . size } ` ,
` **❯ Idle:** ${ members . filter ( member => member . presence . status === 'idle' ) . size } ` ,
` **❯ Do Not Disturb:** ${ members . filter ( member => member . presence . stats === 'dnd' ) . size } ` ,
` **❯ Offline:** ${ members . filter ( member => member . presence . status === 'offline' ) . size } ` ,
'\u200b'
] )
2020-07-01 12:26:58 +00:00
. addField ( ` Roles [ ${ roles . length - 1 } ] ` , roles . length < 10 ? roles . join ( ', ' ) : roles . length > 10 ? this . client . utils . trimArray ( roles ) : 'None' )
2020-07-01 08:58:42 +00:00
. setTimestamp ( ) ;
message . channel . send ( embed ) ;
}
} ;