OpenClawSkills
GitHub
チャンネル • 5分で読める

grammY

grammY で Telegram Bot API に接続する実装と設定の要点。

- TypeScriptファーストの Bot API クライアント、long-poll/webhook ヘルパー、middleware、エラー処理、レート制限機能が内蔵されています。

- メディア処理は手動の fetch + FormData よりもクリーン;Bot API の全メソッドをカバーしています。

- 拡張可能:カスタム fetch(プロキシ用)、session middleware(オプション)、タイプセーフなコンテキストをサポート。




- 単一のクライアントパス: fetch 実装を削除;現在 Telegram クライアント(送信 + gateway)は一様に grammY を使用し、デフォルトで grammY throttler が有効になっています。

- Gateway: monitorTelegramProvider が grammY Bot を構築し、mention/allowlist ゲートを統合;メディアは getFile/download 経由でダウンロード;送信には sendMessage/sendPhoto/sendVideo/sendAudio/sendDocument を使用。long-poll または webhookCallback 経由の webhook をサポート。

- プロキシ: オプションの channels.telegram.proxy、grammY の client.baseFetch 経由で client.baseFetch を使用。

- Webhook サポート: webhook-set.ts が setWebhook/deleteWebhook をラップ;webhook.ts が callback をホストし、ヘルスチェックとグレースフルシャットダウンを提供。channels.telegram.webhookUrl + channels.telegram.webhookSecret が設定されている場合、Gateway は webhook モードを有効にします(それ以外はデフォルトで long-poll)。

- Sessions: DMs fold into agent main session (agent:<agentId>:<mainKey>); groups use agent:<agentId>:telegram:group:<chatId>; replies deterministically return to same channel.

- 設定オプション: channels.telegram.botToken、channels.telegram.dmPolicy、channels.telegram.groups(グループ allowlist + mention デフォルト)、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、DM トピックチャットで sendMessageDraft を使用(Bot API 9.3+)。この機能はチャンネルブロックストリーミングとは独立しています。

- テスト: grammY mocks は DM + グループ mention ゲートと送信をカバー;より多くのメディア/webhook fixtures を歓迎します。

未解決の問題

- Bot API 429 に遭遇した場合、より多くの grammY plugins の導入(または throttler 戦略の調整)を評価してください。

- より構造化されたメディアテスト(ステッカー、ボイスメモなど)を追加してください。

- webhook リッスンポートを設定可能にする(現在、gateway 経由で設定されていない場合、8787 に固定されています)。