From 1b425d82e2382f34f5e84a912d2c338a7f037cfe Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Sun, 8 Feb 2026 22:22:25 +0100 Subject: [PATCH] =?UTF-8?q?cron=20zum=20aktuallisieren=20der=20Discord=20A?= =?UTF-8?q?vatare=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/core-server/modules/chron.ts | 40 ++++++++++++++++++++++++++++++- apps/hub-server/modules/chron.ts | 1 + 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/apps/core-server/modules/chron.ts b/apps/core-server/modules/chron.ts index ea3eb3ca..7979350e 100644 --- a/apps/core-server/modules/chron.ts +++ b/apps/core-server/modules/chron.ts @@ -3,6 +3,7 @@ import { io } from "index"; import cron from "node-cron"; import { setUserStandardNamePermissions } from "routes/helper"; import { changeMemberRoles } from "routes/member"; +import client from "./discord"; const removeMission = async (id: number, reason: string) => { const log: MissionLog = { @@ -121,6 +122,37 @@ const removeClosedMissions = async () => { return removeMission(mission.id, "dem freimelden aller Stationen"); }); }; + +const syncDiscordImgUrls = async () => { + try { + const discordAccounts = await prisma.discordAccount.findMany({ + where: { + updatedAt: { + lt: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000), + }, + User: { + isNot: null, + }, + }, + }); + for (const account of discordAccounts) { + client.users.fetch(account.discordId).then((discordUser) => { + const nextAvatar = discordUser?.avatar ?? null; + if (typeof nextAvatar !== "string") return; + if (nextAvatar === account.avatar) return; + prisma.discordAccount.update({ + where: { + id: account.id, + }, + data: { + avatar: nextAvatar, + }, + }); + }); + } + } catch (error) {} +}; + const removeConnectedAircrafts = async () => { const connectedAircrafts = await prisma.connectedAircraft.findMany({ where: { @@ -216,7 +248,13 @@ const removePermissionsForBannedUsers = async () => { } }; -removePermissionsForBannedUsers(); +cron.schedule("0 0 * * *", async () => { + try { + await syncDiscordImgUrls(); + } catch (error) { + console.error("Error on daily cron job:", error); + } +}); cron.schedule("*/1 * * * *", async () => { try { diff --git a/apps/hub-server/modules/chron.ts b/apps/hub-server/modules/chron.ts index 3b8e4f2b..92401849 100644 --- a/apps/hub-server/modules/chron.ts +++ b/apps/hub-server/modules/chron.ts @@ -84,6 +84,7 @@ const updateParticipantMoodleResults = async () => { }; CronJob.from({ cronTime: "0 * * * *", onTick: syncMoodleIds, start: true }); + CronJob.from({ cronTime: "*/1 * * * *", onTick: async () => {