From a7eb513f9d984c4c48555f0a5a4fd585dd97b5d2 Mon Sep 17 00:00:00 2001 From: Rory& Date: Wed, 2 Sep 2026 22:30:14 +0200 Subject: [PATCH] Fix webhook schema --- assets/openapi.json | Bin 1076076 -> 1077381 bytes assets/schemas.json | Bin 494370 -> 495450 bytes src/database/entities/Message.ts | 4 ++-- src/database/entities/Webhook.ts | 14 +++++++++++++- src/schemas/api/messages/Message.ts | 14 +++++++++++++- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index 1927df6dc344464ac5735a8a4d1e62a6a572ff9b..1f5648c8661078aff3cd4aeaa88d2d6e181c543c 100644 GIT binary patch delta 264 zcmaEJ&9U{NV?zsL3sVbo3rh=Y3)>d zCMOuVPj@h4=h^=DIQv7!>2eWF;?vJpva(N?592V{{`Vw%y3O>xE7^G&!>8+8vPn;0 zP|48-(#bxZC5G+8bcf6AtkW+TGr3MaAS6CnfKz9>Kn9EL^aY7*Y||$cuyanIo6DXs zy(Wc?d-_>-MkkPUKvn$H6JGO+P1i4FWS@Q@nN4E4!%H?HFt1vbSfmaR4zV5OV=BHxTmxF)tAF0WtsfY&HSLQ~>t(R`CD; delta 122 zcmZpD==kQEV?zsL3sVbo3rh=Y3)>dC&gz#iz#^v$JovILR)>I9=ckyXp32r`Qv1rthE6$ll(<%>l%mK+FZi+(66& R#JoVv2gLl_Tet-nQvonGC*S}8 diff --git a/assets/schemas.json b/assets/schemas.json index 4ae18b580a80db0eda8061d4a1b60e189319a234..82540d363337944f4f6ab092212912e19d3b54fa 100644 GIT binary patch delta 224 zcmZ29P43n_xrP?T7N!>F7M2#)Eo`E*rWd5M3ryz|W;dEHAj`%!{azv?`}Dx|ETWVD zXGTn~cW2_B&cC0TfBJ(}tnAbOr?NS3zc7nUfN^>PNKl}UjeYtK5%#d@e2r{u+pXuY zrI>)2yzJqrNg4V1+0!3hWpbS^aD-KV`odJ!?b984Sv{x6Z(?JezQK#tds+_AOyf+} z!0GohS#2j}g-=h|#Ktmtf{^6&3A9)N@agaU*Egam{Iv<4NLl4@6%e@6lfmk+-K50~Jo1qYY^Wd=i+ i9<>4pw>_H%2mzBoT~(J3fd&S*x10uKG`H8(27|gLARIIR diff --git a/src/database/entities/Message.ts b/src/database/entities/Message.ts index c3ab8c190..629e68741 100644 --- a/src/database/entities/Message.ts +++ b/src/database/entities/Message.ts @@ -341,7 +341,7 @@ export class Message extends BaseClass { nonce: this.nonce ?? undefined, tts: this.tts ?? false, guild: this.guild ?? undefined, - webhook: this.webhook ?? undefined, + webhook: this.webhook?.toMessageWebhook() ?? undefined, interaction: this.interaction ?? undefined, interaction_metadata: this.interaction_metadata ?? undefined, reactions: this.reactions ?? undefined, @@ -362,7 +362,7 @@ export class Message extends BaseClass { pinned: this.pinned, thread: this.thread ? this.thread.toJSON() : this.thread, referenced_message: this.referenced_message && !shallow ? this.referenced_message.toJSON(true) : undefined, - }; + } satisfies PublicMessage; } toPartialMessage(): PartialMessage { diff --git a/src/database/entities/Webhook.ts b/src/database/entities/Webhook.ts index 26cf18aa8..5ba2a8fbb 100644 --- a/src/database/entities/Webhook.ts +++ b/src/database/entities/Webhook.ts @@ -22,7 +22,7 @@ import { BaseClass } from "./BaseClass"; import { Channel } from "./Channel"; import { Guild } from "./Guild"; import { User } from "./User"; -import { WebhookType } from "@spacebar/schemas"; +import { PublicMessageWebhook, WebhookType } from "@spacebar/schemas"; @Entity({ name: "webhooks", @@ -101,4 +101,16 @@ export class Webhook extends BaseClass { source_channel: Channel; url: string; + + public toMessageWebhook(): PublicMessageWebhook { + return { + type: this.type, + name: this.name, + avatar: this.avatar, + user_id: this.user_id, + application_id: this.application_id, + source_guild_id: this.source_guild_id, + source_channel_id: this.source_channel_id, + }; + } } diff --git a/src/schemas/api/messages/Message.ts b/src/schemas/api/messages/Message.ts index eed8d2ad2..8d736aa68 100644 --- a/src/schemas/api/messages/Message.ts +++ b/src/schemas/api/messages/Message.ts @@ -18,7 +18,7 @@ // TODO: remove entity import import { Sticker } from "@spacebar/database"; -import { Embed, MessageActivity, MessageComponent, PartialUser, Poll, PublicChannel, Snowflake } from "@spacebar/schemas"; +import { Embed, MessageActivity, MessageComponent, PartialUser, Poll, PublicChannel, Snowflake, WebhookType } from "@spacebar/schemas"; import { PublicAttachment } from "./Attachments"; export enum MessageType { @@ -207,6 +207,18 @@ export interface PublicMessage { // soundboard_sounds?: SoundboardSound[]; potions?: Potion[]; shared_client_theme?: SharedClientTheme; + // spacebar extension + webhook: PublicMessageWebhook; +} + +export interface PublicMessageWebhook { + type: WebhookType; + name: string; + avatar: string; + user_id: string; + application_id: string; + source_guild_id: string | undefined; + source_channel_id: string; } export interface SharedClientTheme {