From 8b72326419a532b5574788d7370fbe3af90c9df4 Mon Sep 17 00:00:00 2001 From: Lukas | AstroGD Date: Fri, 25 Nov 2022 18:28:42 +0100 Subject: [PATCH] Cleanup on bot start --- src/client/init.ts | 3 +++ src/service/cleanup.ts | 39 +++++++++++++++++++++++++++++++++++++++ src/service/index.ts | 7 ++++++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/service/cleanup.ts diff --git a/src/client/init.ts b/src/client/init.ts index bfa5e6e..f21b2d5 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -1,3 +1,4 @@ +import { runCleanup } from "../service"; import client from "./index"; const token = process.env["TOKEN"]; @@ -7,4 +8,6 @@ client.login(token); client.on("ready", () => { console.log(`Connected to Discord API. Bot account is ${client.user?.tag} (${client.user?.id})`); + + runCleanup(); }); \ No newline at end of file diff --git a/src/service/cleanup.ts b/src/service/cleanup.ts new file mode 100644 index 0000000..68cd410 --- /dev/null +++ b/src/service/cleanup.ts @@ -0,0 +1,39 @@ +import { Badword, database, GuildSetting } from "../data"; +import client from "../client"; +import { DiscordAPIError } from "discord.js"; + +export default async function execute(): Promise { + const guilds = await database.getRepository(GuildSetting).find({ + where: { + preserveDataOnGuildLeave: false + } + }); + + for (const guild of guilds) { + try { + await client.guilds.fetch(guild.id); + } catch (error) { + if (!(error instanceof DiscordAPIError)) { + console.error(`service.cleanup failed: ${error}`); + return; + } + + const id = guild.id; + + // 5001 = Missing access + if (error.code.toString() !== "50001") { + console.warn(`Guild ${guild.id} is unavailable but not because of error 5001:\n${error}`); + continue; + } + + await database.getRepository(Badword).delete({ + guildID: guild.id + }); + + await database.getRepository(GuildSetting).remove(guild); + console.log(`Removed data for guild ${id}`); + } + } + + console.log("Cleanup completed"); +} \ No newline at end of file diff --git a/src/service/index.ts b/src/service/index.ts index f45bde5..4b9405c 100644 --- a/src/service/index.ts +++ b/src/service/index.ts @@ -1 +1,6 @@ -import "./uptime"; \ No newline at end of file +import "./uptime"; +import runCleanup from "./cleanup"; + +export { + runCleanup +} \ No newline at end of file