This commit is contained in:
parent
489a62b026
commit
3880dcb5bf
@ -1,40 +1,43 @@
|
|||||||
// src/commands/community/meta.js
|
// src/commands/community/meta.js
|
||||||
const {
|
const {
|
||||||
SlashCommandBuilder,
|
SlashCommandBuilder,
|
||||||
ModalBuilder,
|
|
||||||
TextInputBuilder,
|
|
||||||
TextInputStyle,
|
|
||||||
ActionRowBuilder,
|
ActionRowBuilder,
|
||||||
|
StringSelectMenuBuilder,
|
||||||
} = require('discord.js');
|
} = require('discord.js');
|
||||||
|
const conn = require('../../../database/db');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
data: new SlashCommandBuilder()
|
data: new SlashCommandBuilder()
|
||||||
.setName('meta')
|
.setName('meta')
|
||||||
.setDescription('Atualiza a meta de um recurso específico.')
|
.setDescription('Escolhe um recurso para editar a meta.'),
|
||||||
.addStringOption(option =>
|
|
||||||
option.setName('recurso')
|
|
||||||
.setDescription('O nome do recurso (ex: enxofre, ferro)')
|
|
||||||
.setRequired(true)
|
|
||||||
),
|
|
||||||
|
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
const recurso = interaction.options.getString('recurso');
|
const userId = interaction.user.id;
|
||||||
|
const [rows] = await conn.query('SELECT meta FROM users WHERE discord_id = ?', [userId]);
|
||||||
|
|
||||||
const modal = new ModalBuilder()
|
if (!rows.length || !rows[0].meta) {
|
||||||
.setCustomId(`definirMeta-${recurso}`) // inclui o nome no ID
|
return interaction.reply({ content: '❌ Nenhuma meta encontrada.', ephemeral: true });
|
||||||
.setTitle(`Definir meta para: ${recurso}`);
|
}
|
||||||
|
|
||||||
const alvoInput = new TextInputBuilder()
|
const metas = JSON.parse(rows[0].meta);
|
||||||
.setCustomId('alvo')
|
|
||||||
.setLabel(`Nova meta para ${recurso}`)
|
|
||||||
.setStyle(TextInputStyle.Short)
|
|
||||||
.setPlaceholder('Ex: 1000')
|
|
||||||
.setRequired(true);
|
|
||||||
|
|
||||||
const row = new ActionRowBuilder().addComponents(alvoInput);
|
const options = Object.keys(metas).map(key => ({
|
||||||
modal.addComponents(row);
|
label: key,
|
||||||
|
value: key,
|
||||||
|
}));
|
||||||
|
|
||||||
await interaction.showModal(modal);
|
const select = new StringSelectMenuBuilder()
|
||||||
|
.setCustomId('selecionarRecurso')
|
||||||
|
.setPlaceholder('Escolhe o recurso...')
|
||||||
|
.addOptions(options);
|
||||||
|
|
||||||
|
const row = new ActionRowBuilder().addComponents(select);
|
||||||
|
|
||||||
|
await interaction.reply({
|
||||||
|
content: '🛠️ Escolhe o recurso que queres editar:',
|
||||||
|
components: [row],
|
||||||
|
ephemeral: true,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1,4 +1,5 @@
|
|||||||
// events/interactionCreate.js
|
// events/interactionCreate.js
|
||||||
|
const { ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder } = require('discord.js');
|
||||||
const conn = require('../../../database/db');
|
const conn = require('../../../database/db');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
@ -6,6 +7,29 @@ module.exports = {
|
|||||||
async execute(interaction, client) {
|
async execute(interaction, client) {
|
||||||
if (interaction.isCommand()) return;
|
if (interaction.isCommand()) return;
|
||||||
|
|
||||||
|
// 🟡 Quando o usuário escolhe o recurso no menu
|
||||||
|
if (interaction.isStringSelectMenu() && interaction.customId === 'selecionarRecurso') {
|
||||||
|
const recurso = interaction.values[0]; // Ex: 'carvao', 'enxofre'
|
||||||
|
|
||||||
|
// Cria o modal com base no recurso escolhido
|
||||||
|
const modal = new ModalBuilder()
|
||||||
|
.setCustomId(`definirMeta-${recurso}`)
|
||||||
|
.setTitle(`Definir meta para: ${recurso}`);
|
||||||
|
|
||||||
|
const alvoInput = new TextInputBuilder()
|
||||||
|
.setCustomId('alvo')
|
||||||
|
.setLabel(`Nova meta para ${recurso}`)
|
||||||
|
.setStyle(TextInputStyle.Short)
|
||||||
|
.setPlaceholder('Ex: 1000')
|
||||||
|
.setRequired(true);
|
||||||
|
|
||||||
|
const row = new ActionRowBuilder().addComponents(alvoInput);
|
||||||
|
modal.addComponents(row);
|
||||||
|
|
||||||
|
return await interaction.showModal(modal);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 🟢 Quando o usuário envia o modal
|
||||||
if (interaction.isModalSubmit()) {
|
if (interaction.isModalSubmit()) {
|
||||||
const [prefix, recurso] = interaction.customId.split('-');
|
const [prefix, recurso] = interaction.customId.split('-');
|
||||||
|
|
||||||
@ -17,7 +41,6 @@ module.exports = {
|
|||||||
const [rows] = await conn.query('SELECT meta FROM users WHERE discord_id = ?', [userId]);
|
const [rows] = await conn.query('SELECT meta FROM users WHERE discord_id = ?', [userId]);
|
||||||
|
|
||||||
let metas = {};
|
let metas = {};
|
||||||
|
|
||||||
if (rows.length > 0 && rows[0].meta) {
|
if (rows.length > 0 && rows[0].meta) {
|
||||||
metas = JSON.parse(rows[0].meta);
|
metas = JSON.parse(rows[0].meta);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user