grammY
Conecta a Telegram Bot API via grammY: notas de implementación y configuración.
- Cliente de Bot API primero TypeScript con helpers integrados de long-poll/webhook, middleware, manejo de errores y limitador de tasa.
- El manejo de medios es más limpio que fetch manual + FormData; cubre métodos completos de Bot API.
- Extensible: soporta fetch personalizado (para proxy), middleware de sesión (opcional), contexto type-safe.
- Ruta de cliente único: Implementación fetch eliminada; el cliente Telegram (envío + gateway) ahora usa grammY uniformemente, con throttler de grammY habilitado por defecto.
- Gateway: monitorTelegramProvider construye Bot de grammY, integra puertas de mención/lista permitida; medios descargados via getFile/download; salida usa sendMessage/sendPhoto/sendVideo/sendAudio/sendDocument. Soporta long-poll o webhook via webhookCallback.
- Proxy: Opcional channels.telegram.proxy, usa undici.ProxyAgent via client.baseFetch de grammY.
- Soporte webhook: webhook-set.ts envuelve setWebhook/deleteWebhook; webhook.ts aloja callback con verificaciones de salud y cierre graceful. Gateway habilita modo webhook cuando channels.telegram.webhookUrl + channels.telegram.webhookSecret están configurados (de lo contrario por defecto long-poll).
- Sesiones: Los DMs se pliegan en la sesión principal del agente (agent:<agentId>:<mainKey>); los grupos usan agent:<agentId>:telegram:group:<chatId>; las respuestas retornan determinísticamente al mismo canal.
- Opciones de config: channels.telegram.botToken, channels.telegram.dmPolicy, channels.telegram.groups (lista permitida de grupo + mención predeterminada), channels.telegram.allowFrom, channels.telegram.groupAllowFrom, channels.telegram.groupPolicy, channels.telegram.mediaMaxMb, channels.telegram.linkPreview, channels.telegram.proxy, channels.telegram.webhookSecret, channels.telegram.webhookUrl.
- Streaming de borrador: Opcional channels.telegram.streamMode, usa sendMessageDraft en chat de tema DM (Bot API 9.3+). Esta capacidad es independiente del streaming de bloques de canal.
- Pruebas: Los mocks de grammY cubren puertas de mención DM + grupo y envío de salida; más fixtures de medios/webhook bienvenidos.
Issues Abiertos
- Si se encuentra Bot API 429, evaluar introducir más plugins de grammY (o ajustar estrategia de throttler).
- Añadir más pruebas de medios estructuradas (stickers, notas de voz, etc.).
- Hacer configurable el puerto de escucha webhook (actualmente fijo en 8787 si no se configura a través del gateway).