const { Client, Collection, Events, GatewayIntentBits } = require('discord.js'); const { token } = require('./config.json'); const fs = require('node:fs'); const path = require('node:path'); const informationStatus = "[STATUS]: "; const warningStatus = "[WARNING]: "; const errorStatus = "[ERROR]: "; const client = new Client({ intents: [GatewayIntentBits.Guilds] }); client.commands = new Collection(); const foldersPath = path.join(__dirname, './commands/'); const commandFolders = fs.readdirSync(foldersPath); for (const folder of commandFolders) { const commandsPath = path.join(foldersPath, folder); 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.log(warningStatus + `This file at ${filePath} does not contain data or execute properties, will be ignored.`); } } } client.once(Events.ClientReady, readyClient => { console.log(informationStatus + "Client is online!"); }); client.on(Events.InteractionCreate, async interaction => { if(!interaction.isChatInputCommand()) return; const command = interaction.client.commands.get(interaction.commandName); if(!command) { console.log(errorStatus + "No commands matching ${interaction.commandName} was not found! (Repair!)") console.error(error); } try { await command.execute(interaction); } catch (error) { console.console(errorStatus + "Something went wrong while executing this command! Please use the information below and sudmit to the author of the issue!"); console.error(error); if(interaction.replied || interaction.deferred) { await interaction.followUp({ content: 'Error executing this command! Something went wrong, try again later.', ephemeral: true }); } else { await interaction.reply({ content: 'Error executing this command! Something went wrong, try again later.', ephemeral: true }); } } }); client.login(token);