const { Events } = require("discord.js") const path = require("path") const fs = require("fs") /** @param { import('discord.js').Client } client */ function loadButtonEvents(client) { const btnPath = path.join(__dirname, "..", "..", "events", "buttons") const btnFiles = fs.readdirSync(btnPath).filter(file => file.endsWith(".js")) for (const file of btnFiles) { const filePath = path.join(btnPath, file) const btn = require(filePath) if ("name" in btn && "execute" in btn && btn.type === "button") { client.events.set(btn.name, btn) } else { console.log(`[WARNING] The button at ${filePath} is missing a required "name", "execute" or "type" property.`) } } client.on(Events.InteractionCreate, async event => { if (!event.isButton()) return const event2 = event.client.events.get(event.customId) if (!event2) { console.error(`No event matching ${event.customId} was found.`) return } try { await event2.execute(event) } catch (error) { console.error(error) await event.reply({ content: "There was an error while executing this event!", ephemeral: true }) } }) } module.exports = { loadButtonEvents }