Przejdź do głównej treści

Integracja grammY (Telegram Bot API)

Dlaczego grammY

  • Klient Bot API zorientowany na TypeScript, z wbudowaną obsługą long-pollingu i webhooków, middleware, obsługą błędów oraz ogranicznikiem szybkości.
  • Czytelniejsze pomocniki do mediów niż ręczne użycie fetch + FormData; obsługuje wszystkie metody Bot API.
  • Rozszerzalny: obsługa proxy przez niestandardowy fetch, middleware sesji (opcjonalne), kontekst typowany.

Co dostarczyliśmy

  • Pojedyncza ścieżka klienta: usunięto implementację opartą na fetch; grammY jest teraz jedynym klientem Telegrama (wysyłanie + gateway) z domyślnie włączonym ogranicznikiem grammY.
  • Gateway: monitorTelegramProvider tworzy grammY Bot, podłącza bramkowanie wzmianek/listy dozwolonych, pobieranie mediów przez getFile/download oraz dostarcza odpowiedzi z użyciem sendMessage/sendPhoto/sendVideo/sendAudio/sendDocument. Obsługuje long-polling lub webhook przez webhookCallback.
  • Proxy: opcjonalny channels.telegram.proxy używa undici.ProxyAgent poprzez client.baseFetch w grammY.
  • Obsługa webhooków: webhook-set.ts opakowuje setWebhook/deleteWebhook; webhook.ts hostuje callback z kontrolą zdrowia i łagodnym zamykaniem. Gateway włącza tryb webhook, gdy ustawione są channels.telegram.webhookUrl + channels.telegram.webhookSecret (w przeciwnym razie używa long-pollingu).
  • Sesje: czaty bezpośrednie są scalane do głównej sesji agenta (agent:<agentId>:<mainKey>); grupy używają agent:<agentId>:telegram:group:<chatId>; odpowiedzi wracają do tego samego kanału.
  • Pokrętła konfiguracyjne: channels.telegram.botToken, channels.telegram.dmPolicy, channels.telegram.groups (domyślne ustawienia listy dozwolonych + wzmianek), channels.telegram.allowFrom, channels.telegram.groupAllowFrom, channels.telegram.groupPolicy, channels.telegram.mediaMaxMb, channels.telegram.linkPreview, channels.telegram.proxy, channels.telegram.webhookSecret, channels.telegram.webhookUrl.
  • Podgląd transmisji na żywo: opcjonalne channels.telegram.streamMode wysyła tymczasową wiadomość i aktualizuje ją za pomocą editMessageText. Jest to niezależne od strumieniowania blokowego kanału.
  • Testy: mocki grammY obejmują bramkowanie DM-ów + wzmianek w grupach oraz wysyłanie wychodzące; mile widziane są kolejne fixtury dla mediów/webhooków.
Otwarte pytania
  • Opcjonalne wtyczki grammY (ogranicznik) w przypadku napotkania 429 z Bot API.
  • Dodanie bardziej ustrukturyzowanych testów mediów (naklejki, notatki głosowe).
  • Umożliwienie konfiguracji portu nasłuchu webhooka (obecnie na sztywno 8787, o ile nie jest poprowadzony przez gateway).