forked from syntaxbullet/AuroraBot-discord
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { AuroraClient } from "@/lib/BotClient";
|
|
import { env } from "@shared/lib/env";
|
|
import { join } from "node:path";
|
|
|
|
import { startWebServerFromRoot } from "../web/src/server";
|
|
|
|
// Load commands & events
|
|
await AuroraClient.loadCommands();
|
|
await AuroraClient.loadEvents();
|
|
await AuroraClient.deployCommands();
|
|
await AuroraClient.setupSystemEvents();
|
|
|
|
console.log("🌐 Starting web server...");
|
|
|
|
let shuttingDown = false;
|
|
|
|
const webProjectPath = join(import.meta.dir, "../web");
|
|
const webPort = Number(process.env.WEB_PORT) || 3000;
|
|
const webHost = process.env.HOST || "0.0.0.0";
|
|
|
|
// Start web server in the same process
|
|
const webServer = await startWebServerFromRoot(webProjectPath, {
|
|
port: webPort,
|
|
hostname: webHost,
|
|
});
|
|
|
|
// login with the token from .env
|
|
if (!env.DISCORD_BOT_TOKEN) {
|
|
throw new Error("❌ DISCORD_BOT_TOKEN is not set in environment variables.");
|
|
}
|
|
AuroraClient.login(env.DISCORD_BOT_TOKEN);
|
|
|
|
// Handle graceful shutdown
|
|
const shutdownHandler = async () => {
|
|
if (shuttingDown) return;
|
|
shuttingDown = true;
|
|
console.log("🛑 Shutdown signal received. Stopping services...");
|
|
|
|
// Stop web server
|
|
await webServer.stop();
|
|
|
|
// Stop bot
|
|
AuroraClient.shutdown();
|
|
|
|
process.exit(0);
|
|
};
|
|
|
|
process.on("SIGINT", shutdownHandler);
|
|
process.on("SIGTERM", shutdownHandler); |