Files
bot-discord-coins/commands/teams/tdelete.js
T
2024-05-26 19:56:11 +02:00

105 lines
4.8 KiB
JavaScript

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