From 62b7750a0a233406a188823d5f5248df927cce86 Mon Sep 17 00:00:00 2001 From: Taken Date: Sun, 10 Aug 2025 21:24:25 +0200 Subject: [PATCH] Docker workaround --- src/typings/General.ts | 4 ++++ src/typings/index.ts | 1 + src/utils/Events/autocomplete.ts | 6 +++--- src/utils/Events/button.ts | 6 +++--- src/utils/Events/command.ts | 6 +++--- src/utils/Events/contextmenu.ts | 6 +++--- src/utils/Events/cron.ts | 6 +++--- src/utils/Events/events.ts | 5 +++-- src/utils/Events/loadevents.ts | 17 +++++++++-------- src/utils/Events/modal.ts | 6 +++--- src/utils/Illegitimate.ts | 4 ++-- 11 files changed, 37 insertions(+), 30 deletions(-) create mode 100644 src/typings/General.ts diff --git a/src/typings/General.ts b/src/typings/General.ts new file mode 100644 index 0000000..049e76d --- /dev/null +++ b/src/typings/General.ts @@ -0,0 +1,4 @@ +export type LoadEventsOptions = { + ft: "ts" | "js" + dir: "src" | "dist" | "" +} diff --git a/src/typings/index.ts b/src/typings/index.ts index 1e3e7b3..ab8a7cc 100644 --- a/src/typings/index.ts +++ b/src/typings/index.ts @@ -4,6 +4,7 @@ export * from "./Command" export * from "./ContextMenu" export * from "./Cron" export * from "./Event" +export * from "./General" export * from "./Guild" export * from "./Modal" export * from "./Player" diff --git a/src/utils/Events/autocomplete.ts b/src/utils/Events/autocomplete.ts index 9120dac..8050f0b 100644 --- a/src/utils/Events/autocomplete.ts +++ b/src/utils/Events/autocomplete.ts @@ -2,14 +2,14 @@ import { Events } from "discord.js" import fs from "fs" import path from "path" import { embedColor } from "~/config/options" -import { IAutocomplete } from "~/typings" +import { IAutocomplete, LoadEventsOptions } from "~/typings" import { ExtendedClient as Client } from "~/utils/Client" import logToChannel from "~/utils/Functions/logtochannel" import tryCatch from "../Functions/trycatch" import { log } from "../Logger" -export default async function loadAutocompleteEvents(client: Client, ft: "ts" | "js", folder: "src" | "dist") { - const autocompletePath = path.join(process.cwd(), folder, "components", "autocomplete") +export default async function loadAutocompleteEvents(client: Client, { ft, dir }: LoadEventsOptions) { + const autocompletePath = path.join(process.cwd(), dir, "components", "autocomplete") const autocompleteFiles = fs.readdirSync(autocompletePath).filter(file => file.endsWith(`.${ft}`)) for (const file of autocompleteFiles) { diff --git a/src/utils/Events/button.ts b/src/utils/Events/button.ts index a8d3971..5c7405e 100644 --- a/src/utils/Events/button.ts +++ b/src/utils/Events/button.ts @@ -2,14 +2,14 @@ import { Events, MessageFlags } from "discord.js" import fs from "fs" import path from "path" import { embedColor } from "~/config/options" -import { IButton } from "~/typings" +import { IButton, LoadEventsOptions } from "~/typings" import { ExtendedClient as Client } from "~/utils/Client" import logToChannel from "~/utils/Functions/logtochannel" import tryCatch from "../Functions/trycatch" import { log } from "../Logger" -export default async function loadButtonEvents(client: Client, ft: "ts" | "js", folder: "src" | "dist") { - const btnPath = path.join(process.cwd(), folder, "components", "buttons") +export default async function loadButtonEvents(client: Client, { ft, dir }: LoadEventsOptions) { + const btnPath = path.join(process.cwd(), dir, "components", "buttons") const btnFiles = fs.readdirSync(btnPath).filter(file => file.endsWith(`.${ft}`)) for (const file of btnFiles) { diff --git a/src/utils/Events/command.ts b/src/utils/Events/command.ts index eb0fbb7..ddde10b 100644 --- a/src/utils/Events/command.ts +++ b/src/utils/Events/command.ts @@ -2,14 +2,14 @@ import { Events, MessageFlags } from "discord.js" import fs from "fs" import path from "path" import { embedColor } from "~/config/options" -import { ICommand } from "~/typings" +import { ICommand, LoadEventsOptions } from "~/typings" import { ExtendedClient as Client } from "~/utils/Client" import logToChannel from "~/utils/Functions/logtochannel" import tryCatch from "../Functions/trycatch" import { log } from "../Logger" -export default async function loadSlashCommandsEvents(client: Client, ft: "ts" | "js", folder: "src" | "dist") { - const cmdPath = path.join(process.cwd(), folder, "commands") +export default async function loadSlashCommandsEvents(client: Client, { ft, dir }: LoadEventsOptions) { + const cmdPath = path.join(process.cwd(), dir, "commands") const cmdFiles = fs.readdirSync(cmdPath).filter(file => file.endsWith(`.${ft}`)) for (const file of cmdFiles) { diff --git a/src/utils/Events/contextmenu.ts b/src/utils/Events/contextmenu.ts index 6066459..19ce42c 100644 --- a/src/utils/Events/contextmenu.ts +++ b/src/utils/Events/contextmenu.ts @@ -2,14 +2,14 @@ import { Events, MessageFlags } from "discord.js" import fs from "fs" import path from "path" import { embedColor } from "~/config/options" -import { IContextMenu } from "~/typings" +import { IContextMenu, LoadEventsOptions } from "~/typings" import { ExtendedClient as Client } from "~/utils/Client" import logToChannel from "~/utils/Functions/logtochannel" import tryCatch from "../Functions/trycatch" import { log } from "../Logger" -export default async function loadContextMenuEvents(client: Client, ft: "ts" | "js", folder: "src" | "dist") { - const contextMenuPath = path.join(process.cwd(), folder, "commands-contextmenu") +export default async function loadContextMenuEvents(client: Client, { ft, dir }: LoadEventsOptions) { + const contextMenuPath = path.join(process.cwd(), dir, "commands-contextmenu") const contextMenuFiles = fs.readdirSync(contextMenuPath).filter(file => file.endsWith(`.${ft}`)) for (const file of contextMenuFiles) { diff --git a/src/utils/Events/cron.ts b/src/utils/Events/cron.ts index 5ee1407..5305f30 100644 --- a/src/utils/Events/cron.ts +++ b/src/utils/Events/cron.ts @@ -1,10 +1,10 @@ import { CronJob } from "cron" import fs from "fs" import path from "path" -import { ICron } from "~/typings" +import { ICron, LoadEventsOptions } from "~/typings" -export default async function loadCronEvents(ft: "ts" | "js", folder: "src" | "dist") { - const cronPath = path.join(process.cwd(), folder, "events", "cron") +export default async function loadCronEvents({ ft, dir }: LoadEventsOptions) { + const cronPath = path.join(process.cwd(), dir, "events", "cron") const cronFiles = fs.readdirSync(cronPath).filter(file => file.endsWith(`.${ft}`)) for (const file of cronFiles) { diff --git a/src/utils/Events/events.ts b/src/utils/Events/events.ts index 14cba96..6912a1c 100644 --- a/src/utils/Events/events.ts +++ b/src/utils/Events/events.ts @@ -1,9 +1,10 @@ import fs from "fs" import path from "path" +import { LoadEventsOptions } from "~/typings" import { ExtendedClient as Client } from "~/utils/Client" -export default async function loadEvents(client: Client, ft: "ts" | "js", folder: "src" | "dist") { - const serverDir = path.join(process.cwd(), folder, "events", "server") +export default async function loadEvents(client: Client, { ft, dir }: LoadEventsOptions) { + const serverDir = path.join(process.cwd(), dir, "events", "server") const eventDirs = fs.readdirSync(serverDir) for (const eventDir of eventDirs) { const eventFiles = fs.readdirSync(path.join(serverDir, eventDir)).filter(file => file.endsWith(`.${ft}`)) diff --git a/src/utils/Events/loadevents.ts b/src/utils/Events/loadevents.ts index 86edb6f..68e0c22 100644 --- a/src/utils/Events/loadevents.ts +++ b/src/utils/Events/loadevents.ts @@ -1,3 +1,4 @@ +import { LoadEventsOptions } from "src/typings" import { ExtendedClient } from "../Client" import { log } from "../Logger" import loadAutocompleteEvents from "./autocomplete" @@ -8,12 +9,12 @@ import loadCronEvents from "./cron" import loadEvents from "./events" import loadModalEvents from "./modal" -export default async function loadAllEvents(client: ExtendedClient, ft: "js" | "ts", folder: "dist" | "src") { - await loadEvents(client, ft, folder).then(() => log.info("Events loaded")) - await loadButtonEvents(client, ft, folder).then(() => log.info("Button events loaded")) - await loadSlashCommandsEvents(client, ft, folder).then(() => log.info("Slash commands loaded")) - await loadContextMenuEvents(client, ft, folder).then(() => log.info("Context menu events loaded")) - await loadModalEvents(client, ft, folder).then(() => log.info("Modal events loaded")) - await loadAutocompleteEvents(client, ft, folder).then(() => log.info("Autocomplete events loaded")) - await loadCronEvents(ft, folder).then(() => log.info("Cron events loaded")) +export default async function loadAllEvents(client: ExtendedClient, opts: LoadEventsOptions) { + await loadEvents(client, opts).then(() => log.info("Events loaded")) + await loadButtonEvents(client, opts).then(() => log.info("Button events loaded")) + await loadSlashCommandsEvents(client, opts).then(() => log.info("Slash commands loaded")) + await loadContextMenuEvents(client, opts).then(() => log.info("Context menu events loaded")) + await loadModalEvents(client, opts).then(() => log.info("Modal events loaded")) + await loadAutocompleteEvents(client, opts).then(() => log.info("Autocomplete events loaded")) + await loadCronEvents(opts).then(() => log.info("Cron events loaded")) } diff --git a/src/utils/Events/modal.ts b/src/utils/Events/modal.ts index 804197b..3625fb8 100644 --- a/src/utils/Events/modal.ts +++ b/src/utils/Events/modal.ts @@ -2,14 +2,14 @@ import { Events, MessageFlags } from "discord.js" import fs from "fs" import path from "path" import { embedColor } from "~/config/options" -import { IModal } from "~/typings" +import { IModal, LoadEventsOptions } from "~/typings" import { ExtendedClient as Client } from "~/utils/Client" import logToChannel from "~/utils/Functions/logtochannel" import tryCatch from "../Functions/trycatch" import { log } from "../Logger" -export default async function loadModalEvents(client: Client, ft: "ts" | "js", folder: "src" | "dist") { - const modalPath = path.join(process.cwd(), folder, "components", "modals") +export default async function loadModalEvents(client: Client, { ft, dir }: LoadEventsOptions) { + const modalPath = path.join(process.cwd(), dir, "components", "modals") const modalFiles = fs.readdirSync(modalPath).filter(file => file.endsWith(`.${ft}`)) for (const file of modalFiles) { diff --git a/src/utils/Illegitimate.ts b/src/utils/Illegitimate.ts index 5dbdb04..87ed5b7 100644 --- a/src/utils/Illegitimate.ts +++ b/src/utils/Illegitimate.ts @@ -8,11 +8,11 @@ const client = new Client() const redis = new RedisClient(env.prod.REDISURI) const ft = process.env.BUILD !== "true" ? "ts" : "js" -const folder = process.env.BUILD !== "true" ? "src" : "dist" +const dir = process.env.DOCKER === "1" ? "" : process.env.BUILD !== "true" ? "src" : "dist" class Illegitimate { async start() { - await loadAllEvents(client, ft, folder) + await loadAllEvents(client, { ft, dir }) await client.start() await this.databases() this.loadMethods()