1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-09-20 01:31:34 +02:00

Move message auto mod to the api route instead of a @beforeinsert/update method

This commit is contained in:
Madeline 2022-10-25 10:58:36 +11:00
parent 6d7909a02c
commit 8d2a2ba12e
No known key found for this signature in database
GPG Key ID: 1958E017C36F2E47
4 changed files with 17 additions and 17 deletions

View File

@ -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);
},

View File

@ -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"],

View File

@ -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 {

View File

@ -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),