From 77489b90fcc471b809f48fe30398d2df0b416686 Mon Sep 17 00:00:00 2001 From: Suneet Tipirneni <77477100+suneettipirneni@users.noreply.github.com> Date: Tue, 21 Dec 2021 03:16:02 -0500 Subject: [PATCH] types: forward cache types to collector filters (#7126) --- typings/index.d.ts | 26 ++++++++++++++++---------- typings/index.test-d.ts | 7 ++++--- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/typings/index.d.ts b/typings/index.d.ts index e30bb6d0c..61306cd3b 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -1377,19 +1377,25 @@ export class LimitedCollection extends Collection { public static filterByLifetime(options?: LifetimeFilterOptions): SweepFilter; } -export type MessageCollectorOptionsParams = +export type MessageCollectorOptionsParams = | { componentType?: T; - } & MessageComponentCollectorOptions; + } & MessageComponentCollectorOptions[T]>; -export type MessageChannelCollectorOptionsParams = +export type MessageChannelCollectorOptionsParams< + T extends MessageComponentTypeResolvable, + Cached extends boolean = boolean, +> = | { componentType?: T; - } & MessageChannelComponentCollectorOptions; + } & MessageChannelComponentCollectorOptions[T]>; -export type AwaitMessageCollectorOptionsParams = +export type AwaitMessageCollectorOptionsParams< + T extends MessageComponentTypeResolvable, + Cached extends boolean = boolean, +> = | { componentType?: T } & Pick< - InteractionCollectorOptions, + InteractionCollectorOptions[T]>, keyof AwaitMessageComponentOptions >; @@ -1458,12 +1464,12 @@ export class Message extends Base { public flags: Readonly; public reference: MessageReference | null; public awaitMessageComponent( - options?: AwaitMessageCollectorOptionsParams, + options?: AwaitMessageCollectorOptionsParams, ): Promise[T]>; public awaitReactions(options?: AwaitReactionsOptions): Promise>; public createReactionCollector(options?: ReactionCollectorOptions): ReactionCollector; public createMessageComponentCollector( - options?: MessageCollectorOptionsParams, + options?: MessageCollectorOptionsParams, ): InteractionCollector[T]>; public delete(): Promise; public edit(content: string | MessageEditOptions | MessagePayload): Promise; @@ -3205,7 +3211,7 @@ export interface TextBasedChannelFields extends PartialTextBasedChannelFields { lastPinTimestamp: number | null; readonly lastPinAt: Date | null; awaitMessageComponent( - options?: AwaitMessageCollectorOptionsParams, + options?: AwaitMessageCollectorOptionsParams, ): Promise; awaitMessages(options?: AwaitMessagesOptions): Promise>; bulkDelete( @@ -3213,7 +3219,7 @@ export interface TextBasedChannelFields extends PartialTextBasedChannelFields { filterOld?: boolean, ): Promise>; createMessageComponentCollector( - options?: MessageChannelCollectorOptionsParams, + options?: MessageChannelCollectorOptionsParams, ): InteractionCollector; createMessageCollector(options?: MessageCollectorOptions): MessageCollector; sendTyping(): Promise; diff --git a/typings/index.test-d.ts b/typings/index.test-d.ts index ea50d0b9f..fbfc9e4b9 100644 --- a/typings/index.test-d.ts +++ b/typings/index.test-d.ts @@ -536,6 +536,7 @@ client.on('messageCreate', async message => { const buttonCollector = message.createMessageComponentCollector({ componentType: 'BUTTON' }); expectType>>(buttonCollector); + expectAssignable<(test: ButtonInteraction<'cached'>) => boolean | Promise>(buttonCollector.filter); expectType(message.channel); expectType(message.guild); expectType(message.member); @@ -642,7 +643,7 @@ client.on('messageCreate', async message => { channel.awaitMessageComponent({ filter: i => { - expectType(i); + expectType>(i); return true; }, }); @@ -650,7 +651,7 @@ client.on('messageCreate', async message => { channel.awaitMessageComponent({ componentType: 'BUTTON', filter: i => { - expectType(i); + expectType>(i); return true; }, }); @@ -658,7 +659,7 @@ client.on('messageCreate', async message => { channel.awaitMessageComponent({ componentType: 'SELECT_MENU', filter: i => { - expectType(i); + expectType>(i); return true; }, });