|
/* |
|
Allows you to view server info in a nice Rich Embed. |
|
Written by Aceheliflyer. |
|
*/ |
|
const moment = require('moment') |
|
|
|
module.exports = (self) => { |
|
self.registerCommand('serverinfo', function (msg, args) { |
|
var ownerInfo = msg.channel.guild.members.get(msg.channel.guild.ownerID) |
|
|
|
var notificationSettings = [ |
|
'All Messages', |
|
'Only **@mentions**' |
|
] |
|
var verifyLevel = [ |
|
'**None**\n(Unrestricted)', |
|
'**Low**\n(Must have verified email on account)', |
|
'**Medium**\n(Must be registered on Discord for longer than 5 minutes)', |
|
'**High**\n(Must be a member of the server for longer than 10 minutes)', |
|
'**Very High**\n(Must have a verified phone number)' |
|
] |
|
var explicitLevel = [ |
|
'**Level 1**\n(Don\'t scan any messages)', |
|
'**Level 2**\n(Scan messages from members without a role)', |
|
'**Level 3**\n(Scan all messages.)' |
|
] |
|
|
|
var mfaRequirement = null; var isLocked = null |
|
if (msg.channel.guild.mfaLevel === 1) { |
|
mfaRequirement = 'True'; isLocked = '๐' |
|
} else { |
|
mfaRequirement = 'False'; isLocked = '๐' |
|
} |
|
|
|
var totalUsers = msg.channel.guild.members.filter(r => r.bot !== true) |
|
var onlineUsers = totalUsers.filter(r => r.status !== 'offline') |
|
var offlineUsers = totalUsers.filter(r => r.status === 'offline') |
|
var totalBots = msg.channel.guild.members.filter(r => r.bot !== false) |
|
var onlineBots = totalBots.filter(r => r.status !== 'offline') |
|
var offlineBots = totalBots.filter(r => r.status === 'offline') |
|
|
|
var afkInfo = null; var afkName = null; var afkID = null; var afkTimeout = null |
|
if (msg.channel.guild.afkChannelID !== null) { |
|
afkName = `***(Coming... Maybe, eh. Don't count on it.)***` |
|
afkID = msg.channel.guild.afkChannelID |
|
if (msg.channel.guild.afkTimeout === 60) { afkTimeout = '1 minute' } |
|
if (msg.channel.guild.afkTimeout === 300) { afkTimeout = '5 minutes' } |
|
if (msg.channel.guild.afkTimeout === 900) { afkTimeout = '15 minutes' } |
|
if (msg.channel.guild.afkTimeout === 1800) { afkTimeout = '30 minutes' } |
|
if (msg.channel.guild.afkTimeout === 3600) { afkTimeout = '1 hour' } |
|
afkInfo = [`Channel name: ${afkName}`, `Channel ID: ${afkID}`, `Timeout: ${afkTimeout}`].join('\n') |
|
} else { |
|
afkInfo = 'N/A' |
|
} |
|
|
|
var timeZone = new Date().toString().match(/\(([A-Za-z\s].*)\)/)[1] |
|
var guildIcon = msg.channel.guild.iconURL !== null ? msg.channel.guild.iconURL : 'http://cdn.discordapp.com/embed/avatars/0.png' |
|
|
|
this.embed(msg, { |
|
author: { name: this.self.user.username, icon_url: this.self.user.avatarURL }, |
|
title: msg.channel.guild.name, |
|
description: `Since ${moment(msg.channel.guild.createdAt).format('llll')} ${timeZone}\n(${moment(msg.channel.guild.createdAt).fromNow()})`, |
|
footer: { text: `Server ID: ${msg.channel.guild.id}`, icon_url: guildIcon }, |
|
thumbnail: { url: guildIcon }, |
|
timestamp: new Date(), |
|
fields: [ |
|
{ |
|
'name': '๐ง Owner', |
|
'value': [ |
|
`${ownerInfo.user.username}#${ownerInfo.user.discriminator}`, |
|
`(${ownerInfo.user.id})`, |
|
`Status: ${ownerInfo.status}` |
|
].join('\n'), |
|
'inline': true |
|
}, |
|
{ |
|
'name': '๐ Members', |
|
'value': [ |
|
`${msg.channel.guild.memberCount} total`, |
|
`${msg.channel.guild.members.filter(r => r.status !== 'offline').length} online`, |
|
`${msg.channel.guild.members.filter(r => r.status === 'offline').length} offline` |
|
].join('\n'), |
|
'inline': true |
|
}, |
|
{ |
|
'name': '๐ต Users', |
|
'value': [ |
|
`${totalUsers.length} total`, |
|
`${onlineUsers.length} online`, |
|
`${offlineUsers.length} offline` |
|
].join('\n'), |
|
'inline': true |
|
}, |
|
{ |
|
'name': '๐ค Bots', |
|
'value': [ |
|
`${totalBots.length} total`, |
|
`${onlineBots.length} online`, |
|
`${offlineBots.length} offline` |
|
].join('\n'), |
|
'inline': true |
|
}, |
|
{ |
|
'name': '๐ Region', |
|
'value': msg.channel.guild.region, |
|
'inline': true |
|
}, |
|
{ |
|
'name': '๐ฒ Default Notifications', |
|
'value': notificationSettings[msg.channel.guild.defaultNotifications], |
|
'inline': true |
|
}, |
|
{ |
|
'name': 'โ Verification Level', |
|
'value': verifyLevel[msg.channel.guild.verificationLevel], |
|
'inline': true |
|
}, |
|
{ |
|
'name': '๐ฐ Explicit Content Filter', |
|
'value': explicitLevel[msg.channel.guild.explicitContentFilter], |
|
'inline': true |
|
}, |
|
{ |
|
'name': isLocked + ' 2FA Requirement', |
|
'value': mfaRequirement, |
|
'inline': true |
|
}, |
|
{ |
|
'name': '๐ค AFK Info', |
|
'value': afkInfo, |
|
'inline': true |
|
} |
|
], |
|
color: 0x7289DA |
|
}).catch((err) => { this.log.err(err, 'ServerInfo'); this.send(msg, 'There was an error, check console.') }) |
|
}, { |
|
noPms: true, |
|
aliases: ['sinfo'], |
|
perms: ['embedLinks'] |
|
}) |
|
} |