diff --git a/src/api/index.ts b/src/api/index.ts index 83172a4..b99f178 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,3 +1,4 @@ +import { startAutorestart } from "@util/autorestart"; import { startFisherTick } from "./fish/fishers"; import { startObjectTimers } from "./fish/locations"; import { initTree } from "./fish/tree"; @@ -10,3 +11,5 @@ loadDefaultBehaviors(); require("./api/server"); require("./cli/readline"); + +startAutorestart(); diff --git a/src/cli/index.ts b/src/cli/index.ts index ce7a1b9..6da2b6a 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -2,6 +2,7 @@ import { Logger } from "@util/Logger"; import { createInterface, type ReadLine } from "readline"; import { EventEmitter } from "events"; import gettRPC from "@util/api/trpc"; +import { startAutorestart } from "@util/autorestart"; const trpc = gettRPC(process.env.CLI_FISHING_TOKEN as string); @@ -98,3 +99,5 @@ b.on("color", msg => { b.on("sendchat", msg => { logger.info(cliMd(msg.message)); }); + +startAutorestart(); diff --git a/src/discord/index.ts b/src/discord/index.ts index 086894c..4611126 100644 --- a/src/discord/index.ts +++ b/src/discord/index.ts @@ -1,6 +1,7 @@ import { loadConfig } from "@util/config"; import { initBot } from "./bot"; import type { DiscordBotConfig } from "./bot/Bot"; +import { startAutorestart } from "@util/autorestart"; const config = loadConfig("config/discord.yml", { serverID: "841331769051578413", @@ -8,3 +9,5 @@ const config = loadConfig("config/discord.yml", { }); await initBot(config); + +startAutorestart(); diff --git a/src/mpp/index.ts b/src/mpp/index.ts index b5476de..497546a 100644 --- a/src/mpp/index.ts +++ b/src/mpp/index.ts @@ -1,3 +1,6 @@ +import { startAutorestart } from "@util/autorestart"; import { connectDefaultBots } from "./bot"; connectDefaultBots(); + +startAutorestart(); diff --git a/src/util/autorestart.ts b/src/util/autorestart.ts new file mode 100644 index 0000000..3278be2 --- /dev/null +++ b/src/util/autorestart.ts @@ -0,0 +1,9 @@ +export function startAutorestart() { + // Assuming we're under PM2... + // the process should restart + // automatically upon exit + + setTimeout(() => { + process.exit(); + }, 12 * 60 * 60 * 1000); +}