diff --git a/bot/commands/Utility/server.js b/bot/commands/Utility/server.js new file mode 100644 index 0000000..6f86054 --- /dev/null +++ b/bot/commands/Utility/server.js @@ -0,0 +1,91 @@ +const Command = require('../../base/Command.js'); +const { time } = require('discord.js'); + +module.exports = class Avatar extends Command { + constructor (name, category) { + super (name, category); + this.name = name, + this.description = 'View information on this server.', + this.usage = '/server', + this.category = category; + } + + async run (client, interaction, data) { //eslint-disable-line no-unused-vars + const guild = await client.guilds.fetch(interaction.guild.id, {force: true}); + const members = await guild.members.fetch(); + const roles = await interaction.guild.roles.cache; + const channels = await interaction.guild.channels.cache; + + let verificationLevel = 'None'; + + /* eslint-disable indent */ + switch (guild.verificationLevel) { + case 1: { + verificationLevel = 'Low'; + break; + } + case 2: { + verificationLevel = 'Medium'; + break; + } + case 3: { + verificationLevel = 'High'; + break; + } + case 4: { + verificationLevel = 'Very high'; + break; + } + } + /* eslint-disable indent */ + + let mfaLevel = 'None'; + if (guild.mfaLevel === 1) { + mfaLevel = '2FA required'; + } + + const embed = new client.EmbedBuilder() + .setColor(client.functions.embedColor(guild)) + .setTitle(guild.name) + .setThumbnail(guild.iconURL({extension: 'png', 'size': 4096})) + .addFields([ + { + name: 'ID', value: guild.id, inline: true + }, + { + name: 'Owner', value: `<@${guild.ownerId}>`, inline: true + }, + { + name: 'Locale', value: guild.preferredLocale, inline: true + }, + { + name: 'Verification level', value: verificationLevel, inline: true + }, + { + name: 'MFA level', value: mfaLevel, inline: true, + }, + { + name: 'Boosts', value: `${guild.premiumSubscriptionCount} (Level ${guild.premiumTier})`, inline: true + + }, + { + name: `Members (${members.size})`, + value: `${members.size - members.filter(member => member.user.bot).size} Humans, ${members.filter(member => member.user.bot).size} Bots`, + inline: true + }, + { + name: 'Channels', value: `${channels.filter(channel => channel.type === 0 || channel.type === 5).size} Text, ${channels.filter(channel => channel.type === 2 || channel.type === 13).size} Voice`, inline: true + }, + { + name: 'Roles', value: roles.size.toString(), inline: true + }, + { + name: 'Created', value: time(guild.createdAt, 'D') + `, ${time(guild.createdAt, 'R')}`, inline: true + }, + { + name: 'Features', value: guild.features.join(', ') + } + ]); + interaction.reply({ embeds: [embed] }); + } +}; \ No newline at end of file diff --git a/bot/commands/Utility/serverinfo.js b/bot/commands/Utility/serverinfo.js deleted file mode 100644 index 0336289..0000000 --- a/bot/commands/Utility/serverinfo.js +++ /dev/null @@ -1,45 +0,0 @@ -const Command = require('../../base/Command.js'); -const { time } = require('discord.js'); - -module.exports = class Avatar extends Command { - constructor (name, category) { - super (name, category); - this.name = name, - this.description = 'View information on this server.', - this.usage = '/serverinfo', - this.category = category; - } - - async run (client, interaction, data) { //eslint-disable-line no-unused-vars - const guild = await client.guilds.fetch(interaction.guild.id, {force: true}); - const members = await guild.members.fetch(); - const embed = new client.EmbedBuilder() - .setColor(client.functions.embedColor(guild)) - .setTitle(guild.name) - .setThumbnail(guild.iconURL({extension: 'png', 'size': 4096})) - .addFields([ - { - name: 'ID', value: guild.id, inline: true - }, - { - name: 'Owner', value: `<@${guild.ownerId}>`, inline: true - }, - { - name: 'Created', value: time(guild.createdAt) + '\n' + time(guild.createdAt, 'R'), inline: true - }, - { - name: 'Boosts', value: `${guild.premiumSubscriptionCount} (Level ${guild.premiumTier})`, inline: true - - }, - { - name: 'Members', - value: `${members.size} Total\n${members.size - members.filter(member => member.user.bot).size} Humans\n${members.filter(member => member.user.bot).size} Bots`, - inline: true - }, - { - name: 'Channels', value: `${guild.channels.cache.size} ()` - } - ]); - interaction.reply({ embeds: [embed] }); - } -}; \ No newline at end of file diff --git a/bot/commands/Utility/userinfo.js b/bot/commands/Utility/user.js similarity index 96% rename from bot/commands/Utility/userinfo.js rename to bot/commands/Utility/user.js index cccacf9..7b190c3 100644 --- a/bot/commands/Utility/userinfo.js +++ b/bot/commands/Utility/user.js @@ -11,10 +11,10 @@ module.exports = class Avatar extends Command { { type: 6, name: 'user', - description: 'The user who you want ' + description: 'The user to get information on' }, ], - this.usage = '/userinfo [user]', + this.usage = '/user [user]', this.friendlyOptions = '`user` - The user to get information on (optional)', this.category = category; }