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),
]);
|