import dotenv from "dotenv"; dotenv.config(); import express from "express"; import session from "express-session"; import { connectDB } from "./services/db.js"; import authRoutes from "./routes/auth.js"; import uploadRoutes from "./routes/upload.js"; import downloadRoutes from "./routes/download.js"; import searchUserRoute from "./routes/search-user.js"; import settingsRoutes from "./routes/settings.js"; import adminRoutes from "./routes/admin.js"; await connectDB(); const app = express(); // État du bot (mis à jour par le bot lui-même) export let botStatus = { online: false, lastPing: null }; app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(express.static("public")); app.use(session({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false })); // 🤖 Route appelée par le bot pour signaler qu'il est en ligne app.post("/internal/bot-ping", (req, res) => { const { secret } = req.body; if (secret !== process.env.INTERNAL_SECRET) { return res.status(403).json({ error: "Forbidden" }); } botStatus.online = true; botStatus.lastPing = Date.now(); console.log("✅ Bot ping reçu"); res.json({ ok: true }); }); // Considère le bot offline si pas de ping depuis 60s setInterval(() => { if (botStatus.lastPing && Date.now() - botStatus.lastPing > 60_000) { botStatus.online = false; } }, 10_000); app.use(authRoutes); app.use(uploadRoutes); app.use(downloadRoutes); app.use(searchUserRoute); app.use(settingsRoutes); app.use(adminRoutes); app.listen(process.env.PORT, () => console.log("Serveur lancé sur " + process.env.BASE_URL) );