const { ButtonStyle, ButtonBuilder, ActionRowBuilder, EmbedBuilder, } = require("discord.js"); const db = require("../../fonctions/database.js"); const embedColor = require("../../fonctions/embedColor.js"); module.exports = { aliases: ["teamdelete"], description: "Supprime votre équipe.", emote: "🗑️", util: "", permission: 0, async execute(message, args, client) { const team = await new Promise((resolve, reject) => { db.get( `SELECT * FROM teams WHERE guildId = ? AND id = (SELECT teamId FROM users WHERE guildId = ? AND userId = ?)`, [message.guild.id, message.guild.id, message.author.id], (err, row) => { if (err) reject(err); resolve(row); }, ); }); if (!team) { const embed = new EmbedBuilder() .setTitle("🛡️ Suppression de l'équipe") .setDescription("Vous n'êtes actuellement pas dans une équipe.") .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false }, }); } else { const teamRole = await new Promise((resolve, reject) => { db.get( `SELECT teamRole FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { if (err) reject(err); resolve(row.teamRole); }, ); }); if (teamRole !== "owner") { const embed = new EmbedBuilder() .setTitle("Suppression Impossible") .setDescription( "❌ Vous n'avez pas la permission de supprimer cette équipe.", ) .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false }, }); } const row = new ActionRowBuilder().addComponents( new ButtonBuilder() .setCustomId("confirm_delete") .setLabel("Confirmer") .setStyle(ButtonStyle.Danger), new ButtonBuilder() .setCustomId("cancel_delete") .setLabel("Annuler") .setStyle(ButtonStyle.Secondary), ); const embed = new EmbedBuilder() .setTitle("🛡️ Suppression de l'équipe") .setDescription( `Êtes-vous sûr de vouloir supprimer l'équipe ${team.name}? Cette action est irréversible.`, ) .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); message .reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false }, }) .then((sentMessage) => { const filter = (i) => i.customId === "confirm_delete" || (i.customId === "cancel_delete" && i.user.id === message.author.id); const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000, }); collector.on("collect", async (i) => { if (i.customId === "confirm_delete") { db.run( `DELETE FROM teams WHERE guildId = ? AND id = ?`, [message.guild.id, team.id], async (err) => { if (err) { return i.update({ content: "Une erreur est survenue lors de la suppression de l'équipe.", components: [], }); } db.run( `UPDATE users SET teamRole = NULL, teamId = NULL WHERE guildId = ? AND teamId = ?`, [message.guild.id, team.id], async (err) => { if (err) { return i.update({ content: "Une erreur est survenue lors de la mise à jour des membres de l'équipe.", components: [], }); } const embed = new EmbedBuilder() .setTitle("🛡️ Suppression de l'équipe") .setDescription( `L'équipe ${team.name} a été supprimée avec succès.`, ) .setColor( await embedColor(message.author.id, message.guild.id), ) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); return i.update({ embeds: [embed], components: [] }); }, ); }, ); } else { await i.update({ content: "Suppression de l'équipe annulée.", components: [], }); } }); collector.on("end", (collected) => { if (collected.size === 0) sentMessage.edit({ content: "Temps écoulé. Suppression de l'équipe annulée.", components: [], }); }); }); } }, };