🛍️ 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
fetchdirecto (helpers localestgSend/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_TOKENyTELEGRAM_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. .envconTELEGRAM_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 ysendPhotopara los attachments, y ruta de escalación a CEOSEC al fallar. - Plist launchd
KeepAlive=true+RunAtLoad=true→logs/bot-sales.log.