(async function () { const API_URL = 'https://b02y.com/xxx/guardanumero.php'; // Cambia esto si usas otro endpoint más adelante // 🧠 Función para obtener el nombre del crupier function obtenerCrupier() { const span = document.querySelector('span[data-role="dealerName"]'); return span ? span.textContent.trim() : 'DESCONOCIDO'; } // 📤 Función para enviar datos a tu API async function enviarNumero(data) { try { await fetch(API_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data), }); console.log('✅ Enviado:', data); } catch (e) { console.error('❌ Error al enviar:', e); } } // 🟡 1. CAPTURAR ESTADO INICIAL const recientes = Array.from(document.querySelectorAll('div[class*="number-container--"][class*="recent-number--"][class*="desktop--"]')) .map(div => div.textContent.trim()); const bloqueHistorial = document.querySelector('.contentElement--838d2'); const historialHTML = bloqueHistorial ? bloqueHistorial.innerHTML : ''; const crupier = obtenerCrupier(); await enviarNumero({ tipo: 'estado_inicial', recientes: recientes, historialHTML: historialHTML, crupier: crupier, timestamp: Date.now(), }); // 🟢 2. OBSERVAR CAMBIOS NUEVOS const contenedorRecientes = document.querySelector('div[class*="numbers--"][class*="recent-number--"][class*="desktop--"]'); if (!contenedorRecientes) { console.warn('⚠️ No se encontró el contenedor de números recientes para observar.'); return; } let ultimoEnvio = recientes[0]; const observer = new MutationObserver(() => { const nuevos = Array.from(contenedorRecientes.querySelectorAll('div[class*="number-container--"]')) .map(div => div.textContent.trim()); const nuevoNumero = nuevos[0]; const crupierActual = obtenerCrupier(); if (nuevoNumero && nuevoNumero !== ultimoEnvio) { ultimoEnvio = nuevoNumero; enviarNumero({ tipo: 'nuevo_numero', numero: nuevoNumero, listaActualizada: nuevos, crupier: crupierActual, timestamp: Date.now(), }); } }); observer.observe(contenedorRecientes, { childList: true, subtree: true, characterData: true, }); console.log('👀 Observando nuevos números y crupier...'); // 🟣 3. MANTENER SESIÓN VIVA setInterval(() => { const event = new MouseEvent('mousemove', { bubbles: true, cancelable: true, clientX: 1 + Math.floor(Math.random() * 5), clientY: 1 + Math.floor(Math.random() * 5), }); document.dispatchEvent(event); console.log("🌀 Simulando actividad para mantener la sesión activa..."); }, 60 * 1000); // cada 1 minuto })();