From 79133b4d5e55132b04687c04ba247416aed615e6 Mon Sep 17 00:00:00 2001 From: Tenpi <37512637+Tenpi@users.noreply.github.com> Date: Fri, 11 Oct 2019 18:52:00 -0400 Subject: [PATCH] at(typings): partial Types (#3493) * test * test 2 * update * update * replaced double quotes * Made message.guild and message.member nullable * replaced double quotes again (oops) * missing semicolons * removed fetch from Omit * Added Partialize generic type * Created interfaces (prettier intellisense) * joinedAt/joinedTimestamp are nullable and fixed conflict --- typings/index.d.ts | 86 +++++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 39 deletions(-) diff --git a/typings/index.d.ts b/typings/index.d.ts index df1b5f2d0..bc96ed237 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -170,33 +170,33 @@ declare module 'discord.js' { public sweepMessages(lifetime?: number): number; public toJSON(): object; - public on(event: 'channelCreate' | 'channelDelete', listener: (channel: Channel) => void): this; - public on(event: 'channelPinsUpdate', listener: (channel: Channel, time: Date) => void): this; - public on(event: 'channelUpdate', listener: (oldChannel: Channel, newChannel: Channel) => void): this; + public on(event: 'channelCreate' | 'channelDelete', listener: (channel: Channel | PartialChannel) => void): this; + public on(event: 'channelPinsUpdate', listener: (channel: Channel | PartialChannel, time: Date) => void): this; + public on(event: 'channelUpdate', listener: (oldChannel: Channel | PartialChannel, newChannel: Channel | PartialChannel) => void): this; public on(event: 'debug' | 'warn', listener: (info: string) => void): this; public on(event: 'disconnect', listener: (event: any, shardID: number) => void): this; public on(event: 'emojiCreate' | 'emojiDelete', listener: (emoji: GuildEmoji) => void): this; public on(event: 'emojiUpdate', listener: (oldEmoji: GuildEmoji, newEmoji: GuildEmoji) => void): this; public on(event: 'error', listener: (error: Error) => void): this; - public on(event: 'guildBanAdd' | 'guildBanRemove', listener: (guild: Guild, user: User) => void): this; + public on(event: 'guildBanAdd' | 'guildBanRemove', listener: (guild: Guild, user: User | PartialUser) => void): this; public on(event: 'guildCreate' | 'guildDelete' | 'guildUnavailable', listener: (guild: Guild) => void): this; - public on(event: 'guildMemberAdd' | 'guildMemberAvailable' | 'guildMemberRemove', listener: (member: GuildMember) => void): this; - public on(event: 'guildMembersChunk', listener: (members: Collection, guild: Guild) => void): this; - public on(event: 'guildMemberSpeaking', listener: (member: GuildMember, speaking: Readonly) => void): this; - public on(event: 'guildMemberUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this; + public on(event: 'guildMemberAdd' | 'guildMemberAvailable' | 'guildMemberRemove', listener: (member: GuildMember | PartialGuildMember) => void): this; + public on(event: 'guildMembersChunk', listener: (members: Collection, guild: Guild) => void): this; + public on(event: 'guildMemberSpeaking', listener: (member: GuildMember | PartialGuildMember, speaking: Readonly) => void): this; + public on(event: 'guildMemberUpdate', listener: (oldMember: GuildMember | PartialGuildMember, newMember: GuildMember | PartialGuildMember) => void): this; public on(event: 'guildUpdate', listener: (oldGuild: Guild, newGuild: Guild) => void): this; public on(event: 'guildIntegrationsUpdate', listener: (guild: Guild) => void): this; - public on(event: 'message' | 'messageDelete' | 'messageReactionRemoveAll', listener: (message: Message) => void): this; - public on(event: 'messageDeleteBulk', listener: (messages: Collection) => void): this; - public on(event: 'messageReactionAdd' | 'messageReactionRemove', listener: (messageReaction: MessageReaction, user: User) => void): this; - public on(event: 'messageUpdate', listener: (oldMessage: Message, newMessage: Message) => void): this; + public on(event: 'message' | 'messageDelete' | 'messageReactionRemoveAll', listener: (message: Message | PartialMessage) => void): this; + public on(event: 'messageDeleteBulk', listener: (messages: Collection) => void): this; + public on(event: 'messageReactionAdd' | 'messageReactionRemove', listener: (messageReaction: MessageReaction, user: User | PartialUser) => void): this; + public on(event: 'messageUpdate', listener: (oldMessage: Message | PartialMessage, newMessage: Message | PartialMessage) => void): this; public on(event: 'presenceUpdate', listener: (oldPresence: Presence | undefined, newPresence: Presence) => void): this; public on(event: 'rateLimit', listener: (rateLimitData: RateLimitData) => void): this; public on(event: 'ready', listener: () => void): this; public on(event: 'roleCreate' | 'roleDelete', listener: (role: Role) => void): this; public on(event: 'roleUpdate', listener: (oldRole: Role, newRole: Role) => void): this; - public on(event: 'typingStart' | 'typingStop', listener: (channel: Channel, user: User) => void): this; - public on(event: 'userUpdate', listener: (oldUser: User, newUser: User) => void): this; + public on(event: 'typingStart' | 'typingStop', listener: (channel: Channel | PartialChannel, user: User | PartialUser) => void): this; + public on(event: 'userUpdate', listener: (oldUser: User | PartialUser, newUser: User | PartialUser) => void): this; public on(event: 'voiceStateUpdate', listener: (oldState: VoiceState | undefined, newState: VoiceState) => void): this; public on(event: 'webhookUpdate', listener: (channel: TextChannel) => void): this; public on(event: 'invalidated', listener: () => void): this; @@ -207,33 +207,33 @@ declare module 'discord.js' { public on(event: 'shardResume', listener: (id: number, replayed: number) => void): this; public on(event: string, listener: Function): this; - public once(event: 'channelCreate' | 'channelDelete', listener: (channel: Channel) => void): this; - public once(event: 'channelPinsUpdate', listener: (channel: Channel, time: Date) => void): this; - public once(event: 'channelUpdate', listener: (oldChannel: Channel, newChannel: Channel) => void): this; + public once(event: 'channelCreate' | 'channelDelete', listener: (channel: Channel | PartialChannel) => void): this; + public once(event: 'channelPinsUpdate', listener: (channel: Channel | PartialChannel, time: Date) => void): this; + public once(event: 'channelUpdate', listener: (oldChannel: Channel | PartialChannel, newChannel: Channel | PartialChannel) => void): this; public once(event: 'debug' | 'warn', listener: (info: string) => void): this; public once(event: 'disconnect', listener: (event: any, shardID: number) => void): this; public once(event: 'emojiCreate' | 'emojiDelete', listener: (emoji: GuildEmoji) => void): this; public once(event: 'emojiUpdate', listener: (oldEmoji: GuildEmoji, newEmoji: GuildEmoji) => void): this; public once(event: 'error', listener: (error: Error) => void): this; - public once(event: 'guildBanAdd' | 'guildBanRemove', listener: (guild: Guild, user: User) => void): this; + public once(event: 'guildBanAdd' | 'guildBanRemove', listener: (guild: Guild, user: User | PartialUser) => void): this; public once(event: 'guildCreate' | 'guildDelete' | 'guildUnavailable', listener: (guild: Guild) => void): this; - public once(event: 'guildMemberAdd' | 'guildMemberAvailable' | 'guildMemberRemove', listener: (member: GuildMember) => void): this; - public once(event: 'guildMembersChunk', listener: (members: Collection, guild: Guild) => void): this; - public once(event: 'guildMemberSpeaking', listener: (member: GuildMember, speaking: Readonly) => void): this; - public once(event: 'guildMemberUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this; + public once(event: 'guildMemberAdd' | 'guildMemberAvailable' | 'guildMemberRemove', listener: (member: GuildMember | PartialGuildMember) => void): this; + public once(event: 'guildMembersChunk', listener: (members: Collection, guild: Guild) => void): this; + public once(event: 'guildMemberSpeaking', listener: (member: GuildMember | PartialGuildMember, speaking: Readonly) => void): this; + public once(event: 'guildMemberUpdate', listener: (oldMember: GuildMember | PartialGuildMember, newMember: GuildMember | PartialGuildMember) => void): this; public once(event: 'guildUpdate', listener: (oldGuild: Guild, newGuild: Guild) => void): this; public once(event: 'guildIntegrationsUpdate', listener: (guild: Guild) => void): this; - public once(event: 'message' | 'messageDelete' | 'messageReactionRemoveAll', listener: (message: Message) => void): this; - public once(event: 'messageDeleteBulk', listener: (messages: Collection) => void): this; - public once(event: 'messageReactionAdd' | 'messageReactionRemove', listener: (messageReaction: MessageReaction, user: User) => void): this; - public once(event: 'messageUpdate', listener: (oldMessage: Message, newMessage: Message) => void): this; + public once(event: 'message' | 'messageDelete' | 'messageReactionRemoveAll', listener: (message: Message | PartialMessage) => void): this; + public once(event: 'messageDeleteBulk', listener: (messages: Collection) => void): this; + public once(event: 'messageReactionAdd' | 'messageReactionRemove', listener: (messageReaction: MessageReaction, user: User | PartialUser) => void): this; + public once(event: 'messageUpdate', listener: (oldMessage: Message | PartialMessage, newMessage: Message | PartialMessage) => void): this; public once(event: 'presenceUpdate', listener: (oldPresence: Presence | undefined, newPresence: Presence) => void): this; public once(event: 'rateLimit', listener: (rateLimitData: RateLimitData) => void): this; public once(event: 'ready', listener: () => void): this; public once(event: 'roleCreate' | 'roleDelete', listener: (role: Role) => void): this; public once(event: 'roleUpdate', listener: (oldRole: Role, newRole: Role) => void): this; - public once(event: 'typingStart' | 'typingStop', listener: (channel: Channel, user: User) => void): this; - public once(event: 'userUpdate', listener: (oldUser: User, newUser: User) => void): this; + public once(event: 'typingStart' | 'typingStop', listener: (channel: Channel | PartialChannel, user: User | PartialUser) => void): this; + public once(event: 'userUpdate', listener: (oldUser: User | PartialUser, newUser: User | PartialUser) => void): this; public once(event: 'voiceStateUpdate', listener: (oldState: VoiceState | undefined, newState: VoiceState) => void): this; public once(event: 'webhookUpdate', listener: (channel: TextChannel) => void): this; public once(event: 'invalidated', listener: () => void): this; @@ -476,7 +476,7 @@ declare module 'discord.js' { RESUMED: 'resumed'; }; PartialTypes: { - [K in PartialType]: K; + [K in PartialTypes]: K; }; WSEvents: { [K in WSEventType]: K; @@ -645,7 +645,7 @@ declare module 'discord.js' { constructor(client: Client, data?: object); public messages: MessageStore; public recipient: User; - public readonly partial: boolean; + public readonly partial: false; } export class Emoji extends Base { @@ -859,7 +859,7 @@ declare module 'discord.js' { public readonly kickable: boolean; public readonly manageable: boolean; public nickname: string | null; - public readonly partial: boolean; + public readonly partial: false; public readonly permissions: Readonly; public readonly premiumSince: Date | null; public premiumSinceTimestamp: number | null; @@ -945,7 +945,7 @@ declare module 'discord.js' { public activity: MessageActivity | null; public application: ClientApplication | null; public attachments: Collection; - public author: User | null; + public author: User; public channel: TextChannel | DMChannel; public readonly cleanContent: string; public content: string; @@ -963,7 +963,7 @@ declare module 'discord.js' { public readonly member: GuildMember | null; public mentions: MessageMentions; public nonce: string | null; - public readonly partial: boolean; + public readonly partial: false; public readonly pinnable: boolean; public pinned: boolean; public reactions: ReactionStore; @@ -1396,7 +1396,7 @@ declare module 'discord.js' { public readonly dmChannel: DMChannel; public id: Snowflake; public locale: string; - public readonly partial: boolean; + public readonly partial: false; public readonly presence: Presence; public readonly tag: string; public username: string; @@ -2499,6 +2499,19 @@ declare module 'discord.js' { | 'GUILD_MEMBER' | 'MESSAGE'; + type Partialize = { + id: string; + partial: true; + fetch(): Promise; + } & { + [K in keyof Omit]: T[K] | null; + }; + + interface PartialMessage extends Partialize {} + interface PartialChannel extends Partialize {} + interface PartialGuildMember extends Partialize {} + interface PartialUser extends Partialize {} + type PresenceStatus = ClientPresenceStatus | 'offline'; type PresenceStatusData = ClientPresenceStatus | 'invisible'; @@ -2605,11 +2618,6 @@ declare module 'discord.js' { compress?: boolean; } - type PartialType = 'USER' - | 'CHANNEL' - | 'GUILD_MEMBER' - | 'MESSAGE'; - type WSEventType = 'READY' | 'RESUMED' | 'GUILD_CREATE'