const { ButtonStyle, ButtonBuilder, ActionRowBuilder, EmbedBuilder, } = require("discord.js"); const db = require("../../fonctions/database.js"); const embedColor = require("../../fonctions/embedColor.js"); module.exports = { aliases: ["alliancedelete", "adelete", "aremove", "allianceremove"], description: "Supprime votre alliance.", 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); }, ); }); const alliance = await new Promise((resolve, reject) => { db.get( `SELECT * FROM alliances WHERE guildId = ? AND id = (SELECT alliancesId FROM teams WHERE guildId = ? AND id = ?)`, [message.guild.id, message.guild.id, team.id], (err, row) => { if (err) reject(err); resolve(row); }, ); }); if (!alliance) { const embed = new EmbedBuilder() .setTitle("🛡️ Suppression de l'alliance") .setDescription("Vous n'êtes actuellement pas dans une alliance.") .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 { if (alliance.creator !== message.author.id) { const embed = new EmbedBuilder() .setTitle("Suppression Impossible") .setDescription( "❌ Vous n'avez pas la permission de supprimer votre alliance.", ) .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'alliance") .setDescription( `Êtes-vous sûr de vouloir supprimer l'alliance ${alliance.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 alliances WHERE guildId = ? AND id = ? AND creator = ?`, [message.guild.id, alliance.id, message.author.id], async (err) => { if (err) { return i.update({ content: "Une erreur est survenue lors de la suppression de l'alliance.", components: [], }); } db.run( `UPDATE teams SET alliancesId = null WHERE guildId =? AND alliancesId =?`, [message.guild.id, alliance.id], async (err) => { if (err) { return i.update({ content: "Une erreur est survenue lors de la mise à jour des teams membres.", components: [], }); } const embed = new EmbedBuilder() .setTitle("🛡️ Suppression de l'alliance") .setDescription( `L'alliance ${alliance.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'alliance annulée.", components: [], }); } }); collector.on("end", (collected) => { if (collected.size === 0) sentMessage.edit({ content: "Temps écoulé. Suppression de l'équipe annulée.", components: [], }); }); }); } }, };