Requisitos
- Node.js 22.12 o superior (descargar). Compruébalo con
node -v. - npm (viene con Node) o pnpm. Los comandos usan npm; con pnpm,
escribe
pnpm add,pnpm createypnpm exec. Con pnpm 11, la primera instalación de@botmesh/baileysse detiene conERR_PNPM_IGNORED_BUILDS; ver Solución de problemas. - Para conectarlo de verdad: un teléfono con WhatsApp (su número pasa a ser el bot) o un token de bot de Telegram de @BotFather. El simulador de la terminal no necesita ninguno.
Betabotmesh está en beta: una instalación sin tag instala la beta, y
@beta resuelve siempre a la más reciente (latest se mueve a mano tras cada publicación). Este sitio documenta la beta y después @botmesh/core 2.0.0 estable.Opción A: generar un proyecto (recomendado)
create-botmesh genera un proyecto que funciona en el simulador y en el canal
real:
hola, luego menu y luego /help. Cuando te convenza, conecta el
canal real:
.env le falta una variable que el proyecto necesita, npm start se
detiene con una línea que la nombra (Missing TELEGRAM_TOKEN: copy .env.example to .env ...) antes de conectar nada.
Las plantillas están escritas en español y fijan lang: 'es'. La lista
completa de plantillas, los flags de la CLI y los archivos generados están en
Plantillas de proyecto.
Opción B: montarlo a mano
1. Instalar
@botmesh/telegram en lugar de @botmesh/baileys y
usa la versión de bot.js para Telegram de
O conectar Telegram: el archivo de abajo importa
@botmesh/baileys, así que sin ese paquete no carga. botmesh solo publica módulos ES, así que el proyecto necesita
"type": "module" (o archivos .mjs) y los paquetes se cargan con import.
2. Escribir el bot
Creabot.js. El bot es una fábrica (defineBot): recibe un provider y
devuelve el Bot configurado. Así el mismo archivo funciona en el simulador y
en el canal real:
lang: 'es' pone en español los textos que escribe el framework (/help,
reintentos, timeouts); sin él salen en inglés.
3. Probarlo en la terminal
:help lista sus comandos y :quit
sale. Más en Simulador en la terminal.
4. Conectar un canal real
Vincular WhatsApp
- Abre WhatsApp → Ajustes → Dispositivos vinculados.
- Toca Vincular un dispositivo y escanea el QR.
✅ Conectado, envía hola a ese número desde otro teléfono.
La sesión se guarda en ./sessions/my-bot/, así que el siguiente arranque
reconecta sin QR. Mantén esa carpeta privada y fuera de git: quien la tenga
controla la cuenta.
O conectar Telegram
Crea un bot con @BotFather (/newbot) y copia su
token. En bot.js cambian dos sitios: el import del provider arriba y el
bloque de arranque abajo. La fábrica de en medio no cambia.
.env junto a bot.js, con una línea:
echo ... > .env en Windows PowerShell: escribe el archivo en UTF-16
o con BOM, Node no lee la variable y el provider se detiene con
`token` is required. Después arranca el bot:
hola. El provider usa long polling por
defecto, así que no hace falta una URL pública.
Otros canales
Solo cambia el provider: handlers, flujos, hooks y plugins son los mismos en todos los transportes.
La Cloud API oficial de WhatsApp, por ejemplo:
provider.ingest(rawBody, headers). Consulta Servidor de webhooks
para montarlo y Canales para lo que admite cada transporte.
Solución de problemas
Plantillas de proyecto
Las plantillas de casos de uso (de
games a ai-full) usan Baileys. Las de
transporte (baileys, meta, telegram, ai) instalan los comandos slash
integrados, así que /reset o /cancel sale de su flujo de ejemplo menu.
Cada proyecto incluye
package.json (con npm start y npm run dev),
src/bot.js, .env.example, .gitignore, un README.md y un
AGENTS.md que indica a los agentes de código con IA qué API usar y qué
comandos ejecutar.
Siguientes pasos
- Tu primer bot: comandos, media, un flujo con validación y un catch-all
- Conceptos básicos: cómo se enruta un mensaje,
ctx, triggers e ids - Referencia de configuración: todas las opciones de
new Bot({...}) - Canales: todos los transportes y lo que admite cada uno
- Testing: prueba tus flujos con
createTestBot, sin red - Ejemplos: recetas listas para copiar
- Pasar a producción y Solución de problemas