* health check * Update Dockerfile * simplifying the deployment * Update Bot.js makes the find team command public * test (#9) * Dev (#7) * health check * Update Dockerfile * simplifying the deployment * Dev (#8) * health check * Update Dockerfile * simplifying the deployment * Update Bot.js makes the find team command public * Update PlayerService.js * massive update???? could break stuff * Update Bot.js update
86 lines
2.3 KiB
JavaScript
86 lines
2.3 KiB
JavaScript
const winston = require('winston');
|
|
const { createClient } = require('@supabase/supabase-js');
|
|
const Bot = require('./src/Bot');
|
|
require('dotenv').config();
|
|
|
|
// Import Express and create an app for health checks and webhooks
|
|
const express = require('express');
|
|
const app = express();
|
|
|
|
// Middleware for parsing JSON
|
|
app.use(express.json());
|
|
|
|
// 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 bot
|
|
const bot = new Bot(process.env.DISCORD_TOKEN, supabase, logger);
|
|
|
|
// Add health check endpoint
|
|
app.get('/health', (req, res) => {
|
|
res.status(200).json({ status: 'healthy' });
|
|
});
|
|
|
|
// Add notification webhook endpoint (this will be used by the NotificationService)
|
|
app.post('/api/match-notification', async (req, res) => {
|
|
if (bot.notificationService && bot.notificationService.handleMatchNotification) {
|
|
await bot.notificationService.handleMatchNotification(req, res);
|
|
} else {
|
|
res.status(503).json({ error: 'Notification service not ready' });
|
|
}
|
|
});
|
|
|
|
// Start the server
|
|
const PORT = process.env.PORT || 3000;
|
|
app.listen(PORT, () => {
|
|
logger.info(`Health check server listening on port ${PORT}`);
|
|
});
|
|
|
|
// Initialize and start bot
|
|
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);
|
|
}
|
|
}); |