diff --git a/src/commands/Community/testeadd.js b/src/commands/Community/testeadd.js index a9a1268..1f5c754 100644 --- a/src/commands/Community/testeadd.js +++ b/src/commands/Community/testeadd.js @@ -3,61 +3,58 @@ const conn = require('../../../database/db'); console.error("--------------------- testeadd.js ---------------------"); -// Função para carregar as escolhas do banco de dados +// Define a função loadChoices antes de usá-la async function loadChoices() { try { - // Supondo que sua tabela de escolhas se chame "choices" e tenha as colunas "name" e "value" + // Supondo que sua tabela de escolhas se chame "choices" e tenha 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() // converte para string se necessário - })), - - - console.log("Escolhas carregadas:", rows); + value: row.value.toString() // converter para string se necessário + })); } catch (err) { console.error("Erro ao carregar escolhas:", err); return []; } } +// 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('Escolhe uma opção') + .setDescription('Arisu - Escolhe uma opção') .setRequired(true) - .setAutocomplete(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' } + ])) ) - // 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) - .setAutocomplete(true) + .addChoices(...(dynamicChoices.length ? dynamicChoices : [ + { name: 'Opção Padrão 1', value: '0' }, + { name: 'Opção Padrão 2', value: '1' } + ])) ), async execute(interaction, client) { - // 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 + // Lógica do comando const guildId = interaction.guild.id; const guildName = interaction.guild.name; const guildownerId = interaction.guild.ownerId; @@ -66,6 +63,7 @@ module.exports = { console.log(`guildName: ${guildName}`); console.log(`guildownerId: ${guildownerId}`); + // Responde imediatamente para evitar timeout await interaction.deferReply(); try {