OpenClawSkills
GitHub
Canales • 5 min de lectura

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).