diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts
index 8b6bfc80d..482db1d7e 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 8d278fc8c..c1cdf6f7e 100644
--- a/src/schemas/uncategorised/MessageCreateSchema.ts
+++ b/src/schemas/uncategorised/MessageCreateSchema.ts
@@ -16,7 +16,8 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-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 1c5c68d43..9efcebcd8 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;
|