• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

172
Views
Have separate files per button & communicate with various command files when processing Discord's `interactionCreate` event for buttons?

Sorry if this seems vague, I've put as much effort into it as I can.

Discord.JS v13 has an event called interactionCreate. I am planning on migrating my Discord.JS v12 bot to v13 very soon, but I need to understand how to communicate my interactionCreate button events with my command files as well as have separate files for each button before I create my bot.

I don't have any code to show you because I haven't started making the v13 version of my bot, as I need to know this information before I start creating it.

almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Use the MessageComponent collectors to respond to interactions via a command file; no need to use interactionCreate for this.

almost 3 years ago · Juan Pablo Isaza Report

0

There are many different ways you could achieve this but here is two ways to do it:

Functions for each command:

// index.js

client.on('interactionCreate', (interaction) => {
    if (interaction.isButton()) {
        switch (interaction.customId) {
            case 'command1':
                require('./commands/command1').handleButton(interaction);
                break;
            case 'command2':
                require('./commands/command2').handleButton(interaction);
                break;
            /* etc. */
        }
    }
    /* ... */
});
// commands/command1.js

/* command logic */

module.exports.handleButton = (interaction) => {
    /* logic here */
};

Collectors

You can find the documentation for message component collectors here

// index.js

client.on('interactionCreate', (interaction) => {
    if (interaction.isButton()) {
        return;
    }
    /* ... */
});
// commands/command1.js

/* ... */

const collector = message.createMessageComponentCollector({
    filter: (interaction) => {
        /* filter what message component you want to collect 
            for example: */
        return interaction.message.id === message.id;
    }
});

collector.on('collect', (interaction) => {
    /* button logic here */
});
almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error