diff --git a/src/structures/MessageCollector.js b/src/structures/MessageCollector.js index 740928d91..3630d5ab6 100644 --- a/src/structures/MessageCollector.js +++ b/src/structures/MessageCollector.js @@ -90,12 +90,7 @@ class MessageCollector extends Collector { return message.channel.id === this.channel.id ? message.id : null; } - /** - * Checks after un/collection to see if the collector is done. - * @returns {?string} - * @private - */ - endReason() { + get endReason() { if (this.options.max && this.collected.size >= this.options.max) return 'limit'; if (this.options.maxProcessed && this.received === this.options.maxProcessed) return 'processedLimit'; return null; diff --git a/src/structures/ReactionCollector.js b/src/structures/ReactionCollector.js index ee7e75886..443c258a7 100644 --- a/src/structures/ReactionCollector.js +++ b/src/structures/ReactionCollector.js @@ -146,7 +146,7 @@ class ReactionCollector extends Collector { this.checkEnd(); } - endReason() { + get endReason() { if (this.options.max && this.total >= this.options.max) return 'limit'; if (this.options.maxEmojis && this.collected.size >= this.options.maxEmojis) return 'emojiLimit'; if (this.options.maxUsers && this.users.size >= this.options.maxUsers) return 'userLimit'; diff --git a/src/structures/interfaces/Collector.js b/src/structures/interfaces/Collector.js index e87453853..5d1fdbff2 100644 --- a/src/structures/interfaces/Collector.js +++ b/src/structures/interfaces/Collector.js @@ -214,7 +214,7 @@ class Collector extends EventEmitter { * Checks whether the collector should end, and if so, ends it. */ checkEnd() { - const reason = this.endReason(); + const reason = this.endReason; if (reason) this.stop(reason); } @@ -253,7 +253,7 @@ class Collector extends EventEmitter { return Util.flatten(this); } - /* eslint-disable no-empty-function, valid-jsdoc */ + /* eslint-disable no-empty-function */ /** * Handles incoming events from the `handleCollect` function. Returns null if the event should not * be collected, or returns an object describing the data that should be stored. @@ -273,14 +273,14 @@ class Collector extends EventEmitter { * @abstract */ dispose() {} + /* eslint-enable no-empty-function */ /** - * The reason this collector has ended or will end with. - * @returns {?string} Reason to end the collector, if any + * The reason this collector has ended with, or null if it hasn't ended yet + * @name Collector#endReason + * @type {?string} * @abstract */ - endReason() {} - /* eslint-enable no-empty-function, valid-jsdoc */ } module.exports = Collector; diff --git a/typings/index.d.ts b/typings/index.d.ts index 97adf209d..35e6989bb 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -293,6 +293,7 @@ declare module 'discord.js' { public readonly client: Client; public collected: Collection; public ended: boolean; + public abstract endReason: string | null; public filter: CollectorFilter; public readonly next: Promise; public options: CollectorOptions; @@ -307,7 +308,6 @@ declare module 'discord.js' { protected listener: (...args: any[]) => void; public abstract collect(...args: any[]): K; public abstract dispose(...args: any[]): K; - public abstract endReason(): void; public on(event: 'collect' | 'dispose', listener: (...args: any[]) => void): this; public on(event: 'end', listener: (collected: Collection, reason: string) => void): this; @@ -1046,12 +1046,12 @@ declare module 'discord.js' { private _handleGuildDeletion(guild: Guild): void; public channel: Channel; + public readonly endReason: string | null; public options: MessageCollectorOptions; public received: number; public collect(message: Message): Snowflake; public dispose(message: Message): Snowflake; - public endReason(): string; } export class MessageEmbed { @@ -1223,6 +1223,7 @@ declare module 'discord.js' { private _handleGuildDeletion(guild: Guild): void; private _handleMessageDeletion(message: Message): void; + public readonly endReason: string | null; public message: Message; public options: ReactionCollectorOptions; public total: number; @@ -1233,7 +1234,6 @@ declare module 'discord.js' { public collect(reaction: MessageReaction): Snowflake | string; public dispose(reaction: MessageReaction, user: User): Snowflake | string; public empty(): void; - public endReason(): string | null; public on(event: 'collect' | 'dispose' | 'remove', listener: (reaction: MessageReaction, user: User) => void): this; public on(