UNPKG

gratian-manager

Version:

Sistema de gerenciamento e hospedagem de múltiplos bots Discord.

109 lines (92 loc) 3.3 kB
#!/usr/bin/env node const http = require("http"); const fs = require("fs-extra"); // troca para fs-extra para facilitar cópia const unzipper = require("unzipper"); const path = require("path"); const { spawn } = require("child_process"); const args = process.argv.slice(2); const LOCAL_VERSION_PATH = path.join(__dirname, "version.json"); const LOCAL_VERSION = JSON.parse(fs.readFileSync(LOCAL_VERSION_PATH)).version; const UPDATE_URL = "http://gra-01.gratian.pro:3039/updates/version.json"; async function initBots() { const userBotsPath = path.join(process.cwd(), "bots"); try { if (await fs.pathExists(userBotsPath)) { console.log("A pasta 'bots/' já existe na raiz do seu projeto."); process.exit(0); } await fs.mkdir(userBotsPath); // Cria a pasta vazia console.log("✅ Pasta 'bots/' criada com sucesso na raiz do seu projeto!"); process.exit(0); } catch (err) { console.error("❌ Erro ao criar a pasta 'bots/':", err); process.exit(1); } } function baixarAtualizacao(zipUrl) { const zipPath = path.join(__dirname, "atualizacao.zip"); console.log("⬇️ Baixando atualização..."); const file = fs.createWriteStream(zipPath); http.get(zipUrl, (res) => { res.pipe(file); file.on("finish", () => { file.close(() => { console.log("📦 Atualização baixada. Extraindo..."); fs.createReadStream(zipPath) .pipe(unzipper.Extract({ path: __dirname })) .on("close", () => { fs.unlinkSync(zipPath); console.log("✅ Atualização concluída. Reiniciando..."); spawn("node", [path.basename(__filename)], { cwd: __dirname, stdio: "inherit" }); process.exit(); }); }); }); }).on("error", err => { console.error("❌ Erro ao baixar atualização:", err.message); }); } function checarAtualizacao() { http.get(UPDATE_URL, (res) => { let dados = ""; res.on("data", chunk => dados += chunk); res.on("end", () => { try { const remoto = JSON.parse(dados); if (remoto.version !== LOCAL_VERSION) { console.log(`🔄 Atualização encontrada: ${remoto.version}`); baixarAtualizacao(remoto.zip); } else { console.log("✅ Nenhuma atualização disponível."); iniciarSistema(); } } catch (err) { console.error("❌ Erro ao analisar versão remota:", err.message); } }); }).on("error", err => { console.error("❌ Erro ao checar atualização:", err.message); iniciarSistema(); }); } function iniciarSistema() { console.log("🚀 Iniciando o sistema..."); require("./G-Manager/mngr.js"); // ou outro script principal } // Lógica para comandos CLI if (args.length > 0 && args[0].toLowerCase() === "init") { // Executa o comando de criação da pasta bots/ initBots(); } else { // Senão, roda o processo normal de atualização e inicialização checarAtualizacao(); } // Mantém o processo ativo até Ctrl+C process.stdin.resume(); process.on('SIGINT', () => { console.log('\nEncerrando o sistema...'); process.exit(0); });