feat(typings): explicitly type PremiumTier and Collectors (#5458)

This commit is contained in:
Ven
2021-04-14 11:33:35 -11:00
committed by GitHub
parent fa5a37e51a
commit 7c49612d4b

30
typings/index.d.ts vendored
View File

@@ -324,7 +324,7 @@ declare module 'discord.js' {
} }
export abstract class Collector<K, V> extends EventEmitter { export abstract class Collector<K, V> extends EventEmitter {
constructor(client: Client, filter: CollectorFilter, options?: CollectorOptions); constructor(client: Client, filter: CollectorFilter<[V]>, options?: CollectorOptions);
private _timeout: NodeJS.Timeout | null; private _timeout: NodeJS.Timeout | null;
private _idletimeout: NodeJS.Timeout | null; private _idletimeout: NodeJS.Timeout | null;
@@ -332,7 +332,7 @@ declare module 'discord.js' {
public collected: Collection<K, V>; public collected: Collection<K, V>;
public ended: boolean; public ended: boolean;
public abstract endReason: string | null; public abstract endReason: string | null;
public filter: CollectorFilter; public filter: CollectorFilter<[V]>;
public readonly next: Promise<V>; public readonly next: Promise<V>;
public options: CollectorOptions; public options: CollectorOptions;
public checkEnd(): void; public checkEnd(): void;
@@ -1017,10 +1017,13 @@ declare module 'discord.js' {
public reference: MessageReference | null; public reference: MessageReference | null;
public readonly referencedMessage: Message | null; public readonly referencedMessage: Message | null;
public awaitReactions( public awaitReactions(
filter: CollectorFilter, filter: CollectorFilter<[MessageReaction, User]>,
options?: AwaitReactionsOptions, options?: AwaitReactionsOptions,
): Promise<Collection<Snowflake, MessageReaction>>; ): Promise<Collection<Snowflake, MessageReaction>>;
public createReactionCollector(filter: CollectorFilter, options?: ReactionCollectorOptions): ReactionCollector; public createReactionCollector(
filter: CollectorFilter<[MessageReaction, User]>,
options?: ReactionCollectorOptions,
): ReactionCollector;
public delete(): Promise<Message>; public delete(): Promise<Message>;
public edit( public edit(
content: APIMessageContentResolvable | MessageEditOptions | MessageEmbed | APIMessage, content: APIMessageContentResolvable | MessageEditOptions | MessageEmbed | APIMessage,
@@ -1070,7 +1073,11 @@ declare module 'discord.js' {
} }
export class MessageCollector extends Collector<Snowflake, Message> { export class MessageCollector extends Collector<Snowflake, Message> {
constructor(channel: TextChannel | DMChannel, filter: CollectorFilter, options?: MessageCollectorOptions); constructor(
channel: TextChannel | DMChannel,
filter: CollectorFilter<[Message]>,
options?: MessageCollectorOptions,
);
private _handleChannelDeletion(channel: GuildChannel): void; private _handleChannelDeletion(channel: GuildChannel): void;
private _handleGuildDeletion(guild: Guild): void; private _handleGuildDeletion(guild: Guild): void;
@@ -1248,7 +1255,7 @@ declare module 'discord.js' {
} }
export class ReactionCollector extends Collector<Snowflake, MessageReaction> { export class ReactionCollector extends Collector<Snowflake, MessageReaction> {
constructor(message: Message, filter: CollectorFilter, options?: ReactionCollectorOptions); constructor(message: Message, filter: CollectorFilter<[MessageReaction, User]>, options?: ReactionCollectorOptions);
private _handleChannelDeletion(channel: GuildChannel): void; private _handleChannelDeletion(channel: GuildChannel): void;
private _handleGuildDeletion(guild: Guild): void; private _handleGuildDeletion(guild: Guild): void;
private _handleMessageDeletion(message: Message): void; private _handleMessageDeletion(message: Message): void;
@@ -2128,12 +2135,15 @@ declare module 'discord.js' {
readonly lastPinAt: Date | null; readonly lastPinAt: Date | null;
typing: boolean; typing: boolean;
typingCount: number; typingCount: number;
awaitMessages(filter: CollectorFilter, options?: AwaitMessagesOptions): Promise<Collection<Snowflake, Message>>; awaitMessages(
filter: CollectorFilter<[Message]>,
options?: AwaitMessagesOptions,
): Promise<Collection<Snowflake, Message>>;
bulkDelete( bulkDelete(
messages: Collection<Snowflake, Message> | readonly MessageResolvable[] | number, messages: Collection<Snowflake, Message> | readonly MessageResolvable[] | number,
filterOld?: boolean, filterOld?: boolean,
): Promise<Collection<Snowflake, Message>>; ): Promise<Collection<Snowflake, Message>>;
createMessageCollector(filter: CollectorFilter, options?: MessageCollectorOptions): MessageCollector; createMessageCollector(filter: CollectorFilter<[Message]>, options?: MessageCollectorOptions): MessageCollector;
startTyping(count?: number): Promise<void>; startTyping(count?: number): Promise<void>;
stopTyping(force?: boolean): void; stopTyping(force?: boolean): void;
} }
@@ -2549,7 +2559,7 @@ declare module 'discord.js' {
target: WebSocket; target: WebSocket;
} }
type CollectorFilter = (...args: any[]) => boolean | Promise<boolean>; type CollectorFilter<T extends any[]> = (...args: T) => boolean | Promise<boolean>;
interface CollectorOptions { interface CollectorOptions {
time?: number; time?: number;
@@ -3149,7 +3159,7 @@ declare module 'discord.js' {
id: UserResolvable | RoleResolvable; id: UserResolvable | RoleResolvable;
} }
type PremiumTier = number; type PremiumTier = 0 | 1 | 2 | 3;
interface PresenceData { interface PresenceData {
status?: PresenceStatusData; status?: PresenceStatusData;