This commit is contained in:
Bxio 2025-05-01 21:38:07 +01:00
parent 1936684a8c
commit fe0a06bdfc
2 changed files with 88 additions and 93 deletions

View File

@ -1,42 +1,57 @@
// events/interactionCreate.js // events/interactionCreate.js
const conn = require('../../../database/db'); const { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, MessageFlags } = require('discord.js');
const conn = require('../../../database/db'); // Ajusta o caminho
module.exports = { module.exports = {
name: 'interactionCreate', name: 'interactionCreate',
async execute(interaction, client) { 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;
const metas = { if (interaction.isAutocomplete()) {
carvao: Number(carvao), const focusedValue = interaction.options.getFocused(true);
enxofre: Number(enxofre),
};
try { if (interaction.commandName === 'addmembro') {
await conn.query( console.error(focusedValue);
'UPDATE users SET meta = ? WHERE discord_id = ?', if (focusedValue.name == 'cargo'){
[JSON.stringify(metas), userId]
);
await interaction.reply({ try {
content: '✅ Metas atualizadas com sucesso!', const [rows] = await conn.execute(
ephemeral: true, 'SELECT name,value FROM choices LIMIT 25',
}); [`%${focusedValue}%`]
} catch (err) { );
console.error('Erro ao atualizar metas:', err);
await interaction.reply({ const suggestions = rows.map(row => ({
content: '❌ Ocorreu um erro ao salvar as metas.', name: row.name,
ephemeral: true, value: row.value,
}); }));
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([]);
}
}
}
} }
} },
}
},
}; };

View File

@ -1,62 +1,42 @@
const { ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder } = require('discord.js'); // events/interactionCreate.js
const conn = require('../../../database/db'); // Ajusta o caminho const conn = require('../../../database/db');
module.exports = (client) => { module.exports = {
client.on('interactionCreate', async interaction => { name: 'interactionCreate',
if (interaction.isChatInputCommand()) { async execute(interaction, client) {
const command = client.commands.get(interaction.commandName); // Deixa os comandos slash serem tratados normalmente
if (command) await command.execute(interaction); 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;
const metas = {
carvao: Number(carvao),
enxofre: Number(enxofre),
};
try {
await conn.query(
'UPDATE users SET meta = ? WHERE discord_id = ?',
[JSON.stringify(metas), userId]
);
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,
});
} }
}
// Botão }
if (interaction.isButton() && interaction.customId === 'editar_metas') { },
const modal = new ModalBuilder()
.setCustomId('modal_editar_metas')
.setTitle('Editar Metas');
const carvao = new TextInputBuilder()
.setCustomId('carvao')
.setLabel('Meta de carvão')
.setStyle(TextInputStyle.Short)
.setRequired(false);
const enxofre = new TextInputBuilder()
.setCustomId('enxofre')
.setLabel('Meta de enxofre')
.setStyle(TextInputStyle.Short)
.setRequired(false);
const row1 = new ActionRowBuilder().addComponents(carvao);
const row2 = new ActionRowBuilder().addComponents(enxofre);
modal.addComponents(row1, row2);
await interaction.showModal(modal);
}
// Modal
if (interaction.isModalSubmit() && interaction.customId === 'modal_editar_metas') {
const novoCarvao = interaction.fields.getTextInputValue('carvao');
const novoEnxofre = interaction.fields.getTextInputValue('enxofre');
const [result] = await conn.execute('SELECT meta FROM users WHERE discord_id = ?', [interaction.user.id]);
let metas = {};
try {
metas = JSON.parse(result[0]?.meta || '{}');
} catch {}
if (!metas.carvao) metas.carvao = { atual: 0, alvo: 0 };
if (!metas.enxofre) metas.enxofre = { atual: 0, alvo: 0 };
if (!isNaN(parseInt(novoCarvao))) metas.carvao.alvo = parseInt(novoCarvao);
if (!isNaN(parseInt(novoEnxofre))) metas.enxofre.alvo = parseInt(novoEnxofre);
await conn.execute('UPDATE users SET meta = ? WHERE discord_id = ?', [
JSON.stringify(metas),
interaction.user.id
]);
await interaction.reply({ content: '✅ Metas atualizadas com sucesso!', ephemeral: true });
}
});
}; };