const winston = require('winston'); const { createClient } = require('@supabase/supabase-js'); const Bot = require('./src/Bot'); require('dotenv').config(); // Initialize logger const logger = winston.createLogger({ level: 'debug', format: winston.format.combine( winston.format.timestamp(), winston.format.json() ), transports: [ new winston.transports.Console({ format: winston.format.combine( winston.format.colorize(), winston.format.simple() ) }) ] }); // Initialize Supabase client const supabase = createClient( process.env.SUPABASE_URL, process.env.SUPABASE_KEY ); // Initialize and start bot const bot = new Bot(process.env.DISCORD_TOKEN, supabase, logger); bot.start().catch(error => { console.error('Failed to start bot:', error); process.exit(1); }); // Handle process termination process.on('SIGINT', async () => { console.log('Received SIGINT. Shutting down...'); try { await bot.stop(); process.exit(0); } catch (error) { console.error('Error during shutdown:', error); process.exit(1); } }); process.on('SIGTERM', async () => { console.log('Received SIGTERM. Shutting down...'); try { await bot.stop(); process.exit(0); } catch (error) { console.error('Error during shutdown:', error); process.exit(1); } }); // Add health check endpoint app.get('/health', (req, res) => { res.status(200).json({ status: 'healthy' }); });