summary refs log tree commit diff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/routes/channels/#channel_id/messages/index.ts23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts

index 4b935f19..86864edb 100644 --- a/src/api/routes/channels/#channel_id/messages/index.ts +++ b/src/api/routes/channels/#channel_id/messages/index.ts
@@ -6,6 +6,7 @@ import { Config, DmChannelDTO, emitEvent, + FieldErrors, getPermission, Message, MessageCreateEvent, @@ -16,10 +17,13 @@ import { MessageCreateSchema, ReadState, DiscordApiErrors, + getRights, + Rights, } from "@fosscord/util"; import { HTTPError } from "lambert-server"; -import { handleMessage, postHandleMessage, route } from "@fosscord/api"; +import { handleMessage, postHandleMessage, route, getIpAdress } from "@fosscord/api"; import multer from "multer"; +import { yellow } from "picocolors"; import { FindManyOptions, LessThan, MoreThan } from "typeorm"; import { URL } from "url"; @@ -215,6 +219,23 @@ router.post( } } + if (!req.rights.has(Rights.FLAGS.BYPASS_RATE_LIMITS)) { + var limits = Config.get().limits; + if (limits.absoluteRate.register.enabled) { + const count = await Message.count({ + where: { + channel_id, + timestamp: MoreThan(new Date(Date.now() - limits.absoluteRate.sendMessage.window)) + } + }); + + if (count >= limits.absoluteRate.sendMessage.limit) + throw FieldErrors({ + channel_id: { code: "TOO_MANY_MESSAGES", message: req.t("common:toomany.MESSAGE") } + }); + } + } + const files = (req.files as Express.Multer.File[]) ?? []; for (var currFile of files) { try {