Actualizar server.js

This commit is contained in:
2026-03-04 22:38:41 +00:00
parent 9b052f018b
commit 9d7166e81e

View File

@@ -853,13 +853,30 @@ app.post("/whatsapp/settings", authMiddleware, async (req, res) => {
}); });
// ========================================== // ==========================================
// 💬 NÚCLEO DE ENVÍO WHATSAPP (EVOLUTION API) // 💬 NÚCLEO DE ENVÍO WHATSAPP (EVOLUTION API - MODO HUMANO DINÁMICO)
// ========================================== // ==========================================
async function sendWhatsAppAuto(phone, message, instanceName, useDelay = false) { async function sendWhatsAppAuto(phone, message, instanceName, useDelay = false) {
if (!EVOLUTION_BASE_URL || !EVOLUTION_API_KEY) { if (!EVOLUTION_BASE_URL || !EVOLUTION_API_KEY) {
console.error("⚠️ WhatsApp omitido: Servidor Evolution no configurado."); console.error("⚠️ WhatsApp omitido: Servidor Evolution no configurado.");
return false; return false;
} }
// 🧠 Lógica de escritura "Modo Humano"
let timeToType = 0;
if (useDelay) {
// Calcula 50ms por cada carácter del mensaje
let baseTime = message.length * 50;
// Nos aseguramos de que tarde entre 1.5 segundos (mínimo) y 10 segundos (máximo)
baseTime = Math.min(Math.max(baseTime, 1500), 10000);
// Sumamos un margen aleatorio (entre 0 y 1.5 segundos) para que nunca tarde exactamente lo mismo
const factorAleatorio = Math.floor(Math.random() * 1500);
timeToType = baseTime + factorAleatorio;
console.log(`[WA] Modo Humano: Simulando escritura durante ${Math.round(timeToType/1000)} segundos para un texto de ${message.length} letras.`);
}
try { try {
const baseUrl = EVOLUTION_BASE_URL.replace(/\/$/, ""); const baseUrl = EVOLUTION_BASE_URL.replace(/\/$/, "");
const url = `${baseUrl}/message/sendText/${instanceName}`; const url = `${baseUrl}/message/sendText/${instanceName}`;
@@ -873,7 +890,7 @@ async function sendWhatsAppAuto(phone, message, instanceName, useDelay = false)
body: JSON.stringify({ body: JSON.stringify({
number: phone, number: phone,
text: message, text: message,
delay: useDelay ? 2000 : 0 delay: timeToType // Usamos el tiempo dinámico que acabamos de calcular
}) })
}); });