summary refs log tree commit diff
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-10-25 10:58:36 +1100
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-10-25 10:58:36 +1100
commit8d2a2ba12e65192782b3f90e66365f8265c1b5d7 (patch)
tree3595ce75e96d32eea1d23623487101edc8147c3d
parentFix tweets with only video breaking embeds (diff)
downloadserver-8d2a2ba12e65192782b3f90e66365f8265c1b5d7.tar.xz
Move message auto mod to the api route instead of a @beforeinsert/update method
-rw-r--r--src/api/routes/channels/#channel_id/messages/#message_id/index.ts8
-rw-r--r--src/api/routes/channels/#channel_id/messages/index.ts6
-rw-r--r--src/util/entities/Message.ts16
-rw-r--r--src/util/util/Constants.ts4
4 files changed, 17 insertions, 17 deletions
diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts
index 3abfebe8..47faba73 100644
--- a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts
@@ -12,6 +12,8 @@ import {
 	Snowflake,
 	uploadFile,
 	MessageCreateSchema,
+	BannedWords,
+	DiscordApiErrors,
 } from "@fosscord/util";
 import { Router, Response, Request } from "express";
 import multer from "multer";
@@ -42,6 +44,10 @@ router.patch(
 		const { message_id, channel_id } = req.params;
 		var body = req.body as MessageCreateSchema;
 
+		if (body.content)
+			if (BannedWords.find(body.content))
+				throw DiscordApiErrors.AUTOMODERATOR_BLOCK;
+
 		const message = await Message.findOneOrFail({
 			where: { id: message_id, channel_id },
 			relations: ["attachments"],
@@ -178,7 +184,7 @@ router.put(
 			channel.save(),
 		]);
 
-		postHandleMessage(message).catch((e) => {}); // no await as it shouldnt block the message send function and silently catch error
+		postHandleMessage(message).catch((e) => { }); // no await as it shouldnt block the message send function and silently catch error
 
 		return res.json(message);
 	},
diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts
index e0c91b8a..ecbd1b19 100644
--- a/src/api/routes/channels/#channel_id/messages/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/index.ts
@@ -15,6 +15,8 @@ import {
 	Role,
 	MessageCreateSchema,
 	ReadState,
+	BannedWords,
+	DiscordApiErrors,
 } from "@fosscord/util";
 import { HTTPError } from "lambert-server";
 import { handleMessage, postHandleMessage, route } from "@fosscord/api";
@@ -190,6 +192,10 @@ router.post(
 		var body = req.body as MessageCreateSchema;
 		const attachments: Attachment[] = [];
 
+		if (body.content)
+			if (BannedWords.find(body.content))
+				throw DiscordApiErrors.AUTOMODERATOR_BLOCK;
+
 		const channel = await Channel.findOneOrFail({
 			where: { id: channel_id },
 			relations: ["recipients", "recipients.user"],
diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts
index a52b4785..013de378 100644
--- a/src/util/entities/Message.ts
+++ b/src/util/entities/Message.ts
@@ -5,8 +5,6 @@ import { Channel } from "./Channel";
 import { InteractionType } from "../interfaces/Interaction";
 import { Application } from "./Application";
 import {
-	BeforeInsert,
-	BeforeUpdate,
 	Column,
 	CreateDateColumn,
 	Entity,
@@ -23,8 +21,6 @@ import { Guild } from "./Guild";
 import { Webhook } from "./Webhook";
 import { Sticker } from "./Sticker";
 import { Attachment } from "./Attachment";
-import { BannedWords } from "../util";
-import { HTTPError } from "lambert-server";
 
 export enum MessageType {
 	DEFAULT = 0,
@@ -206,18 +202,6 @@ export class Message extends BaseClass {
 
 	@Column({ type: "simple-json", nullable: true })
 	components?: MessageComponent[];
-
-	@BeforeUpdate()
-	@BeforeInsert()
-	validate() {
-		if (this.content) {
-			if (BannedWords.find(this.content))
-				throw new HTTPError(
-					"Message was blocked by automatic moderation",
-					200000,
-				);
-		}
-	}
 }
 
 export interface MessageComponent {
diff --git a/src/util/util/Constants.ts b/src/util/util/Constants.ts
index 7c5b7dcb..46cf2e4f 100644
--- a/src/util/util/Constants.ts
+++ b/src/util/util/Constants.ts
@@ -973,6 +973,10 @@ export const DiscordApiErrors = {
 		undefined,
 		["5"],
 	),
+	AUTOMODERATOR_BLOCK: new ApiError(
+		"Message was blocked by automatic moderation",
+		200000,
+	),
 
 	//Other errors
 	UNKNOWN_VOICE_STATE: new ApiError("Unknown Voice State", 10065, 404),