const { Client, GatewayIntentBits, Partials, Collection, } = require('discord.js'); const fs = require('fs'); const path = require('path'); const config = require('./config.json'); const deployCommands = require('./deploy-commands'); const { User, Message, GuildMember, ThreadMember } = Partials; const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMembers, ], partials: [User, Message, GuildMember, ThreadMember], }); // ✅ Estados dinámicos const estados = [ () => `👥 ${client.guilds.cache.reduce((a, g) => a + g.memberCount, 0)} usuarios.`, () => `🛡️・Developed by: Klaizz`, ]; let i = 0; function actualizarEstado() { const estado = estados[i % estados.length](); client.user.setActivity(estado, { type: 3 }); // Watching i++; } client.once('ready', () => { console.log(`✅ Bot iniciado como ${client.user.tag}`); setInterval(actualizarEstado, 3000); }); client.on('guildMemberAdd', actualizarEstado); client.on('guildMemberRemove', actualizarEstado); client.commands = new Collection(); const commandsPath = path.join(__dirname, 'commands'); const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); for (const file of commandFiles) { const filePath = path.join(commandsPath, file); const command = require(filePath); if ('data' in command && 'execute' in command) { client.commands.set(command.data.name, command); } else { console.warn(`[ADVERTENCIA] El comando en ${filePath} está mal definido.`); } } client.on('interactionCreate', async interaction => { if (interaction.isChatInputCommand()) { const command = client.commands.get(interaction.commandName); if (!command) return; try { await command.execute(interaction); } catch (e) { console.error(e); if (!interaction.replied && !interaction.deferred) { await interaction.reply({ content: 'Error ejecutando comando', ephemeral: true }); } else { await interaction.followUp({ content: 'Error ejecutando comando', ephemeral: true }); } } } }); client.login(config.token);