149 lines
5.9 KiB
PHP
149 lines
5.9 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../db/config.php';
|
|
|
|
function awardPoints($username, $pointsToAdd) {
|
|
if (empty($username) || $username === 'Anónimo') {
|
|
return false;
|
|
}
|
|
|
|
$db = db();
|
|
|
|
// Get current points
|
|
$stmt = $db->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 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']);
|
|
}
|