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(); } }); } }); } };