const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder, } = require("discord.js"); const embedColor = require("../../fonctions/embedColor.js"); const db = require("../../fonctions/database.js"); module.exports = { aliases: ["teamleave"], description: "Quitte une team.", emote: "🛡️", utilisation: "", permission: 0, async execute(message, args, client) { await new Promise((resolve, reject) => { db.get( `SELECT teamId FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => { if (err) { reject(err); } else { if (row.teamId === null) { embedColor(message.author.id, message.guild.id).then((color) => { const embed = new EmbedBuilder() .setTitle("🛡️ Quitter une team") .setDescription(`Vous n'êtes dans aucune team.`) .setColor(color) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false }, }); }); } else { resolve(); } } }, ); }); await new Promise((resolve, reject) => { db.get( `SELECT teamRole FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => { if (err) { reject(err); } else { if (row.teamRole === "owner") { embedColor(message.author.id, message.guild.id).then((color) => { const embed = new EmbedBuilder() .setTitle("🛡️ Quitter une team") .setDescription( `Vous êtes le leader de votre team. Vous devez nommer un autre membre leader avant de quitter la team. Pour cela, utilisez la commande \`&towner \` jusqu'à ce que vous ne soyez plus leader.\n\nPour supprimer votre team, veuillez faire \`&tdelete\``, ) .setColor(color) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false }, }); }); } else { resolve(); } } }, ); }); const embed = new EmbedBuilder() .setTitle("🛡️ Quitter une team") .setDescription(`Êtes-vous sûr de vouloir quitter votre team ?`) .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); const confirmeButton = new ButtonBuilder() .setCustomId("confirme") .setLabel("✅") .setStyle(ButtonStyle.Primary); const row = new ActionRowBuilder().addComponents(confirmeButton); const messageTeam = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false }, }); const filter = (i) => i.user.id === message.author.id; const collector = messageTeam.createMessageComponentCollector({ filter, time: 60000, }); collector.on("collect", async (i) => { if (i.customId === "confirme") { db.run( `UPDATE users SET teamId = NULL, teamRole = NULL WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err) => { if (err) { console.error(err); return i.reply("Une erreur est survenue."); } embedColor(message.author.id, message.guild.id).then((color) => { const embed = new EmbedBuilder() .setTitle("🛡️ Quitter une team") .setDescription(`Vous avez quitté votre team.`) .setColor(color) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL(), }); return i.update({ embeds: [embed], components: [] }); }); }, ); } }); }, };