- Enhanced Collector Module for Discord.js
- You can write your suggestions on Discord.
- 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)
}
}