arisu/testes/commands/portista.js
2025-04-18 02:58:50 +01:00

88 lines
3.0 KiB
JavaScript

const { SlashCommandBuilder } = require('discord.js');
const conn = require('../../../database/db');
console.error("--------------------- portista.js ---------------------");
async function getChoicesFromDatabase() {
const query = `SELECT name, value FROM choices`;
let rows;
try {
// Assuming conn is an object with an async method like `query` or `execute`
rows = await conn.execute(query); // Using await for async operation
} catch (err) {
console.error('Erro ao consultar o banco de dados:', err);
return [];
}
if (!Array.isArray(rows)) {
console.error("rows is not an array:", rows);
return []; // Return empty array if data format is incorrect
}
const choices = rows
.filter(row => row && row.name && row.value) // Filtra valores inválidos
.map(row => {
const name = String(row.name).slice(0, 100);
const value = String(row.value).slice(0, 100);
// Filtra qualquer valor que contenha descrições como "VARCHAR(11)" ou "NOT NULL"
if (name.match(/VARCHAR\(\d+\)/) || value.match(/VARCHAR\(\d+\)/)) {
console.warn('⚠️ Valor inválido detectado:', row);
return null; // Ignora esse item
}
return { name, value };
})
.filter(choice => choice !== null); // Remove os itens filtrados
console.log(choices);
return choices;
}
async function createAddCommand() {
// Obtém as opções do banco de dados de forma assíncrona
const choices = await getChoicesFromDatabase();
// Configura o comando /add com as opções carregadas
const data = new SlashCommandBuilder()
.setName('xadd')
.setDescription('Adiciona o servidor à base de dados.')
.addStringOption(option =>
option
.setName('tipo_sanguinio1')
.setDescription('Escolha uma opção do banco de dados')
.setRequired(true)
.addChoices(...choices) // Passa as opções carregadas para o comando
);
return data;
}
module.exports = {
data: createAddCommand(),
async execute(interaction, client) {
const guildId = interaction.guild.id;
const guildownerId = interaction.guild.ownerId;
await interaction.deferReply();
try {
const checkQuery = `SELECT * FROM Guilds WHERE guildId = ?`;
const [checkRows] = await conn.execute(checkQuery, [guildId]);
if (checkRows.length > 0) {
await interaction.editReply('❌ Este guildId já está registrado.');
} else {
const insertQuery = `INSERT INTO Guilds (guildId, guildownerId) VALUES (?, ?)`;
await conn.execute(insertQuery, [guildId, guildownerId]);
await interaction.editReply('✅ GuildId registrado com sucesso!');
}
} catch (err) {
console.error(err);
await interaction.editReply('❌ Ocorreu um erro inesperado.');
}
}
};