Catch Blocks

This commit is contained in:
PxlLoewe
2026-02-01 00:01:06 +01:00
parent 829d6d8cde
commit a60cd67c44
5 changed files with 92 additions and 65 deletions

View File

@@ -142,73 +142,77 @@ const removeConnectedAircrafts = async () => {
}); });
}; };
const removePermissionsForBannedUsers = async () => { const removePermissionsForBannedUsers = async () => {
const removePermissionsPenaltys = await prisma.penalty.findMany({ try {
where: { const removePermissionsPenaltys = await prisma.penalty.findMany({
removePermissionApplied: false, where: {
User: { removePermissionApplied: false,
DiscordAccount: { isNot: null }, User: {
}, DiscordAccount: { isNot: null },
},
include: {
User: {
include: {
DiscordAccount: true,
FormerDiscordAccounts: true,
}, },
}, },
}, include: {
}); User: {
include: {
const addPermissionsPenaltys = await prisma.penalty.findMany({ DiscordAccount: true,
where: { FormerDiscordAccounts: true,
addPermissionApplied: false, },
User: {
DiscordAccount: { isNot: null },
},
OR: [{ suspended: true }, { until: { lt: new Date().toISOString() } }],
},
include: {
User: {
include: {
DiscordAccount: true,
FormerDiscordAccounts: true,
}, },
}, },
}, });
});
for (const penalty of removePermissionsPenaltys) { const addPermissionsPenaltys = await prisma.penalty.findMany({
const user = penalty.User; where: {
console.log(`Removing roles for user ${user.id} due to penalty ${penalty.id}`); addPermissionApplied: false,
User: {
DiscordAccount: { isNot: null },
},
OR: [{ suspended: true }, { until: { lt: new Date().toISOString() } }],
},
include: {
User: {
include: {
DiscordAccount: true,
FormerDiscordAccounts: true,
},
},
},
});
await changeMemberRoles( for (const penalty of removePermissionsPenaltys) {
user.DiscordAccount!.discordId, const user = penalty.User;
[DISCORD_ROLES.PILOT, DISCORD_ROLES.DISPATCHER], console.log(`Removing roles for user ${user.id} due to penalty ${penalty.id}`);
"remove",
);
for (const formerAccount of user.FormerDiscordAccounts) {
await changeMemberRoles( await changeMemberRoles(
formerAccount.discordId, user.DiscordAccount!.discordId,
[DISCORD_ROLES.PILOT, DISCORD_ROLES.DISPATCHER], [DISCORD_ROLES.PILOT, DISCORD_ROLES.DISPATCHER],
"remove", "remove",
); );
for (const formerAccount of user.FormerDiscordAccounts) {
await changeMemberRoles(
formerAccount.discordId,
[DISCORD_ROLES.PILOT, DISCORD_ROLES.DISPATCHER],
"remove",
);
}
await prisma.penalty.update({
where: { id: penalty.id },
data: { removePermissionApplied: true },
});
} }
await prisma.penalty.update({ for (const penalty of addPermissionsPenaltys) {
where: { id: penalty.id }, console.log(`Restoring roles for user ${penalty.userId} due to penalty ${penalty.id}`);
data: { removePermissionApplied: true }, await setUserStandardNamePermissions({
}); memberId: penalty.User.DiscordAccount!.discordId,
} userId: penalty.userId,
for (const penalty of addPermissionsPenaltys) { });
console.log(`Restoring roles for user ${penalty.userId} due to penalty ${penalty.id}`); await prisma.penalty.update({
await setUserStandardNamePermissions({ where: { id: penalty.id },
memberId: penalty.User.DiscordAccount!.discordId, data: { addPermissionApplied: true },
userId: penalty.userId, });
}); }
await prisma.penalty.update({ } catch (error) {
where: { id: penalty.id }, console.error("Error removing permissions for banned users:", error);
data: { addPermissionApplied: true },
});
} }
}; };

View File

@@ -66,6 +66,8 @@ export const setUserStandardNamePermissions = async ({
const publicUser = getPublicUser(user); const publicUser = getPublicUser(user);
const member = await getMember(memberId); const member = await getMember(memberId);
if (!member) throw new Error("Member not found");
await member.setNickname(`${publicUser.fullName} - ${user.publicId}`); await member.setNickname(`${publicUser.fullName} - ${user.publicId}`);
const isPilot = user.permissions.includes("PILOT"); const isPilot = user.permissions.includes("PILOT");
const isDispatcher = user.permissions.includes("DISPO"); const isDispatcher = user.permissions.includes("DISPO");
@@ -79,10 +81,14 @@ export const setUserStandardNamePermissions = async ({
}; };
router.post("/set-standard-name", async (req, res) => { router.post("/set-standard-name", async (req, res) => {
const { memberId, userId } = req.body; try {
const { memberId, userId } = req.body;
await setUserStandardNamePermissions({ memberId, userId }); await setUserStandardNamePermissions({ memberId, userId });
res.status(200).json({ message: "Standard name and permissions set" }); res.status(200).json({ message: "Standard name and permissions set" });
} catch (error) {
res.status(500).json({ error: (error as unknown as Error).message });
}
}); });
export default router; export default router;

View File

@@ -20,12 +20,12 @@ export const getMember = async (memberId: string) => {
try { try {
let member = guild.members.cache.get(memberId); let member = guild.members.cache.get(memberId);
if (!member) { if (!member) {
member = await guild.members.fetch(memberId); member = await guild.members.fetch(memberId).catch((e) => undefined);
} }
return member; return member;
} catch (error) { } catch (error) {
console.error("Error fetching member:", error); console.error("Error fetching member:", error);
throw new Error("Member not found"); return null;
} }
}; };
@@ -37,6 +37,10 @@ router.post("/rename", async (req: Request, res: Response) => {
} }
try { try {
const member = await getMember(memberId); const member = await getMember(memberId);
if (!member) {
res.status(404).json({ error: "Member not found" });
return;
}
await member.setNickname(newName); await member.setNickname(newName);
console.log(`Member ${member.id} renamed to ${newName}`); console.log(`Member ${member.id} renamed to ${newName}`);
res.status(200).json({ message: "Member renamed successfully" }); res.status(200).json({ message: "Member renamed successfully" });
@@ -52,6 +56,9 @@ export const changeMemberRoles = async (
action: "add" | "remove", action: "add" | "remove",
) => { ) => {
const member = await getMember(memberId); const member = await getMember(memberId);
if (!member) {
throw new Error("Member not found");
}
const currentRoleIds = member.roles.cache.map((role) => role.id); const currentRoleIds = member.roles.cache.map((role) => role.id);
const filteredRoleIds = const filteredRoleIds =

View File

@@ -663,10 +663,15 @@ export const AdminForm = ({
> >
<Button <Button
onClick={async () => { onClick={async () => {
await setStandardName({ const res = (await setStandardName({
memberId: discordAccount.discordId, memberId: discordAccount.discordId,
userId: user.id, userId: user.id,
}); })) as unknown as { error?: string };
console.log(res);
if (res?.error) {
toast.error(res.error);
return;
}
toast.success("Standard Name wurde gesetzt!", { toast.success("Standard Name wurde gesetzt!", {
style: { style: {
background: "var(--color-base-100)", background: "var(--color-base-100)",

View File

@@ -1,5 +1,5 @@
"use server"; "use server";
import axios from "axios"; import axios, { AxiosError } from "axios";
const discordAxiosClient = axios.create({ const discordAxiosClient = axios.create({
baseURL: process.env.CORE_SERVER_URL || "http://localhost:3005", baseURL: process.env.CORE_SERVER_URL || "http://localhost:3005",
@@ -55,12 +55,17 @@ export const setStandardName = async ({
memberId: string; memberId: string;
userId: string; userId: string;
}) => { }) => {
discordAxiosClient return discordAxiosClient
.post("/helper/set-standard-name", { .post("/helper/set-standard-name", {
memberId, memberId,
userId, userId,
}) })
.catch((error) => { .catch((error) => {
console.error("Error removing roles from member:", error); console.log("Error removing roles from member:", error);
return {
error:
((error as unknown as AxiosError).response?.data as unknown as { error: string }).error ||
(error as unknown as AxiosError).message,
};
}); });
}; };