nyx/command/Information/serverinfo.js
2023-04-18 10:47:47 +01:00

185 lines
5.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: "High",
VERY_HIGH: "Very High",
};
const regions = {
brazil: "Brazil",
europe: "Europe",
hongkong: "Hong Kong",
india: "India",
japan: "Japan",
russia: "Russia",
singapore: "Singapore",
southafrica: "South Africa",
sydeny: "Sydeny",
"us-central": "US Central",
"us-east": "US East",
"us-west": "US West",
"us-south": "US South",
};
module.exports = {
name: "serverinfo",
description: "Check the info of the server",
category: "Information",
type: "CHAT_INPUT",
options: [
{
type: 3,
name: "server",
description: "The server you want to see (Paste Server ID)",
required: false,
},
],
run: async (client, interaction, args, utils) => {
try {
const g = client.guilds.cache.get(args[0]) || interaction.guild;
const vanityCode = g.vanityURLCode;
let vanityInvite = `https://discord.gg/${vanityCode}`;
if (vanityCode === null) vanityInvite = "No custom URL";
const members = g.members.cache;
const roles = g.roles.cache
.sort((a, b) => b.position - a.position)
.map(role => role.toString());
const owner = await g.fetchOwner();
const voiceChannel = g.channels.cache.filter(
ch => ch.type === "GUILD_VOICE"
).size;
const textChannel = g.channels.cache.filter(
ch => ch.type === "GUILD_TEXT"
).size;
const categoryChannel = g.channels.cache.filter(
ch => ch.type === "GUILD_CATEGORY"
).size;
const embed = new MessageEmbed()
.setTimestamp()
.setTitle("**Server Information**")
.setAuthor(`${g.name}`, g.iconURL({ dynamic: true }))
.setColor(client.color)
.setDescription(g.description || "No Description")
.setThumbnail(g.iconURL({ dynamic: true, size: 1024 }))
.addFields(
{
name: `<:nyx_owner:897418259433943120> Owner Info`,
value: `
**Owner ** ${owner}
🆔 **Owner ID ** \`${owner.id}\`
`,
inline: true,
},
{
name: `Misc Info`,
value: `
**🆔 Server ID ** \`${g.id}\`
**🌐 Region ** ${regions[g.regions]}
**🔗 Vanity Link ** [${vanityCode}](${vanityInvite})
`,
inline: true,
},
{
name: `<a:nyx_last_update:897381474330873887> Creation Date`,
value: `
${moment(g.createdTimestamp).format("LL")} ${moment(
g.createdTimestamp
).format("LTS")} (${moment(g.createdTimestamp).fromNow()})`,
inline: true,
},
// Row 2
{
name: `<:4chanluv:836623612689121320> Emojies ${g.emojis.cache}`,
value: `
**Static ** ${g.emojis.cache.size.toString()}
**Animated ** ${g.emojis.cache
.filter(emoji => emoji.animated)
.size.toString()}`,
inline: true,
},
{
name: `Member Statistics`,
value: `
👥 **Total** ${g.memberCount.toString()}
🚶 **Users** ${members
.filter(member => !member.user.bot)
.size.toString()}
🤖 **Bots** ${members
.filter(member => member.user.bot)
.size.toString()}`,
inline: true,
},
{
name: `Channel Info`,
value: `
📁 **Categories ** ${categoryChannel}
#️⃣ **Text** ${textChannel}
🔊 **Voice** ${voiceChannel}`,
inline: true,
},
// Row 3
{
name: `Server Specification`,
value: `
**<:partner:840231939944480829> Partnered ** ${
g.partnered
? "<a:nyx_checkmark:897240322411724841>"
: "<a:nyx_cross:897244999211696198>"
}
**<:verifiedserver:897410018234728449> Verified ** ${
g.verified
? "<a:nyx_checkmark:897240322411724841>"
: "<a:nyx_cross:897244999211696198>"
}
**🚥 Verification Level ** ${verificationLevels[g.verificationLevel]}
**💢 Explicit Filter ** ${filterLevels[g.explicitContentFilter]}
**Tier ** ${
g.premiumTier == "TIER_3"
? "3 <:nyx_tier3:897406181511946261>"
: g.premiumTier == "TIER_2"
? "2 <:nyx_tier2:897406181541281792>"
: g.premiumTier == "TIER_1"
? "1 <:nyx_tier1:897406181558067210>"
: "0"
}
**Count ** ${g.premiumSubscriptionCount || "0"}`,
inline: true,
},
{
name: `<a:nyx_community:897419330478825512> Community Features`,
value: `${
utils.fixFeatures(g.features) || "No Community Features"
}`,
inline: true,
},
{
name: `👔 Role Info [${roles.length}]`,
value: `${
roles.length < 10
? roles.join(" **|** ")
: roles.length > 10
? `${roles.slice(0, 10).join(" **|** ")}\n+${
roles.length - 10
} roles...`
: "None"
}`,
inline: true,
}
)
.setURL(vanityCode ? vanityInvite : "https://cath.gq/")
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL());
interaction.followUp({ embeds: [embed] });
} catch (e) {
console.log(e);
}
},
};