grammY統合(Telegram Bot API)
なぜgrammY
- 組み込みのlong-poll + Webhookヘルパー、ミドルウェア、エラーハンドリング、レートリミッターを備えたTS-firstのBot APIクライアント。
- 手動でfetch + FormDataを組むよりクリーンなメディアヘルパー。すべてのBot APIメソッドをサポート。
- 拡張可能: カスタムfetch経由のProxy(プロキシ)サポート、セッションミドルウェア(オプション)、型安全なコンテキスト。
出荷したもの
- 単一クライアントパス: fetchベースの実装は削除されました。grammYがTelegramクライアント(send + gateway)の唯一の方法となり、grammY throttlerがデフォルトで有効になっています。
- Gateway: monitorTelegramProviderはgrammY Botを構築し、メンション/許可リストゲーティング、getFile/download経由のメディアダウンロードを接続し、sendMessage/sendPhoto/sendVideo/sendAudio/sendDocumentで返信を配信します。webhookCallback経由でlong-pollまたはWebhookをサポートします。
- Proxy: オプションのchannels.telegram.proxyは、grammYのclient.baseFetchを通じてundici.ProxyAgentを使用します。
- Webhookサポート: webhook-set.tsはsetWebhook/deleteWebhookをラップします。webhook.tsはhealth + graceful shutdownでコールバックをホストします。channels.telegram.webhookUrlが設定されている場合、GatewayはWebhookモードを有効にします(それ以外の場合はlong-poll)。
- Sessions: ダイレクトチャットはエージェントのメインSession(セッション)(agent:<agentId>:<mainKey>)に集約されます。グループはagent:<agentId>:telegram:group:<chatId>を使用します。返信は同じチャンネルにルーティングされます。
- 設定ノブ: channels.telegram.botToken、channels.telegram.dmPolicy、channels.telegram.groups(許可リスト + メンションデフォルト)、channels.telegram.allowFrom、channels.telegram.groupAllowFrom、channels.telegram.groupPolicy、channels.telegram.mediaMaxMb、channels.telegram.linkPreview、channels.telegram.proxy、channels.telegram.webhookSecret、channels.telegram.webhookUrl。
- ドラフトストリーミング: オプションのchannels.telegram.streamModeは、プライベートトピックチャット(Bot API 9.3+)でsendMessageDraftを使用します。これはチャンネルブロックストリーミングとは別です。
- テスト: grammYモックはDM + グループメンションゲーティングとアウトバウンド送信をカバーします。より多くのメディア/Webhookフィクスチャが歓迎されます。
オープンクエスチョン
- Bot API 429に遭遇した場合のオプションのgrammYプラグイン(throttler)。
- より構造化されたメディアテスト(ステッカー、ボイスノート)を追加。
- Webhookリッスンポートを設定可能にする(現在、Gateway経由で接続されない限り8787に固定)。