const { EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } = require('discord.js'); const db = require('../../fonctions/database.js'); const embedColor = require('../../fonctions/embedColor.js'); module.exports = { aliases: [], description: 'Change la couleur de vos embed.', emote: '🔵', utilisation: '', permission: 0, async execute(message, args, client) { const embed = new EmbedBuilder() .setTitle('🔵 Embed') .setDescription(`Sélectionnez une couleur pour vos embeds`) .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); const select = new StringSelectMenuBuilder() .setCustomId('color') .setPlaceholder('Sélectionnez une couleur') .addOptions([ { label: '🔴 Rouge', description: 'Prix : 3 rep🔺', value: 'red', }, { label: '🟠 Orange', description: 'Prix : 3 rep🔺', value: 'orange', }, { label: '🟡 Jaune', description: 'Prix : 3 rep🔺', value: 'yellow', }, { label: '🟢 Vert', description: 'Prix : 3 rep🔺', value: 'green', }, { label: '🔵 Bleu', description: 'Prix : 3 rep🔺', value: 'blue', }, { label: '🟣 Violet', description: 'Prix : 3 rep🔺', value: 'purple', }, { label: '🟤 Marron', description: 'Prix : 3 rep🔺', value: 'brown', }, { label: '⚫ Noir', description: 'Prix : 3 rep🔺', value: 'black', }, { label: '⚪ Blanc', description: 'Prix : 3 rep🔺', value: 'white', }, { label: 'Aléatoire 🌈', description: 'Prix : 5 rep🔺', value: 'random', }, ]); const row = new ActionRowBuilder() .addComponents(select); const embedMessage = await message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } }); const filter = (interaction) => interaction.user.id === message.author.id; const collector = embedMessage.createMessageComponentCollector({ filter, time: 60000 }); collector.on('collect', async (interaction) => { if (interaction.isStringSelectMenu()) { if (!client.user) return const value = interaction.values[0]; 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 reputation = user.reputation; if (value === 'random') { if (reputation < 5) { const embed = new EmbedBuilder() .setTitle('Erreur') .setDescription('❌ Vous n\'avez pas assez de réputations pour acheter cette couleur.') .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); return interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } }); } db.run(`UPDATE users SET reputation = reputation - 5, embed = 'random' WHERE guildId = ? AND userId = ?`, [message.guild.id, message.author.id], (err) => { if (err) return console.error(err); }); const embed = new EmbedBuilder() .setTitle('🔵 Embed') .setDescription('✅ Vous avez acheté la couleur aléatoire pour vos embeds.') .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } }); } else { if (reputation < 3) { const embed = new EmbedBuilder() .setTitle('Erreur') .setDescription('❌ Vous n\'avez pas assez de réputations pour acheter cette couleur.') .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); return interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } }); } db.run(`UPDATE users SET reputation = reputation - 3, embed = ? WHERE guildId = ? AND userId = ?`, [value, message.guild.id, message.author.id], (err) => { if (err) return console.error(err); }); const embed = new EmbedBuilder() .setTitle('🔵 Embed') .setDescription(`✅ Vous avez acheté la couleur ${value} pour vos embeds.`) .setColor(await embedColor(message.author.id, message.guild.id)) .setTimestamp() .setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() }); interaction.reply({ embeds: [embed], ephemeral: true, allowedMentions: { repliedUser: false } }); } } }); collector.on('end', async () => { embedMessage.edit({ components: [] }); }); }, };