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.
Use the MessageComponent collectors to respond to interactions via a command file; no need to use interactionCreate
for this.
There are many different ways you could achieve this but here is two ways to do it:
// 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 */
};
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 */
});