const { SlashCommandBuilder, EmbedBuilder, time, discordSort } = require("discord.js"); const packageJSON = require("../../../package.json"); module.exports = { data: new SlashCommandBuilder() .setName("info") .setDescription(`Informazioni del bot`) .addSubcommand((sub) => sub.setName("bot").setDescription("informazione del bot") ) .addSubcommand((sub) => sub.setName("server").setDescription("informazione del server") ) .addSubcommand((sub) => sub.setName("membro").setDescription("informazione del membro") ) .addUserOption((o) => o.setName("chi").setDescription("quale utente per vedere le informazioni") ), userPermissions: [], botPermissions: [], async execute(interaction, client) { await interaction.deferReply({ fetchReply: true }); const { options, guild } = interaction; const subcommand = options.getSubcommand(); const info = new EmbedBuilder().setColor("White"); switch (subcommand) { case "membro": const user = options.getUser("chi") || interaction.user; const member = guild.members.cache.get(user.id); info.setAuthor({ name: user.tag, iconURL: user.displayAvatarURL({ dynamic: true }), }); info.addFields( { name: `Membro ID:`, value: user.id, inline: true }, { name: `Nickname:`, value: user.nickname || "None", inline: true }, { name: `Username:`, value: user.username, inline: true }, { name: `Status:`, value: getStatusText(member.presence.status), inline: true, }, { name: `Entrato nel server:`, value: time(member.joinedAt, "R"), inline: true, }, { name: `Entrato nel discord:`, value: time(user.createdAt, "R"), inline: true, }, { name: `Role:`, value: discordSort(member.roles.cache).last.toString() || "Non c'รจ ruoli", inline: true, } ); info.setThumbnail(user.displayAvatarURL({ dynamic: true })); break; case "server": info.setAuthor({ name: guild.name, iconURL: guild.iconURL({ dynamic: true }), }); info.addFields( { name: `Capo:`, value: `<@${guild.ownerId}>`, inline: true }, { name: `Membri:`, value: `${guild.memberCount}`, inline: true }, { name: `Ruoli:`, value: `${guild.roles.cache.size}`, inline: true }, { name: `Canali:`, value: `${guild.channels.cache.size}`, inline: true }, { name: `Creato da:`, value: time(guild.createdAt, "R"), inline: true, }, { name: `Boost:`, value: `${guild.premiumSubscriptionCount}`, inline: true, } ); info.setThumbnail(guild.iconURL({ dynamic: true })); break; case "bot": const uptime = new Date(Date.now() - client.uptime); info.setAuthor({ name: client.user.tag, iconURL: client.user.displayAvatarURL({ dynamic: true }), }); info.addFields( { name: `Ping:`, value: `${Math.round(client.ws.ping)}ms`, inline: true, }, { name: `Uptime:`, value: time(uptime, "R"), inline: true }, { name: `Memoria usata:`, value: `${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed( 2 )} MB`, inline: true, }, { name: `CPU usata:`, value: `${(process.cpuUsage().system / 1024 / 1024).toFixed(2)}%`, inline: true, }, { name: `Node.js version:`, value: process.version, inline: true }, { name: `Discord.js version:`, value: packageJSON.dependencies["discord.js"], inline: true, } ); info.setThumbnail(client.user.displayAvatarURL({ dynamic: true })); } await interaction.editReply({ embeds: [info] }); }, }; function getStatusText(status) { switch (status) { case "online": return "`` Online"; case "idle": return "`` Idle"; case "dnd": return "`` non disturbare"; case "offline": return "`` offline"; case "Invisible": return "`` invisible"; default: return "`` Unknown"; } }