62 lines
2.5 KiB
JavaScript
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!' });
|
|
}
|
|
},
|
|
}; |