UNPKG

cwk-ds-tools

Version:

Zero-boilerplate Discord.js bot framework with built-in MongoDB, automod, slash commands, and more

53 lines (41 loc) 1.74 kB
const fs = require('fs'); const path = require('path'); const { log } = require('../utils/logger'); class InteractionHandler { constructor(client) { this.client = client; } async loadInteractions() { const { interactionsDir } = this.client.dirs; const interactionTypes = fs.readdirSync(interactionsDir); for (const type of interactionTypes) { if (!this.client.interactions[type]) continue; const typePath = path.join(interactionsDir, type); const interactionFiles = fs.readdirSync(typePath) .filter(file => file.endsWith('.js')); for (const file of interactionFiles) { const interaction = require(path.join(typePath, file)); const name = file.split('.')[0]; this.client.interactions[type].set(name, interaction); log(`Loaded ${type} interaction: ${name}`, 'info'); } } this.setupInteractionCreate(); } setupInteractionCreate() { this.client.on('interactionCreate', async interaction => { if (interaction.isButton()) { const [name, ...args] = interaction.customId.split('_'); const button = this.client.interactions.buttons.get(name); if (!button) return; await button.execute(interaction, args, this.client); } if (interaction.isModalSubmit()) { const modal = this.client.interactions.modals.get(interaction.customId); if (!modal) return; await modal.execute(interaction, this.client); } }); } } module.exports = { InteractionHandler };