Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

234
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.

about 4 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.

about 4 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 */
});
about 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!