diff --git a/api/assets/schemas.json b/api/assets/schemas.json
index a930938f..2102292b 100644
--- a/api/assets/schemas.json
+++ b/api/assets/schemas.json
@@ -2,12 +2,18 @@
"MessageCreateSchema": {
"type": "object",
"properties": {
+ "type": {
+ "type": "integer"
+ },
"content": {
"type": "string"
},
"nonce": {
"type": "string"
},
+ "channel_id": {
+ "type": "string"
+ },
"tts": {
"type": "boolean"
},
diff --git a/api/src/routes/channels/#channel_id/messages/index.ts b/api/src/routes/channels/#channel_id/messages/index.ts
index 2d6a2977..54e6edcc 100644
--- a/api/src/routes/channels/#channel_id/messages/index.ts
+++ b/api/src/routes/channels/#channel_id/messages/index.ts
@@ -50,8 +50,10 @@ export function isTextChannel(type: ChannelType): boolean {
}
export interface MessageCreateSchema {
+ type?: number;
content?: string;
nonce?: string;
+ channel_id?: string;
tts?: boolean;
flags?: string;
embeds?: Embed[];
@@ -161,7 +163,7 @@ const messageUpload = multer({
limits: {
fileSize: 1024 * 1024 * 100,
fields: 10,
- files: 1
+ // files: 1
},
storage: multer.memoryStorage()
}); // max upload 50 mb
@@ -176,7 +178,7 @@ const messageUpload = multer({
// Send message
router.post(
"/",
- messageUpload.single("file"),
+ messageUpload.any(),
async (req, res, next) => {
if (req.body.payload_json) {
req.body = JSON.parse(req.body.payload_json);
@@ -190,18 +192,21 @@ router.post(
var body = req.body as MessageCreateSchema;
const attachments: Attachment[] = [];
- if (req.file) {
+ const channel = await Channel.findOneOrFail({ where: { id: channel_id }, relations: ["recipients", "recipients.user"] });
+ if (!channel.isWritable()) {
+ throw new HTTPError(`Cannot send messages to channel of type ${channel.type}`, 400)
+ }
+
+ const files = req.files as Express.Multer.File[] ?? [];
+ for (var currFile of files) {
try {
- const file = await uploadFile(`/attachments/${req.params.channel_id}`, req.file);
+ const file = await uploadFile(`/attachments/${channel.id}`, currFile);
attachments.push({ ...file, proxy_url: file.url });
- } catch (error) {
+ }
+ catch (error) {
return res.status(400).json(error);
}
}
- const channel = await Channel.findOneOrFail({ where: { id: channel_id }, relations: ["recipients", "recipients.user"] });
- if (!channel.isWritable()) {
- throw new HTTPError(`Cannot send messages to channel of type ${channel.type}`, 400)
- }
const embeds = body.embeds || [];
if (body.embed) embeds.push(body.embed);
diff --git a/util/src/entities/Config.ts b/util/src/entities/Config.ts
index 75ff4a85..3756d686 100644
--- a/util/src/entities/Config.ts
+++ b/util/src/entities/Config.ts
@@ -233,30 +233,30 @@ export const DefaultConfigOptions: ConfigValue = {
},
limits: {
user: {
- maxGuilds: 100,
- maxUsername: 32,
- maxFriends: 1000,
+ maxGuilds: 1048576,
+ maxUsername: 127,
+ maxFriends: 5000,
},
guild: {
- maxRoles: 250,
- maxEmojis: 50, // TODO: max emojis per guild per nitro level
- maxMembers: 250000,
- maxChannels: 500,
- maxChannelsInCategory: 50,
- hideOfflineMember: 1000,
+ maxRoles: 1000,
+ maxEmojis: 2000,
+ maxMembers: 25000000,
+ maxChannels: 65535,
+ maxChannelsInCategory: 65535,
+ hideOfflineMember: 3,
},
message: {
- maxCharacters: 2000,
- maxTTSCharacters: 200,
- maxReactions: 20,
- maxAttachmentSize: 8388608,
+ maxCharacters: 1048576,
+ maxTTSCharacters: 160,
+ maxReactions: 2048,
+ maxAttachmentSize: 1024 * 1024 * 1024,
maxEmbedDownloadSize: 1024 * 1024 * 5,
- maxBulkDelete: 100,
+ maxBulkDelete: 1000,
},
channel: {
- maxPins: 50,
+ maxPins: 500,
maxTopic: 1024,
- maxWebhooks: 10,
+ maxWebhooks: 100,
},
rate: {
disabled: true,
@@ -265,9 +265,8 @@ export const DefaultConfigOptions: ConfigValue = {
window: 5,
},
global: {
- count: 20,
+ count: 250,
window: 5,
- bot: 250,
},
error: {
count: 10,
|