Quiero agregar 6 reglas anti-baneo a mi setup de OpenWA para que WhatsApp no me banee el número. Tengo bridge.js funcionando en esta carpeta. Hacé estos cambios sin romper lo que ya hay.
PARTE 1 · sumá estas 4 reglas al SYSTEM_PROMPT (ya sea constante en bridge.js o env SYSTEM_PROMPT)
Encontrá el SYSTEM_PROMPT actual · agregá estas 4 reglas a continuación de las que ya están (sin borrar las existentes · solo sumalas como reglas 5, 6, 7, 8):
5) Variá saludos, cierres y formulaciones · nunca uses la misma apertura más de 2 veces seguidas · alterná entre "Hola", "¡Buenas!", "Holaa", "Hola, ¿qué necesitás?", etc. Mismo con los cierres · variación natural simula humano.
6) Si el usuario escribe "stop", "borrame", "no me escribas más", "alta", "quitame", o expresa enojo sobre recibir mensajes ("¿quién te dio mi número?", "dejá de joder"), respondé UNA última vez disculpándote brevemente y después marcá ese chatId como BLOQUEADO en memoria · no respondas más a ese chat hasta que el usuario escriba algo positivo (saludo, pregunta neutral).
7) Espejá el tono, idioma y longitud del usuario · si te escribe formal, respondé formal · si escribe en spanglish, respondé en spanglish · si te manda 3 palabras, respondé en 3 palabras · no le tires un párrafo a una pregunta corta.
8) No mandes el mismo template verbatim a varios chats · si la misma pregunta llega de chats distintos, contestala con redacciones distintas (misma información, distintas palabras).
PARTE 2 · agregá estos 3 mecanismos al bridge.js
a) DELAY ARTIFICIAL · justo antes del POST a /api/sessions/{sessionId}/messages/send-text, esperá un random entre 5000-15000 ms · usá Math.floor(Math.random() * 10000 + 5000) · si el texto de la respuesta es largo (>200 chars), sumá 1000ms cada 100 chars adicionales (simulando que tardás más tipeando textos largos). Loggealo como [delay] esperando Xs antes de responder.
b) PAUSA NOCTURNA · al inicio del manejo de cada webhook, checkeá la hora local con new Date() y un offset de TZ del env (default America/Argentina/Buenos_Aires). Si la hora actual está entre NIGHT_PAUSE_START (default 22) y NIGHT_PAUSE_END (default 8), NO mandes la respuesta inmediatamente · poné el mensaje en una cola en memoria (array simple { chatId, sessionId, originalText, claudeResponse, queuedAt }) y arrancá un setInterval que cada 15 minutos checkea si ya son las NIGHT_PAUSE_END y procesa la cola en orden. Loggealo como [night-pause] mensaje encolado · responderá a las HH:MM.
c) RATE LIMIT POR CHAT · mantené un Map<chatId, lastReplyTimestamp> en memoria. Antes de mandar una respuesta, checkeá si el último envío al mismo chatId fue hace menos de 30 segundos · si sí, agregá ese delta al delay artificial (parte 2a) para que el bridge nunca dispare 2 mensajes al mismo chat en menos de 30s. Loggealo como [rate-limit] esperando Xs extra antes de responder a chatId.
PARTE 3 · entrega esperada
- Mostrame el diff antes de aplicar · sección por sección · explicame qué cambia y qué quedó intacto.
- Si alguna regla colide con algo del bridge actual (ej: ya hay un delay, ya hay un rate limit), pará y avisame · no sobrescribas sin preguntar.
- Después de aplicar, mostrame el comando para reiniciar (Ctrl+C + npm run dev) y proponé un test sencillo (mandate un mensaje, ver el log mostrando [delay] esperando Xs, ver la respuesta llegar 5-15s después).
- Si el .env necesita nuevas variables (TZ, NIGHT_PAUSE_START, NIGHT_PAUSE_END), updateá .env.example con comentarios pero NO toques mi .env existente.
Importante: la regla #07 (warmup gradual del número · día 1 max 10 chats, día 2 max 20, etc.) es operativa · no la implementes en código, solo recordámela en el README.md con un párrafo claro.