summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-06-11 00:20:41 +0200
committerRory& <root@rory.gay>2026-06-11 00:20:41 +0200
commitc4bc79bebc5eeb9ac5f00807f857fb19bc75b083 (patch)
tree1e21997755a90df83d5fa8ebb6610a0a066fdf2b
parentDont fetch entire channel for welcome message, dont fail if channel doesnt exist (diff)
downloadserver-ts-c4bc79bebc5eeb9ac5f00807f857fb19bc75b083.tar.xz
Assertions first, use exists rather than count/find
-rw-r--r--src/util/entities/Member.ts23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts

index abbbdc14..f7b69d3d 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts
@@ -312,17 +312,17 @@ export class Member extends BaseClassWithoutId { console.log("[Member.addToGuild]", ...data, `[${totalSw.elapsed().toString()} (+${incSw.getElapsedAndReset().totalMilliseconds}ms)]`); }; - const user = await User.getPublicUser(user_id); - logTrace("Get user"); - - const isBanned = await Ban.findOne({ where: { guild_id, user_id }, select: { id: true } }); + const isBanned = await Ban.exists({ where: { guild_id, user_id } }); if (isBanned) throw DiscordApiErrors.USER_BANNED; - logTrace("Check ban"); + logTrace("Check bans"); + + if (await Member.exists({ where: { id: user_id, guild_id } })) throw new HTTPError("You are already a member of this guild", 400); + logTrace("Check existing membership"); const { maxGuilds } = Config.get().limits.user; const guild_count = await Member.count({ where: { id: user_id } }); if (guild_count >= maxGuilds) { - throw new HTTPError(`You are at the ${maxGuilds} server limit.`, 403); + throw new HTTPError(`You are at the ${maxGuilds} guild limit.`, 403); } logTrace("Enforce max guilds"); @@ -359,14 +359,6 @@ export class Member extends BaseClassWithoutId { ).map((member) => member.toPublicMember()); logTrace("Calculate member preview"); - if ( - await Member.count({ - where: { id: user.id, guild: { id: guild_id } }, - }) - ) - throw new HTTPError("You are already a member of this guild", 400); - logTrace("Check existing membership"); - const member = { id: user_id, guild_id, @@ -401,6 +393,9 @@ export class Member extends BaseClassWithoutId { // Member.save is needed because else the roles relations wouldn't be updated }); + const user = await User.getPublicUser(user_id); + logTrace("Get user"); + await Promise.all([ newMember.save(), Guild.increment({ id: guild_id }, "member_count", 1),