🐛 fix addMember to respect max guild size

This commit is contained in:
Flam3rboy 2021-02-22 22:15:12 +01:00
parent 5f142a7402
commit 01eb91a63e
4 changed files with 26 additions and 2 deletions

BIN
package-lock.json generated

Binary file not shown.

View File

@ -80,3 +80,5 @@ router.delete("/:userid", async (req: Request, res: Response) => {
return res.status(204).send();
});
export default router;

View File

@ -6,7 +6,7 @@ export default {
init() {
return Config.init({ api: DefaultOptions });
},
get() {
get(): DefaultOptions {
return Config.getAll().api;
},
set(val: any) {

View File

@ -9,11 +9,33 @@ import {
UserModel,
} from "fosscord-server-util";
import { HTTPError } from "lambert-server";
import Config from "./Config";
import { emitEvent } from "./Event";
import { getPublicUser } from "./User";
export const PublicMemberProjection = {
id: true,
guild_id: true,
nick: true,
roles: true,
joined_at: true,
pending: true,
deaf: true,
mute: true,
premium_since: true,
};
export async function addMember(user_id: bigint, guild_id: bigint, cache?: { guild?: Guild }) {
const user = await getPublicUser(user_id);
const user = await getPublicUser(user_id, { guilds: true });
const guildSize = user.guilds.length;
// @ts-ignore
user.guilds = undefined;
const { maxGuilds } = Config.get().limits.user;
if (guildSize >= maxGuilds) {
throw new HTTPError(` You are at the ${maxGuilds} server limit.`, 403);
}
const guild = cache?.guild || (await GuildModel.findOne({ id: guild_id }).exec());
const member = {