Files
bot-discord-coins/commands/teams admin/tdelete.js
T
2024-06-24 00:32:05 +02:00

178 lines
5.8 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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: [],
});
});
});
}
},
};