← Volver al catálogo

🛍️ Bot Vendedor — @RifKingschat_bot (ATCHAT)

Archivo: /Users/user/rifai-agents/bot-sales.ts · Plist: com.rifai.bot-sales · Horario: daemon permanente (KeepAlive=true, RunAtLoad=true); siempre escuchando, se reinicia solo si muere.

Qué hace

Es el bot público de Telegram que atiende a los CLIENTES de RifKings (token sales). A diferencia del bot CEO, acepta mensajes de cualquier chat privado, no solo del dueño. Cada mensaje de cliente lo proxia al endpoint de ventas del Control Center y devuelve la respuesta comercial, incluyendo fotos de producto. Mantiene una conversación por cada cliente (chat_id). Si el backend de ventas falla, avisa al CEO por el bot CEOSEC.

Cómo funciona

1. Parsea .env y exige TELEGRAM_SALES_TOKEN; si falta, aborta. Carga también TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID para escalar fallos al CEO.

2. Bucle de long-polling getUpdates (offset, timeout=25s, abort a 35s).

3. Acepta solo message.text de chats type === 'private' (filtra grupos/canales). Resuelve un nombre legible del remitente.

4. processMessage: ante /start o /help manda un saludo de bienvenida; para el resto hace POST a http://localhost:3000/api/sales-v3/chat con { clientId: "tg_<chatId>", mensaje }.

5. Si la respuesta no es ok: avisa al cliente de fallo técnico y manda una alerta 🚨 Bot vendedor falló al chat del CEO con el token CEOSEC.

6. Si va bien: guarda el clientId devuelto en sessions (memoria por cliente), envía el texto (parse_mode: HTML, troceo a 4000) y hasta 4 attachments de imagen con caption (alt, precio, link) vía sendPhoto.

Datos/APIs

  • Telegram Bot API — polling y envío de texto/fotos con fetch directo (helpers locales tgSend/tgSendPhoto, HTML).
  • Control Center / Sales v3: POST http://localhost:3000/api/sales-v3/chat (el cerebro de ventas real).
  • Telegram CEOSEC para escalar caídas del backend.
  • Vars .env: TELEGRAM_SALES_TOKEN (obligatoria), TELEGRAM_BOT_TOKEN y TELEGRAM_CHAT_ID (para alertas al CEO). El endpoint sales-v3 es quien usa Shopify/IA por debajo.

Cómo probarlo

cd /Users/user/rifai-agents && npx tsx bot-sales.ts

Espera: imprime 🛍️ Bot vendedor @RifKingschat_bot iniciado y queda en polling. Necesita que el Control Center esté levantado en localhost:3000 con /api/sales-v3/chat; si no, los clientes reciben "fallo técnico" y el CEO una alerta. Escribe al bot desde otra cuenta de Telegram para probar el flujo completo. Corta con Ctrl-C.

⚠️ Un solo consumidor de getUpdates por token sales: no lo dupliques.

Si se rompe / recuperar

launchctl unload ~/Library/LaunchAgents/com.rifai.bot-sales.plist
launchctl load   ~/Library/LaunchAgents/com.rifai.bot-sales.plist

Logs: /Users/user/rifai-agents/logs/bot-sales.log. KeepAlive=true lo revive. Si los clientes no reciben respuesta, comprueba primero que el Control Center y su ruta sales-v3 están vivos (el bot solo proxia).

Cómo replicarlo

  • Un bot público de Telegram con su propio token (sales), separado del CEO.
  • .env con TELEGRAM_SALES_TOKEN (+ token/chat CEOSEC para escalaciones).
  • Backend de ventas que reciba {clientId, mensaje} y devuelva {clientId, respuesta, attachments[]} (aquí /api/sales-v3/chat).
  • Bucle de polling que acepte chats privados de cualquiera, memoria chat_id → conversationId, envío HTML con troceo y sendPhoto para los attachments, y ruta de escalación a CEOSEC al fallar.
  • Plist launchd KeepAlive=true + RunAtLoad=truelogs/bot-sales.log.