From c671db293899056b50a3d31c15a15b8f2ca12613 Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Mon, 16 Feb 2026 14:34:33 -0700 Subject: [PATCH] Fix user self delete not removing settings protos --- src/api/routes/users/@me/delete.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/api/routes/users/@me/delete.ts b/src/api/routes/users/@me/delete.ts index 749baf70f..9f4fbf927 100644 --- a/src/api/routes/users/@me/delete.ts +++ b/src/api/routes/users/@me/delete.ts @@ -17,7 +17,7 @@ */ import { route } from "@spacebar/api"; -import { Member, User } from "@spacebar/util"; +import { DiscordApiErrors, Guild, Member, User, UserSettingsProtos } from "@spacebar/util"; import bcrypt from "bcrypt"; import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; @@ -55,7 +55,14 @@ router.post( // TODO: decrement guild member count if (correctpass) { + // Check if the user owns any guilds. + const ownedGuilds = await Guild.findOne({ where: { owner_id: req.user_id } }); + if (ownedGuilds) { + throw new HTTPError("User owns guilds and cannot be deleted", 403); + } + const members = await Member.find({ where: { id: req.user_id } }); + await UserSettingsProtos.delete({ user_id: req.user_id }); await Promise.all([User.delete({ id: req.user_id }), ...members.map((member) => Member.removeFromGuild(member.id, member.guild_id))]); res.sendStatus(204);