Komplettes AdivmentSystem überarbeitet!
This commit is contained in:
53
server.js
53
server.js
@@ -23,11 +23,15 @@ const { createServer } = require('http');
|
||||
const { Server } = require('socket.io');
|
||||
const swaggerUi = require('swagger-ui-express');
|
||||
const swaggerSpecs = require('./swagger');
|
||||
const cron = require('node-cron');
|
||||
require('dotenv').config();
|
||||
|
||||
// Route Imports
|
||||
const { router: apiRoutes, requireApiKey } = require('./routes/api');
|
||||
|
||||
// Achievement System
|
||||
const AchievementSystem = require('./lib/achievementSystem');
|
||||
|
||||
// ============================================================================
|
||||
// SERVER CONFIGURATION
|
||||
// ============================================================================
|
||||
@@ -279,6 +283,55 @@ server.listen(port, () => {
|
||||
console.log(` 👑 Admin: /api/v1/admin/`);
|
||||
});
|
||||
|
||||
// ============================================================================
|
||||
// SCHEDULED TASKS
|
||||
// ============================================================================
|
||||
|
||||
/**
|
||||
* Scheduled Function - Runs daily at 7 PM (19:00)
|
||||
* Führt tägliche Achievement-Prüfung durch
|
||||
*/
|
||||
async function scheduledTaskAt7PM() {
|
||||
const now = new Date();
|
||||
console.log(`⏰ Geplante Aufgabe ausgeführt um ${now.toLocaleString('de-DE')}`);
|
||||
|
||||
try {
|
||||
// Initialisiere Achievement-System
|
||||
const achievementSystem = new AchievementSystem();
|
||||
|
||||
// Führe tägliche Achievement-Prüfung durch
|
||||
const result = await achievementSystem.runDailyAchievementCheck();
|
||||
|
||||
console.log(`🏆 Achievement-Prüfung abgeschlossen:`);
|
||||
console.log(` 📊 ${result.totalNewAchievements} neue Achievements vergeben`);
|
||||
console.log(` 👥 ${result.playerAchievements.length} Spieler haben neue Achievements erhalten`);
|
||||
|
||||
// Zeige Details der neuen Achievements
|
||||
if (result.playerAchievements.length > 0) {
|
||||
console.log(`\n📋 Neue Achievements im Detail:`);
|
||||
result.playerAchievements.forEach(player => {
|
||||
console.log(` 👤 ${player.player}:`);
|
||||
player.achievements.forEach(achievement => {
|
||||
console.log(` ${achievement.icon} ${achievement.name} (+${achievement.points} Punkte)`);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
console.log('✅ Geplante Aufgabe erfolgreich abgeschlossen');
|
||||
} catch (error) {
|
||||
console.error('❌ Fehler bei der geplanten Aufgabe:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Cron Job: Täglich um 19:00 Uhr (7 PM)
|
||||
// Format: Sekunde Minute Stunde Tag Monat Wochentag
|
||||
cron.schedule('0 0 19 * * *', scheduledTaskAt7PM, {
|
||||
scheduled: true,
|
||||
timezone: "Europe/Berlin" // Deutsche Zeitzone
|
||||
});
|
||||
|
||||
console.log('📅 Geplante Aufgabe eingerichtet: Täglich um 19:00 Uhr');
|
||||
|
||||
// ============================================================================
|
||||
// GRACEFUL SHUTDOWN
|
||||
// ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user