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