const { EmbedBuilder } = require('discord.js'); const embedColor = require('../../fonctions/embedColor.js'); const db = require('../../fonctions/database.js'); let allianceName let allianceDescription module.exports = { aliases: ['alliancecreate'], description: 'Crée une alliance.', emote: '✒️', utilisation: '', permission: 0, async execute(message, args, client) { await new Promise((resolve, reject) => { db.get(`SELECT * FROM users WHERE userId = ? AND guildId = ?`, [message.author.id, message.guild.id], (err, row) => { if (err) { reject(err); } else { if (row.teamRole !== owner ) { embedColor(message.author.id, message.guild.id).then(color => { const embed = new EmbedBuilder() .setTitle('🛡️ Création de alliance') .setDescription(`Vous n'êtes pas proprietaire d'une team.`) .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 alliance') .setDescription(`Vous n'avez pas assez de fonds pour créer une alliance. Vous avez besoin de 3000coins.`) .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 d\'alliance') .setDescription(`Ecrivez le nom de votre alliance 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 l\'alliance ne doit pas dépasser 25 caractères.'); return collector.stop(); } else if (m.content.length < 3) { m.reply('Le nom de l\'alliance doit contenir au moins 3 caractères.'); return collector.stop(); } else { allianceName = m.content; const embed = new EmbedBuilder() .setTitle('🛡️ Création de l\'alliance') .setDescription(`Ecrivez la description de votre alliance 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 l\'alliance ne doit pas dépasser 250 caractères.'); return collectorD.stop(); } else if (m.content.length < 5) { m.reply('La description de l\'alliance doit contenir au moins 5 caractères.'); return collectorD.stop(); } else { allianceDescription = m.content; let idBase = allianceName.toLowerCase().replace(/ /g, ''); idBase = allianceName.toLowerCase().replace('0', ''); idBase = allianceName.toLowerCase().replace('1', ''); idBase = allianceName.toLowerCase().replace('2', ''); idBase = allianceName.toLowerCase().replace('3', ''); idBase = allianceName.toLowerCase().replace('4', ''); idBase = allianceName.toLowerCase().replace('5', ''); idBase = allianceName.toLowerCase().replace('6', ''); idBase = allianceName.toLowerCase().replace('7', ''); idBase = allianceName.toLowerCase().replace('8', ''); idBase = allianceName.toLowerCase().replace('9', ''); let id = idBase; let increment = '-'; let exists = true; do { await new Promise((resolve, reject) => { db.get(`SELECT * FROM alliances 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 alliances (guildId, id, name, description, creator) VALUES (?, ?, ?, ?, ?)`, [message.guild.id, id, allianceName, allianceDescription, message.author.id]); db.run(`UPDATE teams SET allianceId = ? WHERE guildId = ? AND userId = ?`, [id, message.guild.id, message.author.id]); } resolve(); } }); }); } while (exists); const embed = new EmbedBuilder() .setTitle('🛡️ Création de l\'alliance') .setDescription(`Votre alliance a été créée avec succès !\n\n**ID :** ${id}\n**Nom :** ${allianceName}\n**Description :** ${allianceDescription}\n\nVous pouvez maintenant inviter des owners de team dans votre alliance avec la commande \`&allianceinvite\`.\n\nPour quitter la alliance, utilisez la commande \`&allianceleave\` (vous deverez d'abord donner l\'alliance à 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(); } }); } }); } };