From 3da5eac057cc12d1aeddb73a2de46834eb4404f5 Mon Sep 17 00:00:00 2001 From: Bxio Date: Fri, 4 Apr 2025 21:25:48 +0100 Subject: [PATCH] --- src/commands/Community/testeadd.js | 51 +++++++++++++++--------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/commands/Community/testeadd.js b/src/commands/Community/testeadd.js index 4003e10..2983cc4 100644 --- a/src/commands/Community/testeadd.js +++ b/src/commands/Community/testeadd.js @@ -3,14 +3,14 @@ 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 de escolhas se chame "choices" e tenha 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,43 +18,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.') + // Usa autocomplete para a opção "nome" .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) ) + // Outra opção também com autocomplete (se necessário) .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 + // Se a interação for do tipo autocomplete, trata-a separadamente + if (interaction.isAutocomplete()) { + const focusedOption = interaction.options.getFocused(true); + try { + const choices = await loadChoices(); + // Filtra os resultados com base no valor digitado pelo usuário + 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([]); + } + } + + // Se não for autocomplete, segue a execução normal do comando const guildId = interaction.guild.id; const guildName = interaction.guild.name; const guildownerId = interaction.guild.ownerId; @@ -63,7 +63,6 @@ module.exports = { console.log(`guildName: ${guildName}`); console.log(`guildownerId: ${guildownerId}`); - // Responde imediatamente para evitar timeout await interaction.deferReply(); try {