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 > 25) { m.reply("Le nom de la team ne doit pas dépasser 25 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 > 250) { m.reply( "La description de la team ne doit pas dépasser 250 caractères.", ); return collectorD.stop(); } else if (m.content.length < 5) { m.reply( "La description de la team doit contenir au moins 5 caractères.", ); return collectorD.stop(); } else { teamDescription = m.content; let idBase = teamName.toLowerCase().replace(/ /g, ""); idBase = idBase.replace("0", ""); idBase = idBase.replace("1", ""); idBase = idBase.replace("2", ""); idBase = idBase.replace("3", ""); idBase = idBase.replace("4", ""); idBase = idBase.replace("5", ""); idBase = idBase.replace("6", ""); idBase = idBase.replace("7", ""); idBase = idBase.replace("8", ""); idBase = idBase.replace("9", ""); let id = idBase; let increment = 0; 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 += 1; 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\` (vous deverez d'abord donner la team a quelqu'un d'autre).`, ) .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(); } }); } }); }, };