Komplettes AdivmentSystem überarbeitet!

This commit is contained in:
2025-09-11 17:07:43 +02:00
parent 28616b3b0c
commit 6d5dc9eb7a
9 changed files with 1087 additions and 16 deletions

View File

@@ -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
// ============================================================================