From 3a5dbdfc7779ec7a0a5702a23949992d3233efab Mon Sep 17 00:00:00 2001 From: Yuzu Date: Wed, 6 Jul 2022 13:44:12 -0500 Subject: [PATCH] fix: dirty trick on prototypes --- handlers/Actions.ts | 20 +++++++++++++++++++- session/Session.ts | 2 +- structures/Message.ts | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/handlers/Actions.ts b/handlers/Actions.ts index bc7c813..74961b4 100644 --- a/handlers/Actions.ts +++ b/handlers/Actions.ts @@ -59,6 +59,24 @@ export const MESSAGE_CREATE: RawHandler = (session, _shardId, me }; export const MESSAGE_UPDATE: RawHandler = (session, _shardId, new_message) => { + // message is partial + if (!new_message.edited_timestamp) { + const message = { + // TODO: improve this + // ...new_message, + id: new_message.id, + guildId: new_message.guild_id, + channelId: new_message.channel_id, + }; + + // all methods of Message can run on partial messages + // we aknowledge people that their callback could be partial but giving them all functions of Message + Object.setPrototypeOf(message, Message.prototype); + + session.emit("messageUpdate", message); + return; + } + session.emit("messageUpdate", new Message(session, new_message)); }; @@ -212,7 +230,7 @@ type MessageReaction = any; export interface Events { "ready": Handler<[Ready, number]>; "messageCreate": Handler<[Message]>; - "messageUpdate": Handler<[Message]>; + "messageUpdate": Handler<[Partial]>; "messageDelete": Handler<[{ id: Snowflake, channelId: Snowflake, guildId?: Snowflake }]>; "messageReactionAdd": Handler<[MessageReaction]>; "messageReactionRemove": Handler<[MessageReaction]>; diff --git a/session/Session.ts b/session/Session.ts index 50b9e61..cb82058 100644 --- a/session/Session.ts +++ b/session/Session.ts @@ -65,7 +65,7 @@ export class Session extends EventEmitter { const defHandler: DiscordRawEventHandler = (shard, data) => { Actions.raw(this, shard.id, data); - if (!data.t) { + if (!data.t || !data.d) { return; } diff --git a/structures/Message.ts b/structures/Message.ts index 3e42786..9c9dd6d 100644 --- a/structures/Message.ts +++ b/structures/Message.ts @@ -153,7 +153,7 @@ export class Message implements Model { attachments: Attachment[]; embeds: DiscordEmbed[]; member?: Member; - thread?: ThreadChannel; + // thread?: ThreadChannel; components: Component[]; webhook?: WebhookAuthor;