From 7c49612d4bedfe13f7ed676c125cc7f7f33596df Mon Sep 17 00:00:00 2001 From: Ven Date: Wed, 14 Apr 2021 11:33:35 -1100 Subject: [PATCH] feat(typings): explicitly type PremiumTier and Collectors (#5458) --- typings/index.d.ts | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/typings/index.d.ts b/typings/index.d.ts index 8d530b687..03051b384 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -324,7 +324,7 @@ declare module 'discord.js' { } export abstract class Collector extends EventEmitter { - constructor(client: Client, filter: CollectorFilter, options?: CollectorOptions); + constructor(client: Client, filter: CollectorFilter<[V]>, options?: CollectorOptions); private _timeout: NodeJS.Timeout | null; private _idletimeout: NodeJS.Timeout | null; @@ -332,7 +332,7 @@ declare module 'discord.js' { public collected: Collection; public ended: boolean; public abstract endReason: string | null; - public filter: CollectorFilter; + public filter: CollectorFilter<[V]>; public readonly next: Promise; public options: CollectorOptions; public checkEnd(): void; @@ -1017,10 +1017,13 @@ declare module 'discord.js' { public reference: MessageReference | null; public readonly referencedMessage: Message | null; public awaitReactions( - filter: CollectorFilter, + filter: CollectorFilter<[MessageReaction, User]>, options?: AwaitReactionsOptions, ): Promise>; - public createReactionCollector(filter: CollectorFilter, options?: ReactionCollectorOptions): ReactionCollector; + public createReactionCollector( + filter: CollectorFilter<[MessageReaction, User]>, + options?: ReactionCollectorOptions, + ): ReactionCollector; public delete(): Promise; public edit( content: APIMessageContentResolvable | MessageEditOptions | MessageEmbed | APIMessage, @@ -1070,7 +1073,11 @@ declare module 'discord.js' { } export class MessageCollector extends Collector { - constructor(channel: TextChannel | DMChannel, filter: CollectorFilter, options?: MessageCollectorOptions); + constructor( + channel: TextChannel | DMChannel, + filter: CollectorFilter<[Message]>, + options?: MessageCollectorOptions, + ); private _handleChannelDeletion(channel: GuildChannel): void; private _handleGuildDeletion(guild: Guild): void; @@ -1248,7 +1255,7 @@ declare module 'discord.js' { } export class ReactionCollector extends Collector { - constructor(message: Message, filter: CollectorFilter, options?: ReactionCollectorOptions); + constructor(message: Message, filter: CollectorFilter<[MessageReaction, User]>, options?: ReactionCollectorOptions); private _handleChannelDeletion(channel: GuildChannel): void; private _handleGuildDeletion(guild: Guild): void; private _handleMessageDeletion(message: Message): void; @@ -2128,12 +2135,15 @@ declare module 'discord.js' { readonly lastPinAt: Date | null; typing: boolean; typingCount: number; - awaitMessages(filter: CollectorFilter, options?: AwaitMessagesOptions): Promise>; + awaitMessages( + filter: CollectorFilter<[Message]>, + options?: AwaitMessagesOptions, + ): Promise>; bulkDelete( messages: Collection | readonly MessageResolvable[] | number, filterOld?: boolean, ): Promise>; - createMessageCollector(filter: CollectorFilter, options?: MessageCollectorOptions): MessageCollector; + createMessageCollector(filter: CollectorFilter<[Message]>, options?: MessageCollectorOptions): MessageCollector; startTyping(count?: number): Promise; stopTyping(force?: boolean): void; } @@ -2549,7 +2559,7 @@ declare module 'discord.js' { target: WebSocket; } - type CollectorFilter = (...args: any[]) => boolean | Promise; + type CollectorFilter = (...args: T) => boolean | Promise; interface CollectorOptions { time?: number; @@ -3149,7 +3159,7 @@ declare module 'discord.js' { id: UserResolvable | RoleResolvable; } - type PremiumTier = number; + type PremiumTier = 0 | 1 | 2 | 3; interface PresenceData { status?: PresenceStatusData;