if (process.platform === "win32") console.log("\x1b[1m\x1b[31m\x1b[40m" + `WIN32 IS NOT OFFICIALLY SUPPORTED! Although there's a (very) slim chance of it working, multiple aspects of the bot are built with UNIX-like systems in mind and could break on Win32-based systems. If you want to run the bot on Windows, using Windows Subsystem for Linux is highly recommended. The bot will continue to run past this message, but keep in mind that it could break at any time. Continue running at your own risk; alternatively, stop the bot using Ctrl+C and install WSL.` + "\x1b[0m"); // load config from .env file require("dotenv").config(); // turn fs.readdir into a promise const readdir = require("util").promisify(require("fs").readdir); // fancy loggings const logger = require("./utils/logger.js"); // start the client const client = require("./utils/client.js"); // initialize command loader const handler = require("./utils/handler.js"); const sound = require("./utils/soundplayer.js"); // registers stuff and connects the bot async function init() { logger.log("info", "Starting esmBot..."); // register commands and their info const commands = await readdir("./commands/"); const soundStatus = await sound.checkStatus(); logger.log("info", `Attempting to load ${commands.length} commands...`); for (const commandFile of commands) { logger.log("info", `Loading command ${commandFile}...`); try { await handler.load(commandFile, soundStatus); } catch (e) { logger.error(`Failed to register command ${commandFile.split(".")[0]}: ${e}`); } } // register events const events = await readdir("./events/"); logger.log("info", `Attempting to load ${events.length} events...`); for (const file of events) { logger.log("info", `Loading event ${file}...`); const eventName = file.split(".")[0]; const event = require(`./events/${file}`); client.on(eventName, event); } // login client.connect(); // post to DBL if (process.env.NODE_ENV === "production") { require("./utils/dbl.js"); } // handle ctrl+c and pm2 stop process.on("SIGINT", () => { logger.log("info", "SIGINT detected, shutting down..."); client.editStatus("dnd", { name: "Restarting/shutting down..." }); for (const command of commands) { handler.unload(command); } client.disconnect(); const db = require("./utils/database.js"); if (process.env.DB === "mongo") { db.connection.close(() => { process.exit(0); }); } else if (process.env.DB === "postgres") { db.connection.end(); process.exit(0); } }); } // launch the bot init();