diff --git a/commands/teams/tcreate.js b/commands/teams admin/tcreate.js similarity index 97% rename from commands/teams/tcreate.js rename to commands/teams admin/tcreate.js index 6eee549..a565cc4 100644 --- a/commands/teams/tcreate.js +++ b/commands/teams admin/tcreate.js @@ -1,130 +1,130 @@ -const { EmbedBuilder } = require('discord.js'); -const embedColor = require('../../fonctions/embedColor.js'); -const db = require('../../fonctions/database.js'); - -let teamName -let teamDescription - -module.exports = { - aliases: ['teamcreate'], - description: 'Crée une team.', - emote: '🛡️', - utilisation: '', - permission: 0, - - async execute(message, args, client) { - await new Promise((resolve, reject) => { - db.get(`SELECT teamId, pocket 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('🛡️ Création de team') - .setDescription(`Vous êtes déjà dans une team. Vous devez quitter votre team actuelle pour en créer une nouvelle.`) - .setColor(color) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - - return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }) - }); - } else if (row.pocket < 3000) { - embedColor(message.author.id, message.guild.id).then(color => { - const embed = new EmbedBuilder() - .setTitle('🛡️ Création de team') - .setDescription(`Vous n'avez pas assez de fonds pour créer une team. Vous avez besoin de 3000.`) - .setColor(color) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - - return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }) - }); - } else { - db.run(`UPDATE users SET pocket = pocket - 3000 WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id]); - resolve(); - } - } - }); - }); - - const embed = new EmbedBuilder() - .setTitle('🛡️ Création de team') - .setDescription(`Ecrivez le nom de votre team dans le chat.`) - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); - - const messageTeam = await message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }); - - const filter = m => m.author.id === message.author.id; - const collector = message.channel.createMessageCollector({ filter, time: 60000, max: 1 }); - collector.on('collect', async m => { - if (m.content.length > 20) { - m.reply('Le nom de la team ne doit pas dépasser 20 caractères.'); - return collector.stop(); - } else if (m.content.length < 3) { - m.reply('Le nom de la team doit contenir au moins 3 caractères.'); - return collector.stop(); - } else { - teamName = m.content; - const embed = new EmbedBuilder() - .setTitle('🛡️ Création de team') - .setDescription(`Ecrivez la description de votre team dans le chat.`) - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); - - messageTeam.edit({ embeds: [embed] }); - m.delete(); - - const collectorD = message.channel.createMessageCollector({ filter, time: 60000, max: 1 }); - collectorD.on('collect', async m => { - if (m.content.length > 100) { - m.reply('La description de la team ne doit pas dépasser 100 caractères.'); - return collectorD.stop(); - } else if (m.content.length < 2) { - m.reply('La description de la team doit contenir au moins 2 caractères.'); - return collectorD.stop(); - } else { - teamDescription = m.content; - - let idBase = teamName.toLowerCase().replace(/ /g, ''); - let id = idBase; - let increment = 1; - let exists = true; - do { - await new Promise((resolve, reject) => { - db.get(`SELECT * FROM teams WHERE id = ? AND guildId = ?`, [id, message.guild.id], (err, row) => { - if (err) { - reject(err); - } else { - exists = !!row; - if (exists) { - increment++; - id = idBase + increment; - } else { - db.run(`INSERT INTO teams (guildId, id, name, description) VALUES (?, ?, ?, ?)`, [message.guild.id, id, teamName, teamDescription]); - db.run(`UPDATE users SET teamId = ?, teamRole = ? WHERE guildId = ? AND userId = ?`, [id, 'owner', message.guild.id, message.author.id]); - } - resolve(); - } - }); - }); - } while (exists); - - const embed = new EmbedBuilder() - .setTitle('🛡️ Création de team') - .setDescription(`Votre team a été créée avec succès !\n\n**ID :** ${id}\n**Nom :** ${teamName}\n**Description :** ${teamDescription}\n\nVous pouvez maintenant inviter des membres dans votre team avec la commande \`&teaminvite\`.\n\nPour quitter la team, utilisez la commande \`&teamleave\`.`) - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); - - messageTeam.edit({ embeds: [embed] }); - m.delete(); - } - }); - } - }); - } +const { EmbedBuilder } = require('discord.js'); +const embedColor = require('../../fonctions/embedColor.js'); +const db = require('../../fonctions/database.js'); + +let teamName +let teamDescription + +module.exports = { + aliases: ['teamcreate'], + description: 'Crée une team.', + emote: '🛡️', + utilisation: '', + permission: 0, + + async execute(message, args, client) { + await new Promise((resolve, reject) => { + db.get(`SELECT teamId, pocket 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('🛡️ Création de team') + .setDescription(`Vous êtes déjà dans une team. Vous devez quitter votre team actuelle pour en créer une nouvelle.`) + .setColor(color) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + + return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }) + }); + } else if (row.pocket < 3000) { + embedColor(message.author.id, message.guild.id).then(color => { + const embed = new EmbedBuilder() + .setTitle('🛡️ Création de team') + .setDescription(`Vous n'avez pas assez de fonds pour créer une team. Vous avez besoin de 3000.`) + .setColor(color) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + + return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }) + }); + } else { + db.run(`UPDATE users SET pocket = pocket - 3000 WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id]); + resolve(); + } + } + }); + }); + + const embed = new EmbedBuilder() + .setTitle('🛡️ Création de team') + .setDescription(`Ecrivez le nom de votre team dans le chat.`) + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); + + const messageTeam = await message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }); + + const filter = m => m.author.id === message.author.id; + const collector = message.channel.createMessageCollector({ filter, time: 60000, max: 1 }); + collector.on('collect', async m => { + if (m.content.length > 20) { + m.reply('Le nom de la team ne doit pas dépasser 20 caractères.'); + return collector.stop(); + } else if (m.content.length < 3) { + m.reply('Le nom de la team doit contenir au moins 3 caractères.'); + return collector.stop(); + } else { + teamName = m.content; + const embed = new EmbedBuilder() + .setTitle('🛡️ Création de team') + .setDescription(`Ecrivez la description de votre team dans le chat.`) + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); + + messageTeam.edit({ embeds: [embed] }); + m.delete(); + + const collectorD = message.channel.createMessageCollector({ filter, time: 60000, max: 1 }); + collectorD.on('collect', async m => { + if (m.content.length > 100) { + m.reply('La description de la team ne doit pas dépasser 100 caractères.'); + return collectorD.stop(); + } else if (m.content.length < 2) { + m.reply('La description de la team doit contenir au moins 2 caractères.'); + return collectorD.stop(); + } else { + teamDescription = m.content; + + let idBase = teamName.toLowerCase().replace(/ /g, ''); + let id = idBase; + let increment = 1; + let exists = true; + do { + await new Promise((resolve, reject) => { + db.get(`SELECT * FROM teams WHERE id = ? AND guildId = ?`, [id, message.guild.id], (err, row) => { + if (err) { + reject(err); + } else { + exists = !!row; + if (exists) { + increment++; + id = idBase + increment; + } else { + db.run(`INSERT INTO teams (guildId, id, name, description) VALUES (?, ?, ?, ?)`, [message.guild.id, id, teamName, teamDescription]); + db.run(`UPDATE users SET teamId = ?, teamRole = ? WHERE guildId = ? AND userId = ?`, [id, 'owner', message.guild.id, message.author.id]); + } + resolve(); + } + }); + }); + } while (exists); + + const embed = new EmbedBuilder() + .setTitle('🛡️ Création de team') + .setDescription(`Votre team a été créée avec succès !\n\n**ID :** ${id}\n**Nom :** ${teamName}\n**Description :** ${teamDescription}\n\nVous pouvez maintenant inviter des membres dans votre team avec la commande \`&teaminvite\`.\n\nPour quitter la team, utilisez la commande \`&teamleave\`.`) + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); + + messageTeam.edit({ embeds: [embed] }); + m.delete(); + } + }); + } + }); + } }; \ No newline at end of file diff --git a/commands/teams/tdelete.js b/commands/teams admin/tdelete.js similarity index 97% rename from commands/teams/tdelete.js rename to commands/teams admin/tdelete.js index 179f4ae..cac15ce 100644 --- a/commands/teams/tdelete.js +++ b/commands/teams admin/tdelete.js @@ -1,105 +1,105 @@ -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: [] }); - }); - }); - } - }, +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: [] }); + }); + }); + } + }, }; \ No newline at end of file diff --git a/commands/teams/tdemote.js b/commands/teams admin/tdemote.js similarity index 97% rename from commands/teams/tdemote.js rename to commands/teams admin/tdemote.js index aa2c9db..9843c48 100644 --- a/commands/teams/tdemote.js +++ b/commands/teams admin/tdemote.js @@ -1,113 +1,113 @@ -const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js'); -const db = require('../../fonctions/database.js'); -const embedColor = require('../../fonctions/embedColor.js'); - -module.exports = { - aliases: ['teamdemote', 'tderank'], - description: 'Rétrograder un officier à membre dans votre équipe.', - emote: '🛡️', - utilisation: '<@user>', - permission: 0, - - async execute(message, args, client) { - if (!args[0]) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Rétrograder un officier') - .setDescription('Veuillez mentionner un utilisateur à rétrograder.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const userToDemote = message.mentions.users.first(); - if (!userToDemote) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Rétrograder un officier') - .setDescription('Utilisateur non trouvé.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const user = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - if (!user || user.teamRole !== 'owner') { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Rétrograder un officier') - .setDescription('Vous n\'êtes pas administrateur de cette équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const userToDemoteInfo = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToDemote.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - if (!userToDemoteInfo || userToDemoteInfo.teamId !== user.teamId) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Rétrograder un officier') - .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - if (userToDemoteInfo.teamRole !== 'officer') { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Rétrograder un officier') - .setDescription('L\'utilisateur mentionné n\'est pas un officier.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - db.run(`UPDATE users SET teamRole = 'membre' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToDemote.id], async (err) => { - if (err) { - return message.reply('Une erreur est survenue lors de la rétrogradation de l\'utilisateur.'); - } - - const embed = new EmbedBuilder() - .setTitle('🛡️ Rétrogradation dans l\'équipe') - .setDescription(`${userToDemote.tag} a été rétrogradé au rang de membre.`) - .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 { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js'); +const db = require('../../fonctions/database.js'); +const embedColor = require('../../fonctions/embedColor.js'); + +module.exports = { + aliases: ['teamdemote', 'tderank'], + description: 'Rétrograder un officier à membre dans votre équipe.', + emote: '🛡️', + utilisation: '<@user>', + permission: 0, + + async execute(message, args, client) { + if (!args[0]) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Rétrograder un officier') + .setDescription('Veuillez mentionner un utilisateur à rétrograder.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const userToDemote = message.mentions.users.first(); + if (!userToDemote) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Rétrograder un officier') + .setDescription('Utilisateur non trouvé.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const user = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + if (!user || user.teamRole !== 'owner') { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Rétrograder un officier') + .setDescription('Vous n\'êtes pas administrateur de cette équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const userToDemoteInfo = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToDemote.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + if (!userToDemoteInfo || userToDemoteInfo.teamId !== user.teamId) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Rétrograder un officier') + .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + if (userToDemoteInfo.teamRole !== 'officer') { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Rétrograder un officier') + .setDescription('L\'utilisateur mentionné n\'est pas un officier.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + db.run(`UPDATE users SET teamRole = 'membre' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToDemote.id], async (err) => { + if (err) { + return message.reply('Une erreur est survenue lors de la rétrogradation de l\'utilisateur.'); + } + + const embed = new EmbedBuilder() + .setTitle('🛡️ Rétrogradation dans l\'équipe') + .setDescription(`${userToDemote.tag} a été rétrogradé au rang de membre.`) + .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 } }); + }); + }, }; \ No newline at end of file diff --git a/commands/teams/tedit.js b/commands/teams admin/tedit.js similarity index 97% rename from commands/teams/tedit.js rename to commands/teams admin/tedit.js index b667cfb..01f77f1 100644 --- a/commands/teams/tedit.js +++ b/commands/teams admin/tedit.js @@ -1,54 +1,54 @@ -const { EmbedBuilder } = require('discord.js'); -const db = require('../../fonctions/database.js'); -const embedColor = require('../../fonctions/embedColor.js'); - -module.exports = { - aliases: ['tedit'], - description: 'Modifie les informations de votre team.', - emote: '🛡️', - utilisation: ' ', - permission: 0, - - async execute(message, args, client) { - if (args.length > 0) { - const subCommand = args[0].toLowerCase(); - const newValue = args.slice(1).join(' '); - - if (['name', 'banner', 'icon', 'description'].includes(subCommand)) { - await new Promise((resolve, reject) => { - db.run(`UPDATE teams SET ${subCommand} = ? WHERE guildId = ? AND id = (SELECT teamId FROM users WHERE guildId = ? AND userId = ?)`, [newValue, message.guild.id, message.guild.id, message.author.id], (err) => { - if (err) reject(err); - resolve(); - }); - }); - - const embed = new EmbedBuilder() - .setTitle('🛡️ Modification de team') - .setDescription(`La ${subCommand} de votre team a été mise à jour.`) - .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 embed = new EmbedBuilder() - .setTitle('🛡️ Modification de team') - .setDescription('❌ Vous devez spécifier ce que vous voulez modifier (name, banner, icon ou description).') - .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 embed = new EmbedBuilder() - .setTitle('🛡️ Modification de team') - .setDescription('Veuillez spécifier ce que vous voulez modifier et la nouvelle valeur.') - .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 { EmbedBuilder } = require('discord.js'); +const db = require('../../fonctions/database.js'); +const embedColor = require('../../fonctions/embedColor.js'); + +module.exports = { + aliases: ['tedit'], + description: 'Modifie les informations de votre team.', + emote: '🛡️', + utilisation: ' ', + permission: 0, + + async execute(message, args, client) { + if (args.length > 0) { + const subCommand = args[0].toLowerCase(); + const newValue = args.slice(1).join(' '); + + if (['name', 'banner', 'icon', 'description'].includes(subCommand)) { + await new Promise((resolve, reject) => { + db.run(`UPDATE teams SET ${subCommand} = ? WHERE guildId = ? AND id = (SELECT teamId FROM users WHERE guildId = ? AND userId = ?)`, [newValue, message.guild.id, message.guild.id, message.author.id], (err) => { + if (err) reject(err); + resolve(); + }); + }); + + const embed = new EmbedBuilder() + .setTitle('🛡️ Modification de team') + .setDescription(`La ${subCommand} de votre team a été mise à jour.`) + .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 embed = new EmbedBuilder() + .setTitle('🛡️ Modification de team') + .setDescription('❌ Vous devez spécifier ce que vous voulez modifier (name, banner, icon ou description).') + .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 embed = new EmbedBuilder() + .setTitle('🛡️ Modification de team') + .setDescription('Veuillez spécifier ce que vous voulez modifier et la nouvelle valeur.') + .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 } }); + } + }, }; \ No newline at end of file diff --git a/commands/teams/tkick.js b/commands/teams admin/tkick.js similarity index 97% rename from commands/teams/tkick.js rename to commands/teams admin/tkick.js index b1617bd..abc82c9 100644 --- a/commands/teams/tkick.js +++ b/commands/teams admin/tkick.js @@ -1,144 +1,144 @@ -const { EmbedBuilder } = require('discord.js'); -const db = require('../../fonctions/database.js'); -const embedColor = require('../../fonctions/embedColor.js'); - -module.exports = { - aliases: ['teamkick'], - description: 'Expulse un utilisateur de votre team.', - emote: '🛡️', - utilisation: '<@user>', - permission: 0, - - async execute(message, args, client) { - if (!args[0]) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription('Veuillez mentionner un utilisateur à expulser.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const userToKick = message.mentions.users.first(); - if (!userToKick) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription('Utilisateur non trouvé.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } else if (userToKick.id === message.author.id) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription('Vous ne pouvez pas vous expulser de votre propre équipe. Si vous souhaitez quitter votre équipe, utilisez la commande `&tleave`.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - 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) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription('Vous n\'êtes 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() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const user = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - const userToKickInfo = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToKick.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - if (!userToKickInfo || userToKickInfo.teamId !== user.teamId) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - if (!user || user.teamRole !== 'owner') { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription('Vous n\'êtes pas administrateur de cette équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - db.run(`UPDATE users SET teamId = NULL, teamRole = NULL WHERE guildId = ? AND userId = ?`, [message.guild.id, userToKick.id], async (err) => { - if (err) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription('Une erreur est survenue lors de l\'expulsion de l\'utilisateur.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - embedColor(message.author.id, message.guild.id).then(color => { - const embed = new EmbedBuilder() - .setTitle('🛡️ Expulsion de l\'équipe') - .setDescription(`${userToKick.tag} a été expulsé de l'équipe.`) - .setColor(color) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - - return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }) - }); - }); - }, +const { EmbedBuilder } = require('discord.js'); +const db = require('../../fonctions/database.js'); +const embedColor = require('../../fonctions/embedColor.js'); + +module.exports = { + aliases: ['teamkick'], + description: 'Expulse un utilisateur de votre team.', + emote: '🛡️', + utilisation: '<@user>', + permission: 0, + + async execute(message, args, client) { + if (!args[0]) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription('Veuillez mentionner un utilisateur à expulser.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const userToKick = message.mentions.users.first(); + if (!userToKick) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription('Utilisateur non trouvé.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } else if (userToKick.id === message.author.id) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription('Vous ne pouvez pas vous expulser de votre propre équipe. Si vous souhaitez quitter votre équipe, utilisez la commande `&tleave`.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + 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) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription('Vous n\'êtes 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() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const user = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + const userToKickInfo = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToKick.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + if (!userToKickInfo || userToKickInfo.teamId !== user.teamId) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + if (!user || user.teamRole !== 'owner') { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription('Vous n\'êtes pas administrateur de cette équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + db.run(`UPDATE users SET teamId = NULL, teamRole = NULL WHERE guildId = ? AND userId = ?`, [message.guild.id, userToKick.id], async (err) => { + if (err) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription('Une erreur est survenue lors de l\'expulsion de l\'utilisateur.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + embedColor(message.author.id, message.guild.id).then(color => { + const embed = new EmbedBuilder() + .setTitle('🛡️ Expulsion de l\'équipe') + .setDescription(`${userToKick.tag} a été expulsé de l'équipe.`) + .setColor(color) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + + return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } }) + }); + }); + }, }; \ No newline at end of file diff --git a/commands/teams/towner.js b/commands/teams admin/towner.js similarity index 97% rename from commands/teams/towner.js rename to commands/teams admin/towner.js index d495559..d143cec 100644 --- a/commands/teams/towner.js +++ b/commands/teams admin/towner.js @@ -1,147 +1,147 @@ -const { ButtonStyle, ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require('discord.js'); -const db = require('../../fonctions/database.js'); -const embedColor = require('../../fonctions/embedColor.js'); - -module.exports = { - aliases: ['teamadmin', 'tadmin', 'teamowner'], - description: 'Promouvoir un utilisateur à administrateur dans votre équipe.', - emote: '🛡️', - utilisation: '<@user>', - permission: 0, - - async execute(message, args, client) { - if (!args[0]) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Veuillez mentionner un utilisateur à promouvoir.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const userToPromote = message.mentions.users.first(); - if (!userToPromote) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Utilisateur non trouvé.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const user = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - if (!user || user.teamRole !== 'owner') { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Vous n\'êtes pas administrateur de cette équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const userToPromoteInfo = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - if (!userToPromoteInfo || userToPromoteInfo.teamId !== user.teamId) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const bouton = new ButtonBuilder() - .setCustomId('promote_to_admin') - .setLabel('Confirmer') - .setStyle(ButtonStyle.Success); - - const row = new ActionRowBuilder() - .addComponents(bouton); - - const embed = new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription(`Êtes-vous sûr de vouloir promouvoir ${userToPromote.tag} au rang d'administrateur ?`) - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); - - const sendMessage = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } }); - - const filter = i => i.customId === 'promote_to_admin' && i.user.id === message.author.id; - const collector = sendMessage.createMessageComponentCollector({ filter, time: 120000 }); - - collector.on('collect', async (interaction) => { - db.run(`UPDATE users SET teamRole = 'owner' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], async (err) => { - if (err) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Une erreur est survenue lors de la promotion de l\'utilisateur.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - db.run(`UPDATE users SET teamRole = 'officier' WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], async (err) => { - if (err) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Une erreur est survenue lors de la mise à jour de votre rôle.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const embed = new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription(`${userToPromote.tag} a été promu au rang d'administrateur. Vous avez été rétrogradé au rang d'officier.`) - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); - - sendMessage.edit({ embeds: [embed], components: [] }); - }); - }); - }); - }, +const { ButtonStyle, ButtonBuilder, ActionRowBuilder, EmbedBuilder } = require('discord.js'); +const db = require('../../fonctions/database.js'); +const embedColor = require('../../fonctions/embedColor.js'); + +module.exports = { + aliases: ['teamadmin', 'tadmin', 'teamowner'], + description: 'Promouvoir un utilisateur à administrateur dans votre équipe.', + emote: '🛡️', + utilisation: '<@user>', + permission: 0, + + async execute(message, args, client) { + if (!args[0]) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Veuillez mentionner un utilisateur à promouvoir.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const userToPromote = message.mentions.users.first(); + if (!userToPromote) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Utilisateur non trouvé.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const user = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + if (!user || user.teamRole !== 'owner') { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Vous n\'êtes pas administrateur de cette équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const userToPromoteInfo = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + if (!userToPromoteInfo || userToPromoteInfo.teamId !== user.teamId) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const bouton = new ButtonBuilder() + .setCustomId('promote_to_admin') + .setLabel('Confirmer') + .setStyle(ButtonStyle.Success); + + const row = new ActionRowBuilder() + .addComponents(bouton); + + const embed = new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription(`Êtes-vous sûr de vouloir promouvoir ${userToPromote.tag} au rang d'administrateur ?`) + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); + + const sendMessage = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } }); + + const filter = i => i.customId === 'promote_to_admin' && i.user.id === message.author.id; + const collector = sendMessage.createMessageComponentCollector({ filter, time: 120000 }); + + collector.on('collect', async (interaction) => { + db.run(`UPDATE users SET teamRole = 'owner' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], async (err) => { + if (err) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Une erreur est survenue lors de la promotion de l\'utilisateur.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + db.run(`UPDATE users SET teamRole = 'officier' WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], async (err) => { + if (err) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Une erreur est survenue lors de la mise à jour de votre rôle.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const embed = new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription(`${userToPromote.tag} a été promu au rang d'administrateur. Vous avez été rétrogradé au rang d'officier.`) + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); + + sendMessage.edit({ embeds: [embed], components: [] }); + }); + }); + }); + }, }; \ No newline at end of file diff --git a/commands/teams/tpromote.js b/commands/teams admin/tpromote.js similarity index 97% rename from commands/teams/tpromote.js rename to commands/teams admin/tpromote.js index 1292edf..26ee3f4 100644 --- a/commands/teams/tpromote.js +++ b/commands/teams admin/tpromote.js @@ -1,123 +1,123 @@ -const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js'); -const db = require('../../fonctions/database.js'); -const embedColor = require('../../fonctions/embedColor.js'); - -module.exports = { - aliases: ['teampromote', 'trankup'], - description: 'Promouvoir un utilisateur à officier dans votre équipe.', - emote: '🛡️', - utilisation: '<@user>', - permission: 0, - - async execute(message, args, client) { - if (!args[0]) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Veuillez mentionner un utilisateur à promouvoir.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const userToPromote = message.mentions.users.first(); - if (!userToPromote) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Utilisateur non trouvé.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const user = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - if (!user || user.teamRole !== 'owner') { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Vous n\'êtes pas administrateur de cette équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const userToPromoteInfo = await new Promise((resolve, reject) => { - db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], (err, row) => { - if (err) reject(err); - resolve(row); - }); - }); - - if (!userToPromoteInfo || userToPromoteInfo.teamId !== user.teamId) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - if (userToPromoteInfo.teamRole === 'officer') { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('L\'utilisateur mentionné est déjà un officier.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - db.run(`UPDATE users SET teamRole = 'officer' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], async (err) => { - if (err) { - return message.reply({ - embeds: [ - new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription('Une erreur est survenue lors de la promotion de l\'utilisateur.') - .setColor(await embedColor(message.author.id, message.guild.id)) - .setTimestamp() - .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) - ], - allowedMentions: { repliedUser: false } - }); - } - - const embed = new EmbedBuilder() - .setTitle('🛡️ Promotion dans l\'équipe') - .setDescription(`${userToPromote.tag} a été promu au rang d'officier.`) - .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 { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js'); +const db = require('../../fonctions/database.js'); +const embedColor = require('../../fonctions/embedColor.js'); + +module.exports = { + aliases: ['teampromote', 'trankup'], + description: 'Promouvoir un utilisateur à officier dans votre équipe.', + emote: '🛡️', + utilisation: '<@user>', + permission: 0, + + async execute(message, args, client) { + if (!args[0]) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Veuillez mentionner un utilisateur à promouvoir.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const userToPromote = message.mentions.users.first(); + if (!userToPromote) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Utilisateur non trouvé.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const user = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + if (!user || user.teamRole !== 'owner') { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Vous n\'êtes pas administrateur de cette équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const userToPromoteInfo = await new Promise((resolve, reject) => { + db.get(`SELECT * FROM users WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], (err, row) => { + if (err) reject(err); + resolve(row); + }); + }); + + if (!userToPromoteInfo || userToPromoteInfo.teamId !== user.teamId) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('L\'utilisateur mentionné n\'est pas dans votre équipe.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + if (userToPromoteInfo.teamRole === 'officer') { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('L\'utilisateur mentionné est déjà un officier.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + db.run(`UPDATE users SET teamRole = 'officer' WHERE guildId = ? AND userId = ?`, [message.guild.id, userToPromote.id], async (err) => { + if (err) { + return message.reply({ + embeds: [ + new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription('Une erreur est survenue lors de la promotion de l\'utilisateur.') + .setColor(await embedColor(message.author.id, message.guild.id)) + .setTimestamp() + .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }) + ], + allowedMentions: { repliedUser: false } + }); + } + + const embed = new EmbedBuilder() + .setTitle('🛡️ Promotion dans l\'équipe') + .setDescription(`${userToPromote.tag} a été promu au rang d'officier.`) + .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 } }); + }); + }, }; \ No newline at end of file