diff --git a/src/commands/Community/meta.js b/src/commands/Community/meta.js index d8b2f6a..7409b31 100644 --- a/src/commands/Community/meta.js +++ b/src/commands/Community/meta.js @@ -1,114 +1,42 @@ -// comandos/Community/meta.js -const { ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, SlashCommandBuilder } = require('discord.js'); -const conn = require('../../../database/db'); // Ajusta o caminho - -module.exports = { +// src/commands/community/meta.js +const { + SlashCommandBuilder, + ModalBuilder, + TextInputBuilder, + TextInputStyle, + ActionRowBuilder, + } = require('discord.js'); + + module.exports = { data: new SlashCommandBuilder() - .setName('meta') - .setDescription('Exibe as informações do membro que enviou o comando.'), - + .setName('meta') + .setDescription('Verifica ou atualiza as tuas metas na base de dados.'), + async execute(interaction) { - await interaction.deferReply({ ephemeral: true }); - - try { - 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] - ); - - if (!rows.length) { - return await interaction.editReply('Nenhum membro encontrado.'); - } - - const embed = new EmbedBuilder().setColor("#00b0f4"); - 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 - }); - - const button = new ActionRowBuilder().addComponents( - new ButtonBuilder() - .setCustomId('edit_meta') - .setLabel('Editar Meta') - .setStyle(ButtonStyle.Primary) - ); - - await interaction.editReply({ embeds: [embed], components: [button] }); - - } catch (error) { - console.error('Erro ao acessar o banco de dados:', error); - await interaction.editReply({ content: 'Erro ao carregar os dados do membro!' }); - } + const modal = new ModalBuilder() + .setCustomId('definirMeta') + .setTitle('Definir metas semanais'); + + const carvaoInput = new TextInputBuilder() + .setCustomId('carvao') + .setLabel('Meta de carvão') + .setStyle(TextInputStyle.Short) + .setPlaceholder('Ex: 1000') + .setRequired(true); + + const enxofreInput = new TextInputBuilder() + .setCustomId('enxofre') + .setLabel('Meta de enxofre') + .setStyle(TextInputStyle.Short) + .setPlaceholder('Ex: 800') + .setRequired(true); + + const firstRow = new ActionRowBuilder().addComponents(carvaoInput); + const secondRow = new ActionRowBuilder().addComponents(enxofreInput); + + modal.addComponents(firstRow, secondRow); + + await interaction.showModal(modal); }, - - async handleButtonClick(interaction) { - if (interaction.customId === 'edit_meta') { - const modal = new ModalBuilder() - .setCustomId('meta_modal') - .setTitle('Editar Meta'); - - modal.addComponents( - new ActionRowBuilder().addComponents( - new TextInputBuilder() - .setCustomId('new_atual') - .setLabel('Novo valor de Atual') - .setStyle(TextInputStyle.Short) - .setPlaceholder('Insira o novo valor...') - .setRequired(true) - ) - ); - - await interaction.showModal(modal); - } - }, - - async handleModalSubmit(interaction) { - const newAtual = interaction.fields.getTextInputValue('new_atual'); - - try { - const [rows] = await conn.execute( - 'SELECT u.id, u.meta FROM users u WHERE u.discord_id = ?', - [interaction.user.id] - ); - - if (!rows.length) { - return await interaction.reply({ content: 'Usuário não encontrado', ephemeral: true }); - } - - let metas = JSON.parse(rows[0].meta); - - metas['carvao'].atual = newAtual; - - await conn.execute( - 'UPDATE users SET meta = ? WHERE discord_id = ?', - [JSON.stringify(metas), interaction.user.id] - ); - - await interaction.reply({ content: 'Meta atualizada com sucesso!', ephemeral: true }); - } catch (error) { - console.error('Erro ao atualizar a meta no banco de dados:', error); - await interaction.reply({ content: 'Erro ao atualizar a meta!', ephemeral: true }); - } - } -}; + }; + \ No newline at end of file diff --git a/src/events/handlers/adicionar_membro.js b/src/events/handlers/adicionar_membro.js index f7c49ee..5cae771 100644 --- a/src/events/handlers/adicionar_membro.js +++ b/src/events/handlers/adicionar_membro.js @@ -1,57 +1,42 @@ // events/interactionCreate.js -const { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, MessageFlags } = require('discord.js'); -const conn = require('../../../database/db'); // Ajusta o caminho - +const conn = require('../../../database/db'); module.exports = { - name: 'interactionCreate', - async execute(interaction, client) { + name: 'interactionCreate', + async execute(interaction, client) { + // Deixa os comandos slash serem tratados normalmente + if (interaction.isCommand()) return; + // Trata submissões de modal + if (interaction.isModalSubmit()) { + if (interaction.customId === 'definirMeta') { + const carvao = interaction.fields.getTextInputValue('carvao'); + const enxofre = interaction.fields.getTextInputValue('enxofre'); + const userId = interaction.user.id; - if (interaction.isAutocomplete()) { - const focusedValue = interaction.options.getFocused(true); - - if (interaction.commandName === 'addmembro') { - console.error(focusedValue); - if (focusedValue.name == 'cargo'){ - - try { - const [rows] = await conn.execute( - 'SELECT name,value FROM choices LIMIT 25', - [`%${focusedValue}%`] - ); + const metas = { + carvao: Number(carvao), + enxofre: Number(enxofre), + }; - const suggestions = rows.map(row => ({ - name: row.name, - value: row.value, - })); + try { + await conn.query( + 'UPDATE users SET meta = ? WHERE discord_id = ?', + [JSON.stringify(metas), userId] + ); - await interaction.respond(suggestions); - } catch (err) { - console.error('Erro ao buscar sugestões:', err); - await interaction.respond([]); - } - } - if (focusedValue.name == 'raça'){ - try { - const [rows] = await conn.execute( - 'SELECT name,value FROM choices LIMIT 25', - [`%${focusedValue}%`] - ); - - const suggestions = rows.map(row => ({ - name: row.name, - value: row.value, - })); - - await interaction.respond(suggestions); - } catch (err) { - console.error('Erro ao buscar sugestões:', err); - await interaction.respond([]); - } - } - - } + await interaction.reply({ + content: '✅ Metas atualizadas com sucesso!', + ephemeral: true, + }); + } catch (err) { + console.error('Erro ao atualizar metas:', err); + await interaction.reply({ + content: '❌ Ocorreu um erro ao salvar as metas.', + ephemeral: true, + }); } - }, -}; \ No newline at end of file + } + } + }, +};