aboutsummaryrefslogtreecommitdiff
path: root/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'index.ts')
-rw-r--r--index.ts65
1 files changed, 65 insertions, 0 deletions
diff --git a/index.ts b/index.ts
new file mode 100644
index 0000000..0446559
--- /dev/null
+++ b/index.ts
@@ -0,0 +1,65 @@
+import * as fs from 'fs';
+import {LogManager} from "./core/LogManager";
+import {CoolerPony} from "./core/CoolerPony";
+
+global.data = {};
+let lastSaveData = "{}";
+
+if (fs.existsSync("./data/database.json")) {
+ global.data = JSON.parse(fs.readFileSync("./data/database.json").toString());
+ lastSaveData = fs.readFileSync("./data/database.json").toString();
+}
+
+setInterval(() => {
+ if (lastSaveData !== JSON.stringify(global.data)) {
+ fs.writeFileSync("./data/database.json", JSON.stringify(global.data));
+ lastSaveData = JSON.stringify(global.data);
+ }
+});
+
+if (!global.data.managedChannels) {
+ global.data.managedChannels = [];
+}
+
+global.version = (fs.existsSync("./.git/refs/heads/mane") ? fs.readFileSync("./.git/refs/heads/mane").toString().trim().substring(0, 8) : (fs.existsSync("../.git/refs/heads/mane") ? fs.readFileSync("../.git/refs/heads/mane").toString().trim().substring(0, 8) : (fs.existsSync("./version.txt") ? fs.readFileSync("./version.txt").toString().trim() : (fs.existsSync("../version.txt") ? fs.readFileSync("../version.txt").toString().trim() : "live"))));
+global.build = (fs.existsSync("./build.txt") ? fs.readFileSync("./build.txt").toString().trim() : (fs.existsSync("../build.txt") ? fs.readFileSync("../build.txt").toString().trim() : "dev"));
+
+function restart() {
+ if (fs.existsSync("./data/lastRestart") && new Date().getTime() - new Date(fs.readFileSync("./data/lastRestart").toString()).getTime() < 60000) {
+ LogManager.error("Restart cancelled: too close to another restart, try again in a few seconds.");
+ fs.rmSync("./RESTART", {recursive: true});
+ } else {
+ fs.rmSync("./RESTART", {recursive: true});
+ fs.writeFileSync("./data/lastRestart", new Date().toISOString());
+ LogManager.warn("Restart requested.");
+ process.exit(14);
+ }
+}
+
+async function restartManager() {
+ if (fs.existsSync("./RESTART-FORCE")) {
+ fs.rmSync("./RESTART-FORCE", {recursive: true});
+ LogManager.warn("Force restart requested.");
+ process.exit(14);
+ }
+
+ if (fs.existsSync("./RESTART")) {
+ restart();
+ }
+}
+
+setInterval(restartManager, 500);
+global.systemRoot = __dirname;
+
+if (!fs.existsSync("data")) fs.mkdirSync("data");
+
+let token = "";
+if (fs.existsSync("token.txt")) token = fs.readFileSync("token.txt").toString().trim();
+else if (fs.existsSync("../token.txt")) token = fs.readFileSync("../token.txt").toString().trim();
+else {
+ LogManager.error("Cannot find token in the expected places (" + __dirname + "/token.txt or " + __dirname.split("/").splice(__dirname.split("/").length - 1, 1).join("/") + "/token.txt");
+ process.exit(1);
+}
+
+LogManager.verbose("Starting Discord bot...");
+new CoolerPony(token); \ No newline at end of file