diff --git a/src/index.ts b/src/index.ts index 063c027..4bc92ab 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,6 +8,19 @@ dotenv.config(); // Get port from environment or default to 3000 const PORT = process.env.PORT ? parseInt(process.env.PORT) : 3000; +// Enhanced error logging +function logError(error: unknown) { + if (error instanceof Error) { + console.error('Error:', error.message); + console.error('Stack:', error.stack); + if (error.cause) { + console.error('Caused by:', error.cause); + } + } else { + console.error('Unknown error:', error); + } +} + // Start the bot and server async function main() { try { @@ -18,21 +31,49 @@ async function main() { console.log('Starting server...'); startServer(PORT); console.log(`Server running on port ${PORT}`); + + // Keep process alive + setInterval(() => { + // Just keep the event loop running + }, 1000); + } catch (error) { - console.error('Error starting application:', error); + console.error('\n=== APPLICATION FAILED TO START ==='); + logError(error); + console.error('==============================='); process.exit(1); } } // Handle process termination process.on('SIGINT', () => { - console.log('Shutting down gracefully...'); + console.log('\nShutting down gracefully...'); process.exit(0); }); process.on('SIGTERM', () => { - console.log('Shutting down gracefully...'); + console.log('\nShutting down gracefully...'); process.exit(0); }); -main(); +process.on('uncaughtException', (error) => { + console.error('\n=== UNCAUGHT EXCEPTION ==='); + logError(error); + console.error('========================='); + process.exit(1); +}); + +process.on('unhandledRejection', (reason, promise) => { + console.error('\n=== UNHANDLED REJECTION ==='); + console.error('Promise:', promise); + console.error('Reason:', reason); + console.error('========================='); + process.exit(1); +}); + +main().catch((error) => { + console.error('\n=== MAIN FUNCTION FAILED ==='); + logError(error); + console.error('========================='); + process.exit(1); +});