2025-05-01 21:24:41 +01:00

62 lines
2.5 KiB
JavaScript

// 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!' });
}
},
};