Bot & Automation

Market AI

/root/hermes-projects/Market AI

src/index.ts text
import { createAppComponents, createAutoTradingService, createBot, registerBot } from "./app";
import { env } from "./config/env";

async function main(): Promise<void> {
  console.log("[startup] Memulai inisialisasi bot...");
  const components = createAppComponents();
  console.log("[startup] Komponen aplikasi berhasil dimuat.");
  const bot = createBot();
  console.log("[startup] Objek bot berhasil dibuat.");
  const autoTradingService = createAutoTradingService(components, bot);
  console.log("[startup] AutoTradingService berhasil diinisialisasi.");
  registerBot(bot, components, autoTradingService);
  console.log("[startup] Handlers bot berhasil diregistrasi.");

  console.log("[startup] Menghapus webhook lama...");
  await bot.telegram.callApi("deleteWebhook", { drop_pending_updates: true });
  console.log("[startup] Webhook lama berhasil dihapus.");

  console.log("[startup] Mengaktifkan AutoTradingService...");
  autoTradingService.start();
  console.log("[startup] AutoTradingService aktif.");
  
  console.log("[startup] Memulai koneksi long-polling ke Telegram...");
  bot.launch({ dropPendingUpdates: true }).catch((err) => {
    console.error("[startup] Gagal meluncurkan bot Telegraf:", err);
  });
  console.log("[startup] Koneksi Telegraf berjalan.");

  console.log(`${env.botDisplayName} aktif dalam mode ${env.tradingMode}.`);

  process.once("SIGINT", () => {
    autoTradingService.stop();
    bot.stop("SIGINT");
  });
  process.once("SIGTERM", () => {
    autoTradingService.stop();
    bot.stop("SIGTERM");
  });
}

main().catch((error) => {
  const message = error instanceof Error ? error.message : "Unknown startup error";
  console.error(`Startup failed: ${message}`);
  process.exitCode = 1;
});