Saltar al contenido principal
Nivel: Principiante · Etiquetas: WhatsApp, Telegram, Media Funciones que muestra: enviar foto, video, archivo, voz, sticker · enviar ubicación · enviar contacto · recibir media (bot.onType) · loadMediaOf() · recibir una ubicación

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. El simulador muestra la media como [tipo: fuente] sin descargarla, así que ahí funcionan las URLs de relleno. :media image ./gato.jpg Mi gato envía gato.jpg desde la carpeta donde ejecutas el comando (usa cualquier imagen que tengas):

Cómo funciona

  • Un método por tipo. ctx.photo, ctx.video, ctx.file, ctx.voice y ctx.sticker aceptan una URL, una ruta local o un Buffer; ctx.file(fuente, nombre, caption) fija el nombre que ve el usuario. ctx.location(lat, lng, nombre?) recibe coordenadas y ctx.contact(teléfono, nombreVisible?) un número de teléfono.
  • Los detalles del transporte se quedan en el provider. En WhatsApp una nota de voz se convierte con ffmpeg y un sticker necesita el paquete opcional sharp. Telegram los envía tal cual, así que allí la URL de un sticker debe apuntar a un archivo .webp (por eso 512.webp). Lo que soporta cada canal está en la matriz de capacidades.
  • La media entrante es perezosa. El mensaje solo trae una referencia; loadMediaOf(ctx, { maxBytes }) la descarga una vez y devuelve { buffer, mimetype }, o undefined si la descarga falla. Un archivo que supera maxBytes lanza MediaTooLargeError, que el handler convierte en una respuesta. ctx.body es el caption.
  • Las ubicaciones llegan como type: 'location' con ctx.sharedLocation (latitude, longitude, name?); ctx.location() es el método que envía una. El simulador no tiene un comando para compartir una ubicación; el test de la documentación la envía con MockProvider.incomingLocation().
  • Fuera de un handler, bot.send(chatId, { kind: 'image', media: { url }, caption }) envía el mismo contenido, por ejemplo desde una tarea programada.

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