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: [] }); }); }); } }, };