This commit is contained in:
Bxio 2025-04-04 21:25:48 +01:00
parent ae89947759
commit 3da5eac057

View File

@ -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 {