From 40d9b5c5ec140d68a86de4d0f24a1812c1c203ac Mon Sep 17 00:00:00 2001 From: Androz2091 Date: Thu, 30 Jul 2020 21:22:25 +0200 Subject: [PATCH 1/5] Add oldPresence to presenceUpdate event --- module/shardingManager.ts | 5 ++++- types/options.ts | 5 ++++- utils/cache.ts | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/module/shardingManager.ts b/module/shardingManager.ts index 851e5d05f..9a033cc52 100644 --- a/module/shardingManager.ts +++ b/module/shardingManager.ts @@ -563,7 +563,10 @@ export async function handleDiscordPayload( } if (data.t === "PRESENCE_UPDATE") { - return eventHandlers.presenceUpdate?.(data.d as PresenceUpdatePayload); + const payload = data.d as PresenceUpdatePayload; + const oldPresence = cache.presences.get(payload.user.id) ?? null; + cache.presences.set(payload.user.id, payload); + return eventHandlers.presenceUpdate?.(oldPresence, payload); } if (data.t === "TYPING_START") { diff --git a/types/options.ts b/types/options.ts index f1f85e852..7768ed8c9 100644 --- a/types/options.ts +++ b/types/options.ts @@ -105,7 +105,10 @@ export interface EventHandlers { nickname: string, oldNickname?: string, ) => unknown; - presenceUpdate?: (data: PresenceUpdatePayload) => unknown; + presenceUpdate?: ( + oldPresence: PresenceUpdatePayload | null, + newPresence: PresenceUpdatePayload, + ) => unknown; raw?: (data: DiscordPayload) => unknown; ready?: () => unknown; reactionAdd?: ( diff --git a/utils/cache.ts b/utils/cache.ts index e97037f85..094abc42c 100644 --- a/utils/cache.ts +++ b/utils/cache.ts @@ -3,12 +3,14 @@ import { Message } from "../structures/message.ts"; import { Guild } from "../structures/guild.ts"; import { Channel } from "../structures/channel.ts"; import { delay } from "https://deno.land/std@0.61.0/async/delay.ts"; +import { PresenceUpdatePayload } from "../types/discord.ts"; export interface CacheData { guilds: Collection; channels: Collection; messages: Collection; unavailableGuilds: Collection; + presences: Collection; } export const cache: CacheData = { @@ -16,6 +18,7 @@ export const cache: CacheData = { channels: new Collection(), messages: new Collection(), unavailableGuilds: new Collection(), + presences: new Collection(), }; async function cleanMessageCache() { From 13f444c56e381349d551e267e1e19ac558fc7621 Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Thu, 30 Jul 2020 18:01:11 -0400 Subject: [PATCH 2/5] Update module/shardingManager.ts --- module/shardingManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/shardingManager.ts b/module/shardingManager.ts index 9a033cc52..e509dcc45 100644 --- a/module/shardingManager.ts +++ b/module/shardingManager.ts @@ -564,7 +564,7 @@ export async function handleDiscordPayload( if (data.t === "PRESENCE_UPDATE") { const payload = data.d as PresenceUpdatePayload; - const oldPresence = cache.presences.get(payload.user.id) ?? null; + const oldPresence = cache.presences.get(payload.user.id); cache.presences.set(payload.user.id, payload); return eventHandlers.presenceUpdate?.(oldPresence, payload); } From dba9ff5cd5156f85964649f50e19625f76ccddae Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Thu, 30 Jul 2020 18:01:22 -0400 Subject: [PATCH 3/5] Update module/shardingManager.ts --- module/shardingManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/shardingManager.ts b/module/shardingManager.ts index e509dcc45..ec746ec0d 100644 --- a/module/shardingManager.ts +++ b/module/shardingManager.ts @@ -566,7 +566,7 @@ export async function handleDiscordPayload( const payload = data.d as PresenceUpdatePayload; const oldPresence = cache.presences.get(payload.user.id); cache.presences.set(payload.user.id, payload); - return eventHandlers.presenceUpdate?.(oldPresence, payload); + return eventHandlers.presenceUpdate?.(payload, oldPresence); } if (data.t === "TYPING_START") { From 7adb459d93a7498fdc0a6ef0365fa30a0a7c2180 Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Thu, 30 Jul 2020 18:01:28 -0400 Subject: [PATCH 4/5] Update types/options.ts --- types/options.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/options.ts b/types/options.ts index 7768ed8c9..fd654ab35 100644 --- a/types/options.ts +++ b/types/options.ts @@ -106,7 +106,7 @@ export interface EventHandlers { oldNickname?: string, ) => unknown; presenceUpdate?: ( - oldPresence: PresenceUpdatePayload | null, + presence: PresenceUpdatePayload, newPresence: PresenceUpdatePayload, ) => unknown; raw?: (data: DiscordPayload) => unknown; From 1756ae29c5e94de8eb2ff24e91930eb47450ad99 Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Thu, 30 Jul 2020 18:01:34 -0400 Subject: [PATCH 5/5] Update types/options.ts --- types/options.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/options.ts b/types/options.ts index fd654ab35..3a25deaa4 100644 --- a/types/options.ts +++ b/types/options.ts @@ -107,7 +107,7 @@ export interface EventHandlers { ) => unknown; presenceUpdate?: ( presence: PresenceUpdatePayload, - newPresence: PresenceUpdatePayload, + oldPresence?: PresenceUpdatePayload, ) => unknown; raw?: (data: DiscordPayload) => unknown; ready?: () => unknown;