From 20c67df574136f44ce257f39b185bf4d0df3581c Mon Sep 17 00:00:00 2001 From: Bxio Date: Sat, 5 Apr 2025 10:50:03 +0100 Subject: [PATCH] --- src/commands/Community/testeadd.js | 58 +++++++++++++++--------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/commands/Community/testeadd.js b/src/commands/Community/testeadd.js index 0b8bdc1..1e3df18 100644 --- a/src/commands/Community/testeadd.js +++ b/src/commands/Community/testeadd.js @@ -3,14 +3,15 @@ const conn = require('../../../database/db'); console.error("--------------------- testeadd.js ---------------------"); -// Define a função loadChoices antes de usá-la + +// Função para carregar as escolhas do banco de dados async function loadChoices() { try { - // Supondo que sua tabela de escolhas se chame "choices" e tenha colunas "name" e "value" + // Supondo que sua tabela se chame "choices" e possua as colunas "name" e "value" const [rows] = await conn.execute('SELECT name, value FROM choices'); return rows.map(row => ({ name: row.name, - value: row.value.toString() // converter para string se necessário + value: row.value.toString() // converte para string, se necessário })); } catch (err) { console.error("Erro ao carregar escolhas:", err); @@ -18,47 +19,43 @@ async function loadChoices() { } } -// Carrega as escolhas antes de definir o comando -let dynamicChoices = []; -loadChoices() - .then(choices => { - dynamicChoices = choices; - console.log("Escolhas carregadas:", dynamicChoices); - }) - .catch(err => { - console.error("Falha ao carregar escolhas:", err); - }); - module.exports = { - - - data: new SlashCommandBuilder() .setName('add') .setDescription('Adiciona o servidor à base de dados.') + // Opção "nome" com autocomplete .addStringOption(option => option.setName('nome') - .setDescription('Arisu - Escolhe uma opção') + .setDescription('Escolhe uma opção') .setRequired(true) - // Se as escolhas ainda não estiverem carregadas, defina um conjunto padrão para evitar erros. - - .addChoices(...(dynamicChoices.length ? dynamicChoices : [ - { name: 'Opção Padrão 1', value: '0' }, - { name: 'Opção Padrão 2', value: '1' } - ])) + .setAutocomplete(true) ) + // Opção "tipo_sanguinio1" com autocomplete .addStringOption(option => option.setName('tipo_sanguinio1') .setDescription('Escolha uma opção do banco de dados') .setRequired(true) - .addChoices(...(dynamicChoices.length ? dynamicChoices : [ - { name: 'Opção Padrão 1', value: '0' }, - { name: 'Opção Padrão 2', value: '1' } - ])) + .setAutocomplete(true) ), async execute(interaction, client) { - // Lógica do comando + // Trata a interação de autocomplete + if (interaction.isAutocomplete()) { + const focusedOption = interaction.options.getFocused(true); + try { + const choices = await loadChoices(); + // Filtra as escolhas com base no que o usuário digitou + const filtered = choices.filter(choice => + choice.name.toLowerCase().startsWith(focusedOption.value.toLowerCase()) + ); + return interaction.respond(filtered); + } catch (err) { + console.error("Erro no autocomplete:", err); + return interaction.respond([]); + } + } + + // Execução normal do comando const guildId = interaction.guild.id; const guildName = interaction.guild.name; const guildownerId = interaction.guild.ownerId; @@ -71,6 +68,7 @@ module.exports = { await interaction.deferReply(); try { + // Consulta para verificar a existência do guildId const query = `SELECT * FROM Guilds WHERE guildId = ?`; const [rows] = await conn.execute(query, [guildId]); console.log('✅ Acessou a base de dados:', rows); @@ -80,11 +78,13 @@ module.exports = { } try { + // Verifica se o guildId já está registrado const checkQuery = `SELECT * FROM Guilds WHERE guildId = ?`; const [checkRows] = await conn.execute(checkQuery, [guildId]); if (checkRows.length > 0) { interaction.editReply('❌ Este guildId já está registrado.'); } else { + // Insere o novo guildId na tabela const insertQuery = `INSERT INTO Guilds (guildId, guildownerId) VALUES (?, ?)`; await conn.execute(insertQuery, [guildId, guildownerId]); interaction.editReply('✅ GuildId registrado com sucesso!');