const { ActionRowBuilder, StringSelectMenuBuilder, EmbedBuilder } = require('discord.js'); const sqlite3 = require('sqlite3').verbose(); const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: 'setlogs', description: 'Affiche et configure les logs du serveur.', category: 'gestion', emote: '📝', utilisation: 'logs', async execute(message, args) { let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [message.client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); const embed = new EmbedBuilder() .setColor('#0099ff') .setTitle('Configuration des logs') .addFields( { name: '📝 Logs de messages', value: `**Actif**: \`${data[message.guild.id]?.messagelog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.messagelog ? `<#${data[message.guild.id].messagelog}>` : '\`Non configuré\`'}` }, { name: '📚 Logs de rôles', value: `**Actif**: \`${data[message.guild.id]?.rolelog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.rolelog ? `<#${data[message.guild.id].rolelog}>` : '\`Non configuré\`'}` }, { name: '🎙️ Logs vocaux', value: `**Actif**: \`${data[message.guild.id]?.vocallog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.vocallog ? `<#${data[message.guild.id].vocallog}>` : '\`Non configuré\`'}` }, { name: '🛡️ Logs de raid', value: `**Actif**: \`${data[message.guild.id]?.raidlog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.raidlog ? `<#${data[message.guild.id].raidlog}>` : '\`Non configuré\`'}` }, { name: '🔧 Logs de modération', value: `**Actif**: \`${data[message.guild.id]?.modlog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.modlog ? `<#${data[message.guild.id].modlog}>` : '\`Non configuré\`'}` }, { name: '📝 Logs de salons', value: `**Actif**: \`${data[message.guild.id]?.channelog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.channelog ? `<#${data[message.guild.id].channelog}>` : '\`Non configuré\`'}` }, { name: '🚀 Logs de boosts', value: `**Actif**: \`${data[message.guild.id]?.boostlog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.boostlog ? `<#${data[message.guild.id].boostlog}>` : '\`Non configuré\`'}` }, ); const selectMenu = new StringSelectMenuBuilder() .setCustomId(`logsselect_${message.guild.id}`) .setPlaceholder('Sélectionnez un type de log pour le configurer') .addOptions([ { label: '📝 Logs de messages', value: 'messagelog', description: 'Configurer le salon de logs de messages' }, { label: '📚 Logs de rôles', value: 'rolelog', description: 'Configurer le salon de logs de rôles' }, { label: '🎙️ Logs vocaux', value: 'vocallog', description: 'Configurer le salon de logs vocaux' }, { label: '🛡️ Logs de raid', value: 'raidlog', description: 'Configurer le salon de logs de raid' }, { label: '🔧 Logs de modération', value: 'modlog', description: 'Configurer le salon de logs de modération' }, { label: '📝 Logs de salons', value: 'channelog', description: 'Configurer le salon de logs de salons' }, { label: '🚀 Logs de boosts', value: 'boostlog', description: 'Configurer le salon de logs de boosts' }, ]); const row = new ActionRowBuilder() .addComponents(selectMenu); const logmessage = await message.channel.send({ embeds: [embed], components: [row] }); const filter = i => i.customId.startsWith('logsselect_') && i.user.id === message.author.id; const filter2 = m => m.author.id === message.author.id; const collector = logmessage.createMessageComponentCollector({ filter:filter, time: 150000 }); collector.on('collect', async i => { await i.deferReply(); const guildId = i.customId.split('_')[1]; const logdata = i.values[0]; const question = await i.editReply("Veuillez envoyer un salon"); const channelCollector = message.channel.createMessageCollector({ filter: filter2, max: 1, time: 60000 }); channelCollector.on('collect', async m => { let channelId; let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [message.client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); const channelMention = m.mentions.channels.first(); if (channelMention) { channelId = channelMention.id; } else { const idMatch = m.content.match(/(\d{17,19})/); if (idMatch) { channelId = idMatch[0]; } else { return message.reply('Veuillez fournir une mention de salon valide ou un ID.'); } } const channel = message.guild.channels.cache.get(channelId); if (!channel) { return message.reply('Le salon fourni n\'existe pas.'); } data[guildId] = data[guildId] || {}; data[guildId][logdata] = channelId; db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [message.client.user.id, JSON.stringify(data)], (err) => { if (err) { return message.reply('Une erreur s\'est produite lors de la mise à jour de la base de données.'); } }); data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [message.client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); await m.delete(); await question.delete(); const updatedEmbed = new EmbedBuilder() .setColor('#0099ff') .setTitle('Configuration des logs') .addFields( { name: '📝 Logs de messages', value: `**Actif**: \`${data[message.guild.id]?.messagelog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.messagelog ? `<#${data[message.guild.id].messagelog}>` : '\`Non configuré\`'}` }, { name: '📚 Logs de rôles', value: `**Actif**: \`${data[message.guild.id]?.rolelog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.rolelog ? `<#${data[message.guild.id].rolelog}>` : '\`Non configuré\`'}` }, { name: '🎙️ Logs vocaux', value: `**Actif**: \`${data[message.guild.id]?.vocallog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.vocallog ? `<#${data[message.guild.id].vocallog}>` : '\`Non configuré\`'}` }, { name: '🛡️ Logs de raid', value: `**Actif**: \`${data[message.guild.id]?.raidlog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.raidlog ? `<#${data[message.guild.id].raidlog}>` : '\`Non configuré\`'}` }, { name: '🔧 Logs de modération', value: `**Actif**: \`${data[message.guild.id]?.modlog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.modlog ? `<#${data[message.guild.id].modlog}>` : '\`Non configuré\`'}` }, { name: '📝 Logs de salons', value: `**Actif**: \`${data[message.guild.id]?.channelog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.channelog ? `<#${data[message.guild.id].channelog}>` : '\`Non configuré\`'}` }, { name: '🚀 Logs de boosts', value: `**Actif**: \`${data[message.guild.id]?.boostlog ? '✅' : '❌'}\`\n **Salon: **${data[message.guild.id]?.boostlog ? `<#${data[message.guild.id].boostlog}>` : '\`Non configuré\`'}` }, ); logmessage.edit({ embeds: [updatedEmbed], components: [row] }); }); }); }, };