import { EmbedBuilder, SlashCommandBuilder, version } from "discord.js"; import moment from "moment"; import format from "moment-duration-format"; import packageJson from "../../package.json" assert { type: "json" }; const botversion = packageJson.version; export default { data: new SlashCommandBuilder() .setName("info") .setDescription("Obtenir des informations diverses.") .addSubcommand((subcommand) => subcommand .setName("user") .setDescription("Obtenir des informations sur un utilisateur.") .addUserOption((option) => option .setName("target") .setDescription("Utilisateur ciblé") .setRequired(true), ), ) .addSubcommand((subcommand) => subcommand .setName("server") .setDescription("Obtenir des informations sur le serveur."), ) .addSubcommand((subcommand) => subcommand .setName("april") .setDescription("Obtenir des informations sur April"), ), async execute(interaction, client) { switch (interaction.options.getSubcommand()) { case "user": const user = interaction.options.getUser("target"); const member = interaction.options.getMember("target"); //interaction.guild.members.cache.get(user.id); const embedUSERINFO = new EmbedBuilder(); if (user) { embedUSERINFO .setAuthor({ name: user.tag, iconURL: user.avatarURL(), }) .setColor("Blurple") .setThumbnail(user.avatarURL()) .setDescription(`<@${user.id}>`) .addFields([ { name: "👤 Informations sur le compte", value: `` + `<:invisibleSpacer:1038116840360120360><:iconID:1038063974807261195> **ID:** ${user.id}\n` + `<:invisibleSpacer:1038116840360120360><:iconProfile:1038064029064773724> **Nom complet:** ${user.tag}\n` + `<:invisibleSpacer:1038116840360120360><:iconTimer:1038063915151654932> **Créé:** `, inline: false, }, ]); if (member) { embedUSERINFO.addFields([ { name: "📋 Information sur le membre", value: `<:invisibleSpacer:1038116840360120360><:iconTimer:1038063915151654932> **A rejoint le serveur:** \n` + `<:invisibleSpacer:1038116840360120360><:iconProfile:1038064029064773724> **Nickname:** ${ member.nickname || `Aucun` }\n` + `<:invisibleSpacer:1038116840360120360><:IconAnnouncement:1038063917026508881> **Plus haut rôle:** ${ member.roles.hoist ? member.roles.hoist.name : "Aucun" }`, inline: false, }, { name: `📝 Rôles [${ member.roles.cache.size - 1 }]`, value: member.roles.cache.size ? member.roles.cache .map((roles) => `**${roles}**`) .slice(0, 20) .join(" ") : "None", inline: false, }, ]); } } else { embedUSERINFO.setDescription("Utilisateur inconnu"); } await interaction.reply({ embeds: [embedUSERINFO], ephemeral: false, }); break; case "server": const owner = await interaction.guild.fetchOwner(); let openticketqty = 0; interaction.guild.channels.cache.forEach((element) => { if ( element.name.includes("bénévole") || element.name.includes("rémunéné") ) openticketqty++; }); let takenticketsqty = 0; interaction.guild.channels.cache.forEach((element) => { if ( (element.name.includes("bénévole") && !element.name.startsWith("bénévole")) || (element.name.includes("rémunéré") && !element.name.startsWith("rémunéré")) ) takenticketsqty++; }); const embedSERVINFO = new EmbedBuilder() .setAuthor({ name: interaction.guild.name, }) .setColor("Blurple") .setThumbnail(interaction.guild.iconURL()) .addFields( { name: `Propriétaire`, value: `<@${owner.user.id}>`, inline: true, }, { name: `Date de création du serveur`, value: ``, inline: true, }, { name: `ID du serveur`, value: `${interaction.guild.id}`, inline: false, }, { name: `Nombre total de membres`, value: `${interaction.guild.memberCount}`, inline: true, }, { name: "Nombre de salons", value: `${interaction.guild.channels.cache.size}`, inline: true, }, { name: "Tickets", value: `**Ouverts** : ${openticketqty}\n**Pris en charge** : ${takenticketsqty}`, inline: true, }, ); await interaction.reply({ embeds: [embedSERVINFO], ephemeral: false, }); break; case "april": const uptime = moment .duration(client.uptime) .format("`D` [days], `H` [hrs], `m` [mins], `s` [secs]"); const embedBOTINFO = new EmbedBuilder() .setAuthor({ name: "April", }) .setColor("Blurple") .setThumbnail(client.user.avatarURL({ size: 1024 })) .setDescription("____________________________") .setFields([ { name: "_____ \n\n│General", value: `_____`, inline: false, }, { name: "🆔┆Id", value: `${client.user.id}`, inline: true, }, { name: "💻┆Commandes", value: `\`${client.commands.size}\` commandes`, inline: true, }, { name: "🔧┆Developpeur", value: `<@!697438073646088194>`, inline: true, }, { name: "📅┆Créée", value: ``, inline: true, }, { name: "_____ \n\n│System", value: `_____`, inline: false, }, { name: "🆙┆Uptime", value: `${uptime}`, inline: true, }, { name: "⌛┆Latence API:", value: `\`${client.ws.ping}\`ms`, inline: true, }, { name: "🏷┆Version du Bot", value: `\`${botversion}\``, inline: true, }, { name: `🏷┆Version de ${ process.versions.bun ? "Bun" : "Node.js" }`, value: `\`${ process.versions.bun ? process.versions.bun : process.version }\``, inline: true, }, { name: "📂┆Version de Discord.js", value: `\`${version}\``, inline: true, }, { name: "💾┆RAM", value: `\`${( process.memoryUsage().heapUsed / 1024 / 1024 ).toFixed(2)}\` MB`, inline: true, }, ]); await interaction.reply({ embeds: [embedBOTINFO], ephemeral: false, }); break; } }, };