From f0e314b8d5040e549d64977e94b8401cf45decf2 Mon Sep 17 00:00:00 2001 From: marsalva Date: Mon, 16 Feb 2026 22:43:53 +0000 Subject: [PATCH] Actualizar server.js --- server.js | 61 ++++++++++++++++++++++--------------------------------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/server.js b/server.js index cf6b1b1..4879f87 100644 --- a/server.js +++ b/server.js @@ -310,59 +310,46 @@ async function sendWhatsAppCode(phone, code) { } catch (e) { console.error("Error envío WA:", e.message); } } -async function sendWhatsAppAuto(phone, text, instanceName) { +async function sendWhatsAppAuto(phone, text, instanceName, useDelay = true) { // <--- Nuevo parámetro useDelay if (!EVOLUTION_BASE_URL || !EVOLUTION_API_KEY || !instanceName) { - console.error("❌ Faltan datos para enviar WhatsApp automático (Revisa URLs o instancia)"); + console.error("❌ Faltan datos para enviar WhatsApp automático"); return; } try { - console.log(`\n📲 Intentando enviar WA a ${phone} desde la instancia [${instanceName}]...`); + console.log(`\n📲 Intentando enviar WA a ${phone} [Modo Delay: ${useDelay}]...`); - // MATEMÁTICA HUMANA: Tiempo simulado de escritura - const typingTimeMs = Math.min(Math.max(text.length * 30, 1500), 8000); - - // Payload en formato Evolution v2 (con options) - const payloadConEscribiendo = { - number: phone.replace("+", ""), - text: text, - options: { - delay: typingTimeMs, - presence: "composing" - } - }; + let payload; + + if (useDelay) { + // PLAN A: Escribiendo lento + const typingTimeMs = Math.min(Math.max(text.length * 30, 1500), 8000); + payload = { + number: phone.replace("+", ""), + text: text, + options: { delay: typingTimeMs, presence: "composing" } + }; + } else { + // PLAN B: Directo e instantáneo + payload = { number: phone.replace("+", ""), text: text }; + } const res = await fetch(`${EVOLUTION_BASE_URL.replace(/\/$/, "")}/message/sendText/${instanceName}`, { method: "POST", headers: { "Content-Type": "application/json", "apikey": EVOLUTION_API_KEY }, - body: JSON.stringify(payloadConEscribiendo) + body: JSON.stringify(payload) }); - // Si Evolution rechaza el formato con "delay"... - if (!res.ok) { - const errCode = res.status; - console.warn(`⚠️ Evolution rechazó el modo "Escribiendo" (Código ${errCode}). Activando Plan B (Modo seguro)...`); - - // PLAN B: Reenviamos sin el delay, formato puro. + if (!res.ok && useDelay) { + console.warn(`⚠️ Evolution rechazó el modo "Escribiendo". Reenviando instantáneo...`); const payloadSeguro = { number: phone.replace("+", ""), text: text }; - const res2 = await fetch(`${EVOLUTION_BASE_URL.replace(/\/$/, "")}/message/sendText/${instanceName}`, { - method: "POST", - headers: { "Content-Type": "application/json", "apikey": EVOLUTION_API_KEY }, + await fetch(`${EVOLUTION_BASE_URL.replace(/\/$/, "")}/message/sendText/${instanceName}`, { + method: "POST", headers: { "Content-Type": "application/json", "apikey": EVOLUTION_API_KEY }, body: JSON.stringify(payloadSeguro) }); - - if (!res2.ok) { - const errText = await res2.text(); - console.error("❌ Error definitivo en Evolution API:", errText); - } else { - console.log("✅ WA enviado correctamente (Modo Seguro Instantáneo)."); - } - } else { - console.log("✅ WA enviado con éxito (Modo Humano con Escribiendo...)."); } - } catch (e) { - console.error("❌ Error crítico en función WA:", e.message); - } + console.log("✅ WA procesado por Evolution."); + } catch (e) { console.error("❌ Error WA:", e.message); } } async function ensureInstance(instanceName) {