Create Collectors
Some of your commands or features are sometimes based on user interactions. E.g. if a user presses a button and you want
to know whether it was pressed. This is actually done by listening to the interactionCreate
event.
But sometimes you need to access locale variables or don't want to "hardcode" the part.
That's why it's sometimes recommended to create collectors.
Collectors are listeners that listen to a specific event. In addition, you can provide a filter, so you only receive certain interactions.
Use a Collector
We have a pre-made class for collectors which you can find here.
const Discord = require('discordeno.js')
const filter = m =>
m.data?.customId === 'warn_modal' && m.user.id === interaction.user.id
const listener = client.eventListener // When the eventListener property is named different
const collector = new Discord.Collector('interactionCreate', {
client: client,
timeout: 60000,
filter,
max: 20,
listener,
})
collector.on('collect', m => {
const interaction = client.interactions.forge(m)
// Stop Collector
// collector.stop();
})
// Fires on a timeout, when the collector has reached the max amount of interactions or when it has been closed
collector.on('end', collected => {
// Map of Collected Interactions
console.log(collected)
})
As you can see, this opens up many possibilities. You can listen to any event and get the interaction you need.
Collector Options
filter
: Function, just fire the event if the filter returns true. timeout
: Number, the time in milliseconds until
the collector times out. max
: Number, the max amount of interactions the collector can collect. listener
: Function,
the listener that will be fired when the collector collects an interaction. Just required when client property is named
differently.