summary refs log tree commit diff
path: root/src/api/util/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/util/handlers')
-rw-r--r--src/api/util/handlers/Message.ts8
-rw-r--r--src/api/util/handlers/Webhook.ts13
2 files changed, 16 insertions, 5 deletions
diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts

index a21149ca..ed41341e 100644 --- a/src/api/util/handlers/Message.ts +++ b/src/api/util/handlers/Message.ts
@@ -69,6 +69,7 @@ import { UnfurledMediaItem, BaseMessageComponents, v1CompTypes, + PartialUser } from "@spacebar/schemas"; const allow_empty = false; // TODO: check webhook, application, system author, stickers @@ -830,12 +831,13 @@ export async function postHandleMessage(message: Message) { if (data.embeds != undefined) { data.embeds = data.embeds?.filter((embed) => embed.type === "rich"); } + // author value is already included in message.toJSON() const event = { event: "MESSAGE_UPDATE", channel_id: message.channel_id, data: { - ...data, - author, + ...message.toJSON(), + embeds: data.embeds == undefined ? message.embeds || [] : data.embeds, }, } satisfies MessageUpdateEvent; const embeds = data.embeds == undefined ? [] : data.embeds; @@ -900,7 +902,7 @@ export async function postHandleMessage(message: Message) { emitEvent({ event: "MESSAGE_UPDATE", channel_id: message.channel_id, - data, + data: message.toJSON(), } satisfies MessageUpdateEvent), Message.update({ id: message.id, channel_id: message.channel_id }, { embeds: embeds }), ...cachePromises, diff --git a/src/api/util/handlers/Webhook.ts b/src/api/util/handlers/Webhook.ts
index b6a390a5..deb0331f 100644 --- a/src/api/util/handlers/Webhook.ts +++ b/src/api/util/handlers/Webhook.ts
@@ -96,8 +96,17 @@ export const executeWebhook = async (req: Request, res: Response) => { } const embeds = body.embeds || []; - const message = await handleMessage({ + const bodyMsg = { ...body, + allowed_mentions: body.allowed_mentions + ? { + ...body.allowed_mentions, + parse: body.allowed_mentions.parse as ("users" | "roles" | "everyone")[], + } + : undefined, + } as Parameters<typeof handleMessage>[0]; + const message = await handleMessage({ + ...bodyMsg, username: body.username || webhook.name, avatar_url: body.avatar_url || webhook.avatar, type: 0, @@ -123,7 +132,7 @@ export const executeWebhook = async (req: Request, res: Response) => { emitEvent({ event: "MESSAGE_CREATE", channel_id: sendChannel.id, - data: message, + data: message.toJSON(), } satisfies MessageCreateEvent), ]);