From f333e8dadc52f93845c4eff9351e8f5573f58d41 Mon Sep 17 00:00:00 2001 From: Rory& Date: Wed, 11 Mar 2026 00:54:09 +0100 Subject: [PATCH] Message*Event: as->satisfies (WIP) --- src/api/routes/channels/#channel_id/greet.ts | 2 +- .../#channel_id/messages/#message_id/index.ts | 4 ++-- .../#channel_id/messages/#message_id/threads.ts | 2 +- src/api/routes/channels/#channel_id/messages/index.ts | 2 +- .../channels/#channel_id/messages/pins/index.ts | 6 +++--- src/api/routes/channels/#channel_id/pins.ts | 6 +++--- src/api/routes/channels/#channel_id/threads.ts | 2 +- src/api/util/handlers/Message.ts | 11 +++++++---- src/api/util/handlers/Webhook.ts | 2 +- src/util/entities/Member.ts | 2 +- 10 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/api/routes/channels/#channel_id/greet.ts b/src/api/routes/channels/#channel_id/greet.ts index b556547d3..8dbaacdcc 100644 --- a/src/api/routes/channels/#channel_id/greet.ts +++ b/src/api/routes/channels/#channel_id/greet.ts @@ -96,7 +96,7 @@ router.post( event: "MESSAGE_CREATE", data: message, channel_id, - } as MessageCreateEvent), + } satisfies MessageCreateEvent), channel.save(), ]); diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts index bdac3feaf..a4abc8b4d 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts @@ -110,7 +110,7 @@ router.patch( nonce: undefined, member: new_message.member?.toPublicMember(), }, - } as MessageUpdateEvent), + } satisfies MessageUpdateEvent), ]); postHandleMessage(new_message).catch((e) => console.error("[Message] post-message handler failed", e)); @@ -227,7 +227,7 @@ router.put( event: "MESSAGE_CREATE", channel_id: channel_id, data: message, - } as MessageCreateEvent), + } satisfies MessageCreateEvent), channel.save(), ]); diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts b/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts index 525337b4f..de9feaee1 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts @@ -113,7 +113,7 @@ router.post( event: "MESSAGE_UPDATE", channel_id: message.channel_id, data: message.toJSON(), - } as MessageUpdateEvent), + } satisfies MessageUpdateEvent), ]); return res.json(thread.toJSON()); diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts index eada48759..c96715bca 100644 --- a/src/api/routes/channels/#channel_id/messages/index.ts +++ b/src/api/routes/channels/#channel_id/messages/index.ts @@ -500,7 +500,7 @@ router.post( event: "MESSAGE_CREATE", channel_id: channel_id, data: message.toJSON(), - } as MessageCreateEvent), + } satisfies MessageCreateEvent), message.guild_id ? Member.update({ id: req.user_id, guild_id: message.guild_id }, { last_message_id: message.id }) : null, ]); diff --git a/src/api/routes/channels/#channel_id/messages/pins/index.ts b/src/api/routes/channels/#channel_id/messages/pins/index.ts index 72b2c5b76..f9e4b6971 100644 --- a/src/api/routes/channels/#channel_id/messages/pins/index.ts +++ b/src/api/routes/channels/#channel_id/messages/pins/index.ts @@ -86,7 +86,7 @@ router.put( event: "MESSAGE_UPDATE", channel_id, data: message, - } as MessageUpdateEvent), + } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", channel_id, @@ -101,7 +101,7 @@ router.put( event: "MESSAGE_CREATE", channel_id: message.channel_id, data: systemPinMessage, - } as MessageCreateEvent), + } satisfies MessageCreateEvent), ]); res.sendStatus(204); @@ -139,7 +139,7 @@ router.delete( event: "MESSAGE_UPDATE", channel_id, data: message, - } as MessageUpdateEvent), + } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", channel_id, diff --git a/src/api/routes/channels/#channel_id/pins.ts b/src/api/routes/channels/#channel_id/pins.ts index 5944d785a..9b515591a 100644 --- a/src/api/routes/channels/#channel_id/pins.ts +++ b/src/api/routes/channels/#channel_id/pins.ts @@ -87,7 +87,7 @@ router.put( event: "MESSAGE_UPDATE", channel_id, data: message, - } as MessageUpdateEvent), + } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", channel_id, @@ -102,7 +102,7 @@ router.put( event: "MESSAGE_CREATE", channel_id: message.channel_id, data: systemPinMessage, - } as MessageCreateEvent), + } satisfies MessageCreateEvent), ]); res.sendStatus(204); @@ -140,7 +140,7 @@ router.delete( event: "MESSAGE_UPDATE", channel_id, data: message, - } as MessageUpdateEvent), + } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", channel_id, diff --git a/src/api/routes/channels/#channel_id/threads.ts b/src/api/routes/channels/#channel_id/threads.ts index 8b8d9bc73..26a19030b 100644 --- a/src/api/routes/channels/#channel_id/threads.ts +++ b/src/api/routes/channels/#channel_id/threads.ts @@ -190,7 +190,7 @@ router.post( event: "MESSAGE_CREATE", channel_id: channel_id, data: message, - } as MessageCreateEvent), + } satisfies MessageCreateEvent), message.guild_id ? Member.update({ id: req.user_id, guild_id: message.guild_id }, { last_message_id: message.id }) : null, ]); postHandleMessage(message).catch((e) => console.error("[Message] post-message handler failed", e)); diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts index 391abc255..a21149ca1 100644 --- a/src/api/util/handlers/Message.ts +++ b/src/api/util/handlers/Message.ts @@ -833,8 +833,11 @@ export async function postHandleMessage(message: Message) { const event = { event: "MESSAGE_UPDATE", channel_id: message.channel_id, - data, - } as MessageUpdateEvent; + data: { + ...data, + author, + }, + } satisfies MessageUpdateEvent; const embeds = data.embeds == undefined ? [] : data.embeds; await Promise.all([emitEvent(event), Message.update({ id: message.id, channel_id: message.channel_id }, { embeds: embeds })]); return; @@ -898,7 +901,7 @@ export async function postHandleMessage(message: Message) { event: "MESSAGE_UPDATE", channel_id: message.channel_id, data, - } as MessageUpdateEvent), + } satisfies MessageUpdateEvent), Message.update({ id: message.id, channel_id: message.channel_id }, { embeds: embeds }), ...cachePromises, ]); @@ -915,7 +918,7 @@ export async function sendMessage(opts: MessageOptions) { event: "MESSAGE_CREATE", ...(ephemeral ? { user_id: message.interaction_metadata?.user_id } : { channel_id: message.channel_id }), data: message.toJSON(), - } as MessageCreateEvent), + } satisfies MessageCreateEvent), ]); // no await as it should catch error non-blockingly diff --git a/src/api/util/handlers/Webhook.ts b/src/api/util/handlers/Webhook.ts index 439edbb23..b6a390a54 100644 --- a/src/api/util/handlers/Webhook.ts +++ b/src/api/util/handlers/Webhook.ts @@ -124,7 +124,7 @@ export const executeWebhook = async (req: Request, res: Response) => { event: "MESSAGE_CREATE", channel_id: sendChannel.id, data: message, - } as MessageCreateEvent), + } satisfies MessageCreateEvent), ]); // no await as it shouldnt block the message send function and silently catch error diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts index 2b690ea3a..f372277eb 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts @@ -448,7 +448,7 @@ export class Member extends BaseClassWithoutId { event: "MESSAGE_CREATE", channel_id: message.channel_id, data: message, - } as MessageCreateEvent), + } satisfies MessageCreateEvent), channel.save(), ]); }