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 \`&tpromote \` jusqu'à ce que vous ne soyez plus leader.`) .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: [] }); }); }); } }); } };