Enhanced Collector Module for Discord.js
You can write your suggestions on Discord.
Why djs-extended-collectors?
TypeScript Support(Full).
UMD, CJS and ESM Build
More Collectors.
Extended Discord.js Collectors.
Useful & Basic.
Discord.js v14 or newer required
@chocolatemilkdev/emitter: 1.0.7
ApplicationCommandCollector
AutocompleteCollector
BaseCollector(you can make your custom collector with this)
MessageCollector
MessageComponentCollector
MessageReactionCollector
ModalSubmitCollector
PollAnswerCollector
awaitApplicationCommands
awaitAutoCompletes
awaitMessages
awaitModalSubmits
awaitMessageComponents
awaitMessageReactions
awaitPollAnswers
added PollAnswerCollector/awaitPollAnswers.
import * as DjsExtendedCollectors from "djs-extended-collectors" //on esm & ts.
/*
* on commonjs
* const DjsExtendedCollectors = require("djs-extended-collectors")
*/
const client = new Discord . Client ( {
intents : [ Object . values ( Intents ) ] //activate all intents
} )
client . on ( "interactionCreate" , async ( interaction ) => {
if ( interaction . isCommand ( ) && interaction . commandName === "yes-or-no" ) {
const collector = new DjsExtendedCollectors . ApplicationCommandCollector ( client , interaction . channel , {
time : 5000 ,
idleTime : 10000 ,
collectFilter : ( interaction ) => {
return interaction . commandName === "yes" || interaction . commandName === "no"
}
} )
collector . on ( "collect" , ( intr ) => {
if ( intr . commandName === "yes" ) {
intr . reply ( "you say yes :)" )
}
} )
}
} )
client . login ( "your bot's token" )
This module is support to you create your custom Collector and typing with TypeScript .
import { BaseCollector , BaseCollectorOptions , TextBasedChannel } from "djs-extended-collectors" ;
import { Client , Channel } from "discord.js"
interface MyCollectorEvents extends BaseCollectorEvents < [ msg : Message ] > {
event ( msg : Message ) : any ;
} ;
class MyCollector extends BaseCollector < string , [ msg : Message ] , MyCollectorEvents > {
channel : TextBasedChannel
constructor ( client : Client , channel : Channel , options : BaseCollectorOptions < [ msg : Message ] > ) {
super ( client , options )
this . channel = channel
this . client . on ( "messageCreate" , ( msg ) => this . handleCollect ( msg ) )
}
handleCollect ( msg : Message ) {
if ( msg . channel . id !== this . channel . id ) return ;
this . collected . set ( msg . id , [ msg ] )
this . emit ( "collect" , msg )
}
}
Discord