prepare("SELECT id, points FROM fans WHERE name = ?"); $stmt->execute([$username]); $fan = $stmt->fetch(); $oldPoints = 0; if ($fan) { $oldPoints = $fan['points']; $newPoints = $oldPoints + $pointsToAdd; $db->prepare("UPDATE fans SET points = ? WHERE id = ?")->execute([$newPoints, $fan['id']]); } else { $newPoints = $pointsToAdd; $db->prepare("INSERT INTO fans (name, points) VALUES (?, ?)")->execute([$username, $newPoints]); } // Check level up $milestones = [100, 500, 1000, 2500, 5000, 10000]; foreach ($milestones as $level => $threshold) { if ($oldPoints < $threshold && $newPoints >= $threshold) { $levelNumber = $level + 1; announceLevelUp($username, $levelNumber, $threshold); break; // Only announce the highest level reached if jumping multiple } } return $newPoints; } function awardLoyaltyPoints($username, $pointsToAdd) { if (empty($username) || $username === 'Anónimo') { return false; } $db = db(); // Get current loyalty points $stmt = $db->prepare("SELECT id, loyalty_points FROM fans WHERE name = ?"); $stmt->execute([$username]); $fan = $stmt->fetch(); if ($fan) { $newPoints = $fan['loyalty_points'] + $pointsToAdd; $db->prepare("UPDATE fans SET loyalty_points = ? WHERE id = ?")->execute([$newPoints, $fan['id']]); } else { $newPoints = $pointsToAdd; $db->prepare("INSERT INTO fans (name, loyalty_points) VALUES (?, ?)")->execute([$username, $newPoints]); } return $newPoints; } function getNextLevelInfo($username) { $db = db(); $stmt = $db->prepare("SELECT points FROM fans WHERE name = ?"); $stmt->execute([$username]); $points = $stmt->fetchColumn() ?: 0; $milestones = [100, 500, 1000, 2500, 5000, 10000]; foreach ($milestones as $level => $threshold) { if ($points < $threshold) { return [ 'next_level' => $level + 1, 'points_needed' => $threshold - $points, 'current_points' => $points ]; } } return null; } function announceLevelUp($username, $level, $points) { $db = db(); $messages = [ "🎉 ¡Increíble! **$username** ha alcanzado el **Nivel $level** con $points puntos. ¡Qué gran fan! 🙌✨", "🚀 ¡Subida de nivel! **$username** ya es **Nivel $level** ($points puntos). ¡La comunidad sigue creciendo! 💎", "👑 ¡Atención! **$username** ha llegado al **Nivel $level** ($points puntos). ¡Su pasión por la música no tiene límites! 🔥", "🌟 ¡Brillante! **$username** acaba de subir al **Nivel $level** ($points puntos). ¡Gracias por ser parte de Lili Records! 🎈" ]; if ($level == 6) { $messages = [ "🏆 ¡LEYENDA CONSAGRADA! **$username** ha alcanzado el **NIVEL MÁXIMO (Nivel 6)**. ¡Eres parte de la historia de la radio! 👑🤴✨", "👑 ¡EL TRONO ES TUYO! **$username** ha llegado al **Nivel 6**. ¡Nadie tiene más pasión que tú! 🏆🔥", "✨ ¡MÁXIMO NIVEL ALCANZADO! **$username** es ahora una **LEYENDA (Nivel 6)**. ¡Gracias por tanto apoyo! 🙌👑" ]; } $message = $messages[array_rand($messages)]; $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1'; $ip = explode(',', $ip)[0]; $db->prepare("INSERT INTO messages (username, ip_address, message, type) VALUES (?, ?, ?, ?)") ->execute(['Lili Bot 🤖', $ip, $message, 'text']); } function announceWhatsAppRequest($username, $artist, $song) { $db = db(); $nextLevel = getNextLevelInfo($username); $levelMsg = ""; $medal = ""; if ($nextLevel) { $needed = $nextLevel['points_needed']; $lvl = $nextLevel['next_level']; $levelMsg = " 🚀 ¡Solo te faltan **$needed** puntos para el **Nivel $lvl**!"; } else { // User reached max level (Nivel 6) $medal = " 👑"; $levelMsg = " ¡Eres un **Fan Legendario**! 👑✨"; } $messages = [ "📱 ¡Nueva petición por WhatsApp! **$username$medal** acaba de pedir **$artist - $song**. ¡Marchando! 🤖🎶$levelMsg", "✨ ¡Suena el WhatsApp! **$username$medal** quiere escuchar **$artist - $song**. ¡Enseguida la ponemos! 🤖📡$levelMsg", "🎧 **$username$medal** nos escribe por WhatsApp para pedir **$artist - $song**. ¡Petición concedida! 🤖🔥$levelMsg", "🚀 ¡Petición relámpago! **$username$medal** ha pedido **$artist - $song** vía WhatsApp. ¡Disfrútala! 🤖✨$levelMsg" ]; $message = $messages[array_rand($messages)]; $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1'; $ip = explode(',', $ip)[0]; $db->prepare("INSERT INTO messages (username, ip_address, message, type) VALUES (?, ?, ?, ?)") ->execute(['Lili Bot 🤖', $ip, $message, 'text']); } function announceSongRequest($username, $artist, $song) { $db = db(); $nextLevel = getNextLevelInfo($username); $levelMsg = ""; $medal = ""; if ($nextLevel) { $needed = $nextLevel['points_needed']; $lvl = $nextLevel['next_level']; $levelMsg = " 🚀 ¡Estás a **$needed** puntos del **Nivel $lvl**!"; } else { // User reached max level (Nivel 6) $medal = " 👑"; $levelMsg = " ¡Gracias por ser un **Fan Legendario**! 👑✨"; } $messages = [ "🎵 **$username$medal** ha pedido **$artist - $song**. ¡Gran elección! 🤖✨$levelMsg", "🎶 ¡Suena una petición de **$username$medal**! **$artist - $song**. ¡A disfrutar! 🤖🔥$levelMsg", "🎸 **$username$medal** quiere escuchar **$artist - $song**. ¡Marchando! 🤖🚀$levelMsg", "🎧 ¡Nueva canción pedida por **$username$medal**: **$artist - $song**! 🤖🌟$levelMsg" ]; $message = $messages[array_rand($messages)]; $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1'; $ip = explode(',', $ip)[0]; $db->prepare("INSERT INTO messages (username, ip_address, message, type) VALUES (?, ?, ?, ?)") ->execute(['Lili Bot 🤖', $ip, $message, 'text']); }