Merge branch 'master' into fix/claim_accounts

This commit is contained in:
Madeline
2022-07-13 17:58:48 +10:00
committed by GitHub
5 changed files with 65 additions and 34 deletions
+6
View File
@@ -2,12 +2,18 @@
"MessageCreateSchema": {
"type": "object",
"properties": {
"type": {
"type": "integer"
},
"content": {
"type": "string"
},
"nonce": {
"type": "string"
},
"channel_id": {
"type": "string"
},
"tts": {
"type": "boolean"
},
+19 -3
View File
@@ -27,7 +27,16 @@ const Excluded = [
"Response",
"e.Response",
"request.Response",
"supertest.Response"
"supertest.Response",
// TODO: Figure out how to exclude schemas from node_modules?
"SomeJSONSchema",
"UncheckedPartialSchema",
"PartialSchema",
"UncheckedPropertiesSchema",
"PropertiesSchema",
"AsyncSchema",
"AnySchema",
];
function modify(obj) {
@@ -39,11 +48,18 @@ function modify(obj) {
}
function main() {
const program = TJS.getProgramFromFiles(walk(path.join(__dirname, "..", "src", "routes")), compilerOptions);
const files = [
...walk(path.join(__dirname, "..", "src", "routes")),
...walk(path.join(__dirname, "..", "..", "util", "src")),
];
const program = TJS.getProgramFromFiles(
files,
compilerOptions
);
const generator = TJS.buildGenerator(program, settings);
if (!generator || !program) return;
const schemas = generator.getUserSymbols().filter((x) => (x.endsWith("Schema") || x.endsWith("Response")) && !Excluded.includes(x));
let schemas = generator.getUserSymbols().filter((x) => (x.endsWith("Schema") || x.endsWith("Response")) && !Excluded.includes(x));
console.log(schemas);
var definitions = {};
@@ -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,19 +192,22 @@ router.post(
var body = req.body as MessageCreateSchema;
const attachments: Attachment[] = [];
if (req.file) {
try {
const file = await uploadFile(`/attachments/${req.params.channel_id}`, req.file);
attachments.push({ ...file, proxy_url: file.url });
} 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 files = req.files as Express.Multer.File[] ?? [];
for (var currFile of files) {
try {
const file = await uploadFile(`/attachments/${channel.id}`, currFile);
attachments.push({ ...file, proxy_url: file.url });
}
catch (error) {
return res.status(400).json(error);
}
}
const embeds = body.embeds || [];
if (body.embed) embeds.push(body.embed);
let message = await handleMessage({
+6 -3
View File
@@ -38,7 +38,7 @@ const DEFAULT_FETCH_OPTIONS: any = {
headers: {
"user-agent": "Mozilla/5.0 (compatible; Fosscord/1.0; +https://github.com/fosscord/fosscord)"
},
size: 1024 * 1024 * 1,
// size: 1024 * 1024 * 5, // grabbed from config later
compress: true,
method: "GET"
};
@@ -154,7 +154,10 @@ export async function postHandleMessage(message: Message) {
for (const link of links) {
try {
const request = await fetch(link, DEFAULT_FETCH_OPTIONS);
const request = await fetch(link, {
...DEFAULT_FETCH_OPTIONS,
size: Config.get().limits.message.maxEmbedDownloadSize,
});
const text = await request.text();
const $ = cheerio.load(text);
@@ -191,7 +194,7 @@ export async function postHandleMessage(message: Message) {
channel_id: message.channel_id,
data
} as MessageUpdateEvent),
Message.update({ id: message.id, channel_id: message.channel_id }, data)
Message.update({ id: message.id, channel_id: message.channel_id }, { embeds: data.embeds })
]);
}
+19 -18
View File
@@ -85,6 +85,7 @@ export interface ConfigValue {
maxReactions: number;
maxAttachmentSize: number;
maxBulkDelete: number;
maxEmbedDownloadSize: number;
};
channel: {
maxPins: number;
@@ -232,29 +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,
maxBulkDelete: 100,
maxCharacters: 1048576,
maxTTSCharacters: 160,
maxReactions: 2048,
maxAttachmentSize: 1024 * 1024 * 1024,
maxEmbedDownloadSize: 1024 * 1024 * 5,
maxBulkDelete: 1000,
},
channel: {
maxPins: 50,
maxPins: 500,
maxTopic: 1024,
maxWebhooks: 10,
maxWebhooks: 100,
},
rate: {
disabled: true,
@@ -263,9 +265,8 @@ export const DefaultConfigOptions: ConfigValue = {
window: 5,
},
global: {
count: 20,
count: 250,
window: 5,
bot: 250,
},
error: {
count: 10,