import 'dotenv/config' import { createBot } from './bot.js' import { startEventProcessor } from './services/event-processor.js' const token = process.env.TELEGRAM_BOT_TOKEN if (!token) { console.error('TELEGRAM_BOT_TOKEN is not set!') process.exit(1) } const bot = createBot(token) // Start event processing loop (polls quest_events table) startEventProcessor(bot) // Start bot if (process.env.NODE_ENV === 'production' && process.env.BOT_WEBHOOK_URL) { // Webhook mode for production bot.api.setWebhook(process.env.BOT_WEBHOOK_URL, { secret_token: process.env.BOT_WEBHOOK_SECRET, }) console.log('Guidly bot started in webhook mode') } else { // Polling mode for development bot.start({ onStart: () => { console.log('Guidly bot started in polling mode') }, }) } // Graceful shutdown process.on('SIGTERM', () => { console.log('Shutting down bot...') bot.stop() }) process.on('SIGINT', () => { console.log('Shutting down bot...') bot.stop() })