dexare
Version:
Modular and extendable Discord bot framework
40 lines (39 loc) • 1.75 kB
TypeScript
import Eris from 'eris';
import CollectorModule from '.';
import { DexareClient } from '../..';
import { ClientEvent } from '../../client/events';
import Collector, { CollectorOptions } from './collector';
export type MessageCollectorFilter = (message: Eris.Message<Eris.PossiblyUncachedTextableChannel>) => boolean;
export interface MessageCollectorOptions extends CollectorOptions {
/** The maximum amount of messages to collect */
max?: number;
/** The maximum amount of messages to process */
maxProcessed?: number;
/** The event groups to skip over while collecting */
skip?: string[];
}
/**
* Collects messages on a channel.
* Will automatically stop if the channel (`'channelDelete'`) or guild (`'guildDelete'`) are deleted.
*/
export default class MessageCollector extends Collector {
readonly channel: Eris.TextableChannel;
readonly options: MessageCollectorOptions;
received: number;
constructor(collectorModule: CollectorModule<DexareClient<any>>, channel: Eris.TextableChannel, filter: MessageCollectorFilter, options?: MessageCollectorOptions);
/**
* Handles a message for possible collection.
* @param message The message that could be collected
*/
collect(event: ClientEvent, message: Eris.Message<Eris.PossiblyUncachedTextableChannel>): {
key: string;
value: Eris.Message<Eris.PossiblyUncachedTextableChannel>;
} | null;
/**
* Handles a message for possible disposal.
* @param message The message that could be disposed of
*/
dispose(_: never, message: Eris.PossiblyUncachedMessage): string | null;
/** Checks after un/collection to see if the collector is done. */
endReason(): "limit" | "processedLimit" | null;
}