// comandos/add.js const { InteractionContextType, EmbedBuilder, SlashCommandBuilder } = require('discord.js'); const conn = require('../../../database/db'); // Ajusta o caminho console.error("--------------------- lista_membro.js ---------------------"); module.exports = { data: new SlashCommandBuilder() .setName('membros') .setDescription('Exibe as informações do membro que enviou o comando.'), async execute(interaction) { await interaction.deferReply({ ephemeral: true }); try { // Consulta os dados do usuário que executou o comando (usando interaction.user.id) const [rows] = await conn.execute( 'SELECT u.id, u.discord_id, u.discord_username, u.nig, u.meta, c.name AS nomedocargo FROM users u JOIN choices c ON u.cargo = c.value WHERE u.discord_id = ? ORDER BY c.id DESC', [interaction.user.id] // Passa o ID do usuário que executou o comando ); if (!rows.length) { return await interaction.editReply('Nenhum membro encontrado.'); } const embed = new EmbedBuilder().setColor("#00b0f4"); // Pega as metas do usuário const row = rows[0]; // Já que é apenas um usuário, podemos pegar o primeiro da lista let metas = {}; try { if (row.meta) { metas = JSON.parse(row.meta); } } catch (err) { console.warn('JSON mal formatado para usuário:', row.discord_username); } let metasText = ''; for (const [nomejson, dados] of Object.entries(metas)) { if (typeof dados === 'object' && dados !== null && 'alvo' in dados && 'atual' in dados) { metasText += `* *${nomejson}:* \`${dados.atual} / ${dados.alvo}\`\n`; } else { metasText += `* *${nomejson}:* \`formato inválido\`\n`; } } embed.addFields({ name: '', value: `\n\n> **${row.nig}** \n > <@${row.discord_id}>\n **Cargo:** \`${row.nomedocargo}\` \n**Meta Semanal:** \n${metasText}\n\n`, inline: true }); await interaction.editReply({ embeds: [embed] }); } catch (error) { console.error('Erro ao acessar o banco de dados:', error); await interaction.editReply({ content: 'Erro ao carregar os dados do membro!' }); } }, };