Skip to main content
Nivel: Intermedio · Etiquetas: WhatsApp, Telegram, Flujos Funciones que muestra: menús .choose() · sub-flujos con then · goto · c.state · .timeout() y timeoutMessage · bot.lint()

Requisitos previos

Node.js 22.12 o superior y una carpeta con "type": "module" (ver Inicio rápido). Después instala:

El bot completo

Transcripción de ejemplo

Capturada con npx botmesh dev bot.js:

Cómo funciona

  • .choose(texto, opciones, clave) envía un menú numerado, acepta el número, la clave o la etiqueta, y guarda la clave elegida en c.state[clave]. Sin clave va a c.state.choice.
  • then: direccion ejecuta el flujo direccion en línea al elegir “Sí”; comparte c.state, así que el último .say() lee street y city. flow([]) no tiene trigger: solo corre desde aquí.
  • goto: 'comprar' sale del flujo actual y arranca el indicado (aquí, la misma tienda desde el principio). bot.lint() marca como error (goto-target-missing) un goto a un flujo que no está registrado.
  • Un .say() con función puede calcular y guardar valores (c.state.total) para los pasos siguientes.
  • .timeout('2m') se aplica a cada espera del flujo; cuando vence, el bot envía conversation.timeoutMessage. Un sub-flujo then usa su propio .timeout() (o el valor por defecto del bot).

Ejecutarlo en WhatsApp o Telegram

node bot.js muestra un QR: escanéalo en WhatsApp → Dispositivos vinculados. Para Telegram, instala @botmesh/telegram y cambia el provider como se muestra en O conectar Telegram; la factory no cambia.

Siguientes pasos