diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts index 8b6bfc80..482db1d7 100644 --- a/src/api/routes/channels/#channel_id/messages/index.ts +++ b/src/api/routes/channels/#channel_id/messages/index.ts @@ -230,10 +230,9 @@ router.get( }); await ret - .filter((x) => x.interaction_metadata && !x.interaction_metadata.user) - .forEachAsync(async (x) => { - x.interaction_metadata!.user = await User.findOne({ where: { id: x.interaction_metadata!.user_id } }); - x.interaction!.user = await User.findOne({ where: { id: x.interaction_metadata!.user_id } }); + .filter((x: MessageCreateSchema) => x.interaction_metadata && !x.interaction_metadata.user) + .forEachAsync(async (x: MessageCreateSchema) => { + x.interaction_metadata!.user = x.interaction!.user = await User.findOneOrFail({ where: { id: (x as Message).interaction_metadata!.user_id } }); }); // polyfill message references for old messages diff --git a/src/schemas/uncategorised/MessageCreateSchema.ts b/src/schemas/uncategorised/MessageCreateSchema.ts index 8d278fc8..c1cdf6f7 100644 --- a/src/schemas/uncategorised/MessageCreateSchema.ts +++ b/src/schemas/uncategorised/MessageCreateSchema.ts @@ -16,7 +16,8 @@ along with this program. If not, see . */ -import { ActionRowComponent, Embed, PollAnswer, PollMedia } from "@spacebar/schemas" +import { InteractionType } from "@spacebar/util"; +import { ActionRowComponent, Embed, PollAnswer, PollMedia, PublicUser } from "@spacebar/schemas"; export type MessageCreateAttachment = { id: string; @@ -28,7 +29,7 @@ export type MessageCreateCloudAttachment = { filename: string; uploaded_filename: string; original_content_type?: string; -} +}; export interface MessageCreateSchema { type?: number; @@ -68,6 +69,8 @@ export interface MessageCreateSchema { applied_tags?: string[]; // Not implemented yet, for webhooks in forums thread_name?: string; // Not implemented yet, for webhooks avatar_url?: string; // Not implemented yet, for webhooks + interaction?: MessageInteractionSchema; + interaction_metadata?: MessageInteractionSchema; } // TypeScript complains once this is used above @@ -78,3 +81,10 @@ export interface PollCreationSchema { allow_multiselect?: boolean; layout_type?: number; } + +interface MessageInteractionSchema { + id: string; + name: string; + type: InteractionType; + user?: PublicUser; // It has to be optional cause LSP gives an errors for some reason +} diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts index 1c5c68d4..9efcebcd 100644 --- a/src/util/entities/Message.ts +++ b/src/util/entities/Message.ts @@ -174,7 +174,6 @@ export class Message extends BaseClass { @Column({ type: "simple-json", nullable: true }) interaction?: { - user: User | null; id: string; type: InteractionType; name: string; @@ -182,7 +181,6 @@ export class Message extends BaseClass { @Column({ type: "simple-json", nullable: true }) interaction_metadata?: { - user: User | null; id: string; type: InteractionType; user_id: string;