Actualizar server.js

This commit is contained in:
2026-02-16 22:43:53 +00:00
parent 2131994756
commit f0e314b8d5

View File

@@ -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) {