Telegram(Bot API)
ステータス: grammY による bot の DM とグループ向けに本番運用対応済みです。long polling がデフォルトモードで、webhook モードは任意です。ペアリング
Telegram のデフォルト DM ポリシーは pairing です。
チャネルのトラブルシューティング
チャネル横断の診断と修復プレイブック。
Gateway 設定
完全なチャネル設定パターンと例。
クイックセットアップ
BotFather で bot トークンを作成する
Telegram を開いて @BotFather とチャットしてください(ハンドルが正確に
@BotFather であることを確認してください)。/newbot を実行し、案内に従ってトークンを保存します。トークンと DM ポリシーを設定する
TELEGRAM_BOT_TOKEN=...(デフォルトアカウントのみ)。
Telegram では openclaw channels login telegram は使いません。config/env にトークンを設定してから Gateway を起動してください。トークン解決順はアカウント認識型です。実際には、config 値が env フォールバックより優先され、
TELEGRAM_BOT_TOKEN はデフォルトアカウントにのみ適用されます。Telegram 側の設定
Privacy Mode とグループ可視性
Privacy Mode とグループ可視性
Telegram bot はデフォルトで Privacy Mode になっており、グループ内で受信できるメッセージが制限されます。bot がすべてのグループメッセージを見る必要がある場合は、次のいずれかを行ってください。
/setprivacyで privacy mode を無効にする- bot をグループ管理者にする
グループ権限
グループ権限
管理者ステータスは Telegram のグループ設定で管理されます。管理者 bot はすべてのグループメッセージを受信でき、常時動作するグループ挙動に便利です。
便利な BotFather トグル
便利な BotFather トグル
/setjoingroupsでグループ追加の許可/拒否/setprivacyでグループ可視性の挙動を設定
アクセス制御と activation
- DM ポリシー
- グループポリシーと allowlist
- メンションの挙動
channels.telegram.dmPolicy はダイレクトメッセージアクセスを制御します。pairing(デフォルト)allowlist(allowFromに少なくとも 1 つの送信者 ID が必要)open(allowFromに"*"を含める必要あり)disabled
channels.telegram.allowFrom には数値の Telegram ユーザー ID を指定します。telegram: / tg: プレフィックスは受け付けられ、正規化されます。
空の allowFrom で dmPolicy: "allowlist" を設定すると、すべての DM がブロックされ、config 検証で拒否されます。
オンボーディングでは @username 入力を受け付け、数値 ID に解決します。
アップグレード後の config に @username の allowlist エントリが含まれている場合は、openclaw doctor --fix を実行して解決してください(ベストエフォートです。Telegram bot トークンが必要です)。
以前に pairing-store の allowlist ファイルに依存していた場合、openclaw doctor --fix は allowlist フローでそのエントリを channels.telegram.allowFrom に復元できます(たとえば dmPolicy: "allowlist" にまだ明示的な ID がない場合)。1 オーナー bot では、以前の pairing 承認に依存するのではなく、アクセスポリシーを config に永続的に保持するために、明示的な数値 allowFrom ID を持つ dmPolicy: "allowlist" を推奨します。よくある誤解: DM pairing 承認は「この送信者がどこでも認可される」ことを意味しません。
pairing が与えるのは DM アクセスのみです。グループ送信者認可は引き続き明示的な config allowlist から行われます。
「一度認可すれば DM とグループコマンドの両方が使える」状態にしたい場合は、自分の数値 Telegram ユーザー ID を channels.telegram.allowFrom に入れてください。Telegram ユーザー ID を見つける
より安全な方法(サードパーティ bot なし):- bot に DM を送る。
openclaw logs --followを実行する。from.idを読む。
@userinfobot または @getidsbot。ランタイムの挙動
- Telegram は Gateway プロセスによって所有されます。
- ルーティングは決定的です。Telegram からの受信メッセージへの返信は Telegram に返されます(モデルがチャネルを選ぶことはありません)。
- 受信メッセージは、返信メタデータとメディアプレースホルダーを含む共有チャネル envelope に正規化されます。
- グループセッションはグループ ID ごとに分離されます。フォーラムトピックでは、トピック分離のために
:topic:<threadId>が付加されます。 - DM メッセージは
message_thread_idを持てます。OpenClaw はそれを thread 認識型のセッションキーでルーティングし、返信時も thread ID を保持します。 - long polling は、チャットごと / thread ごとの順序制御を備えた grammY runner を使います。全体の runner sink concurrency には
agents.defaults.maxConcurrentを使います。 - Telegram Bot API には既読通知のサポートがありません(
sendReadReceiptsは適用されません)。
機能リファレンス
ライブストリームプレビュー(メッセージ編集)
ライブストリームプレビュー(メッセージ編集)
OpenClaw は部分返信をリアルタイムでストリーミングできます。
- ダイレクトチャット: プレビューメッセージ +
editMessageText - グループ/トピック: プレビューメッセージ +
editMessageText
channels.telegram.streamingはoff | partial | block | progressです(デフォルト:partial)progressは Telegram ではpartialにマップされます(チャネル横断の命名互換性のため)- レガシーな
channels.telegram.streamModeと boolean のstreaming値は自動マッピングされます
- DM: OpenClaw は同じプレビューメッセージを保持し、最後にその場で編集します(2 通目のメッセージは送信しません)
- グループ/トピック: OpenClaw は同じプレビューメッセージを保持し、最後にその場で編集します(2 通目のメッセージは送信しません)
sendMessage + editMessageText にフォールバックします。Telegram 専用の reasoning ストリーム:/reasoning streamは、生成中の reasoning をライブプレビューに送信します- 最終回答は reasoning テキストなしで送信されます
書式設定と HTML フォールバック
書式設定と HTML フォールバック
送信テキストは Telegram の
parse_mode: "HTML" を使います。- Markdown 風テキストは Telegram 安全な HTML にレンダリングされます。
- 生のモデル HTML は Telegram の解析失敗を減らすためエスケープされます。
- Telegram が解析済み HTML を拒否した場合、OpenClaw はプレーンテキストとして再試行します。
channels.telegram.linkPreview: false で無効化できます。ネイティブコマンドとカスタムコマンド
ネイティブコマンドとカスタムコマンド
Telegram のコマンドメニュー登録は起動時に ルール:デバイスペアリングコマンド(
setMyCommands で処理されます。ネイティブコマンドのデフォルト:commands.native: "auto"は Telegram のネイティブコマンドを有効にします
- 名前は正規化されます(先頭の
/を削除し、小文字化) - 有効パターン:
a-z、0-9、_、長さ1..32 - カスタムコマンドはネイティブコマンドを上書きできません
- 競合/重複はスキップされ、ログに記録されます
- カスタムコマンドはメニュー項目のみです。動作は自動実装されません
- Telegram メニューに表示されなくても、plugin/skill コマンドは手入力で動作できます
setMyCommands failedでBOT_COMMANDS_TOO_MUCHが出る場合、削減後でも Telegram メニューが多すぎることを意味します。plugin/skill/custom コマンドを減らすか、channels.telegram.commands.nativeを無効にしてください。setMyCommands failedで network/fetch エラーが出る場合、通常はapi.telegram.orgへの outbound DNS/HTTPS がブロックされています。
デバイスペアリングコマンド(device-pair plugin)
device-pair plugin がインストールされている場合:/pairでセットアップコードを生成します- iOS アプリにコードを貼り付けます
/pair pendingで保留中リクエストを一覧表示します(role/scopes を含む)- リクエストを承認します:
- 明示的に承認するには
/pair approve <requestId> - 保留中リクエストが 1 件だけなら
/pair approve - 最新のものなら
/pair approve latest
- 明示的に承認するには
scopes: [] のまま維持されます。引き渡される operator トークンは operator.approvals、operator.read、operator.talk.secrets、operator.write に制限されたままです。bootstrap の scope チェックは role 接頭辞付きなので、その operator allowlist は operator リクエストにのみ有効であり、operator 以外の role では引き続き自分の role 接頭辞の下の scope が必要です。デバイスが変更された認証詳細(たとえば role/scopes/public key)で再試行した場合、以前の保留中リクエストは置き換えられ、新しいリクエストは別の requestId を使います。承認前に /pair pending を再実行してください。詳細: ペアリング。インラインボタン
インラインボタン
エージェントと自動化のための Telegram メッセージアクション
エージェントと自動化のための Telegram メッセージアクション
Telegram ツールアクションには次が含まれます。
sendMessage(to,content, optionalmediaUrl,replyToMessageId,messageThreadId)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,content)createForumTopic(chatId,name, optionaliconColor,iconCustomEmojiId)
send、react、delete、edit、sticker、sticker-search、topic-create)。ゲーティング制御:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(デフォルト: 無効)
edit と topic-create は現在デフォルトで有効で、個別の channels.telegram.actions.* トグルはありません。
ランタイム送信は、アクティブな config/secrets スナップショット(起動/再読み込み時)を使うため、アクションパスでは送信ごとに ad-hoc な SecretRef 再解決は行いません。リアクション削除の意味論: /tools/reactions返信 thread タグ
返信 thread タグ
Telegram は生成出力内で明示的な返信 thread タグをサポートします。
[[reply_to_current]]は起動元メッセージに返信します[[reply_to:<id>]]は特定の Telegram message ID に返信します
channels.telegram.replyToMode は処理方法を制御します。off(デフォルト)firstall
off は暗黙の返信 thread 化を無効にします。明示的な [[reply_to_*]] タグは引き続き尊重されます。フォーラムトピックと thread の挙動
フォーラムトピックと thread の挙動
forum supergroup では:その場合、各トピックは独自のセッションキーを持ちます: これは現在、グループおよび supergroup 内の forum topic に限定されています。チャットからの thread 固定 ACP 起動:
- トピックのセッションキーに
:topic:<threadId>が追加されます - 返信と typing はそのトピック thread を対象にします
- トピック config パス:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1)の特別扱い:- メッセージ送信では
message_thread_idを省略します(Telegram はsendMessage(...thread_id=1)を拒否します) - typing アクションでは引き続き
message_thread_idを含めます
requireMention、allowFrom、skills、systemPrompt、enabled、groupPolicy)。
agentId はトピック専用で、グループデフォルトからは継承されません。トピックごとのエージェントルーティング: 各トピックは、トピック config に agentId を設定することで別のエージェントにルーティングできます。これにより、各トピックが独自の分離された workspace、memory、session を持てます。例:agent:zu:telegram:group:-1001234567890:topic:3永続 ACP トピックバインディング: forum topic は、トップレベルの型付き ACP binding を通じて ACP harness session を固定できます。type: "acp"とmatch.channel: "telegram"を持つbindings[]
/acp spawn <agent> --thread here|autoで、現在の Telegram トピックを新しい ACP session にバインドできます。- 後続のトピックメッセージは、バインドされた ACP session に直接ルーティングされます(
/acp steerは不要)。 - OpenClaw は、バインド成功後に起動確認メッセージをそのトピック内に pin します。
channels.telegram.threadBindings.spawnAcpSessions=trueが必要です。
MessageThreadIdIsForum
message_thread_idを持つプライベートチャットでは、DM ルーティングを維持しつつ、thread 認識型の session key / reply target を使います。
音声、動画、ステッカー
音声、動画、ステッカー
音声メッセージ
Telegram はボイスノートと音声ファイルを区別します。- デフォルト: 音声ファイルとしての挙動
- エージェント返信に
[[audio_as_voice]]タグを付けると、ボイスノート送信を強制
動画メッセージ
Telegram は動画ファイルと video note を区別します。メッセージアクションの例:ステッカー
受信ステッカー処理:- 静的 WEBP: ダウンロードして処理(プレースホルダー
<media:sticker>) - アニメーション TGS: スキップ
- 動画 WEBM: スキップ
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
リアクション通知
リアクション通知
Telegram のリアクションは
message_reaction 更新として届きます(メッセージペイロードとは別です)。有効時、OpenClaw は次のようなシステムイベントをキューに入れます。Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(デフォルト:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(デフォルト:minimal)
ownは bot 送信メッセージへのユーザーリアクションのみを意味します(送信メッセージキャッシュを使ったベストエフォート)。- リアクションイベントも Telegram のアクセス制御(
dmPolicy、allowFrom、groupPolicy、groupAllowFrom)に従います。認可されていない送信者は破棄されます。 - Telegram はリアクション更新に thread ID を含めません。
- forum でないグループではグループ chat session にルーティングされます
- forum グループでは、正確な元トピックではなく、グループ一般トピック session(
:topic:1)にルーティングされます
allowed_updates には message_reaction が自動的に含まれます。Ack リアクション
Ack リアクション
ackReaction は、OpenClaw が受信メッセージを処理中であることを示す確認用絵文字を送ります。解決順:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- エージェント identity 絵文字へのフォールバック(
agents.list[].identity.emoji、なければ"👀")
- Telegram は unicode 絵文字を期待します(たとえば
"👀")。 - チャネルまたはアカウントでリアクションを無効にするには
""を使ってください。
Telegram イベントとコマンドからの config 書き込み
Telegram イベントとコマンドからの config 書き込み
チャネル config 書き込みはデフォルトで有効です(
configWrites !== false)。Telegram 起点の書き込みには次が含まれます。channels.telegram.groupsを更新するためのグループ migration イベント(migrate_to_chat_id)/config setと/config unset(コマンド有効化が必要)
Long polling と webhook
Long polling と webhook
デフォルト: long polling。webhook モード:
channels.telegram.webhookUrlを設定channels.telegram.webhookSecretを設定(webhook URL を設定した場合は必須)- 任意で
channels.telegram.webhookPath(デフォルト/telegram-webhook) - 任意で
channels.telegram.webhookHost(デフォルト127.0.0.1) - 任意で
channels.telegram.webhookPort(デフォルト8787)
127.0.0.1:8787 に bind します。公開エンドポイントが異なる場合は、その前段に reverse proxy を置き、webhookUrl を公開 URL に向けてください。
意図的に外部 ingress が必要な場合は、webhookHost(たとえば 0.0.0.0)を設定してください。制限、再試行、CLI ターゲット
制限、再試行、CLI ターゲット
channels.telegram.textChunkLimitのデフォルトは 4000 です。channels.telegram.chunkMode="newline"は、長さ分割の前に段落境界(空行)を優先します。channels.telegram.mediaMaxMb(デフォルト 100)は、受信・送信両方の Telegram メディアサイズ上限です。channels.telegram.timeoutSecondsは Telegram API クライアントのタイムアウトを上書きします(未設定時は grammY デフォルト)。- グループコンテキスト履歴は
channels.telegram.historyLimitまたはmessages.groupChat.historyLimit(デフォルト 50)を使います。0で無効化します。 - reply/quote/forward の補助コンテキストは、現在は受信したまま渡されます。
- Telegram の allowlist は主に誰がエージェントを起動できるかを制御するものであり、補助コンテキスト全体のマスキング境界ではありません。
- DM 履歴制御:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
channels.telegram.retryconfig は、回復可能な outbound API エラーに対する Telegram 送信ヘルパー(CLI/tools/actions)に適用されます。
openclaw message poll を使い、forum topic もサポートします:--poll-duration-seconds(5-600)--poll-anonymous--poll-public- forum topic 用の
--thread-id(または:topic:ターゲットを使用)
channels.telegram.capabilities.inlineButtonsが許可している場合の、インラインキーボード用--buttons- 送信画像や GIF を圧縮された写真やアニメーションメディアアップロードではなく document として送る
--force-document
channels.telegram.actions.sendMessage=falseは、poll を含む outbound Telegram メッセージを無効化しますchannels.telegram.actions.poll=falseは、通常送信は有効のまま Telegram poll 作成を無効化します
Telegram での exec 承認
Telegram での exec 承認
Telegram は approver DM 内で exec 承認をサポートし、任意で元のチャットまたはトピックに承認プロンプトを投稿できます。config パス:
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(任意。可能な場合はallowFromとダイレクトメッセージのdefaultToから推測される数値 owner ID にフォールバック)channels.telegram.execApprovals.target(dm|channel|both、デフォルト:dm)agentFilter、sessionFilter
enabled が未設定または "auto" で、execApprovals.approvers またはアカウントの数値 owner config(allowFrom とダイレクトメッセージの defaultTo)から少なくとも 1 人の approver を解決できる場合、Telegram はネイティブ exec 承認を自動有効化します。Telegram をネイティブ承認クライアントとして明示的に無効にするには enabled: false を設定してください。そうでない場合、承認リクエストは他の設定済み承認ルートまたは exec 承認フォールバックポリシーにフォールバックします。Telegram は、他のチャットチャネルで使われる共有承認ボタンもレンダリングします。ネイティブ Telegram アダプターが主に追加するのは、approver DM へのルーティング、チャネル/トピックへのファンアウト、配信前の typing ヒントです。
それらのボタンがある場合、それが主要な承認 UX です。OpenClaw は、ツール結果でチャット承認が利用不可と示される場合、または手動承認が唯一の手段である場合にのみ、手動の /approve コマンドを含めるべきです。配信ルール:target: "dm"は、解決された approver DM にのみ承認プロンプトを送信しますtarget: "channel"は、元の Telegram chat/topic にプロンプトを送り返しますtarget: "both"は、approver DM と元の chat/topic の両方に送信します
/approve も Telegram 承認ボタンも使えません。承認解決の挙動:plugin:で始まる承認 ID は常に plugin 承認を通じて解決されます。- それ以外の承認 ID は最初に
exec.approval.resolveを試します。 - Telegram も plugin 承認用に認可されており、かつ Gateway が exec 承認を unknown/expired と返した場合、Telegram は
plugin.approval.resolveで 1 回だけ再試行します。 - 実際の exec 承認拒否/エラーは、黙って plugin 承認解決にフォールスルーしません。
channel または both は信頼できるグループ/トピックでのみ有効化してください。forum topic にプロンプトが届いた場合、OpenClaw は承認プロンプトと承認後フォローアップの両方でそのトピックを維持します。exec 承認のデフォルト有効期限は 30 分です。インライン承認ボタンも、channels.telegram.capabilities.inlineButtons が対象サーフェス(dm、group、または all)を許可している必要があります。関連ドキュメント: Exec approvalsエラー返信制御
エージェントが配信エラーまたはプロバイダーエラーに遭遇したとき、Telegram はそのエラーテキストを返信するか、抑制するかを選べます。この挙動は 2 つの config キーで制御されます。| キー | 値 | デフォルト | 説明 |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply は chat にわかりやすいエラーメッセージを送ります。silent はエラー返信を完全に抑制します。 |
channels.telegram.errorCooldownMs | number (ms) | 60000 | 同じ chat へのエラー返信の最小間隔。障害時のエラースパムを防ぎます。 |
トラブルシューティング
bot がメンションなしのグループメッセージに応答しない
bot がメンションなしのグループメッセージに応答しない
requireMention=falseの場合、Telegram privacy mode が完全可視性を許可している必要があります。- BotFather:
/setprivacy-> Disable - その後、グループから bot を削除して再追加
- BotFather:
openclaw channels statusは、config がメンションなしのグループメッセージを想定している場合に警告します。openclaw channels status --probeは明示的な数値グループ ID を確認できます。ワイルドカード"*"は membership probe できません。- 手早いセッションテスト:
/activation always。
bot がグループメッセージをまったく見ていない
bot がグループメッセージをまったく見ていない
channels.telegram.groupsが存在する場合、グループはそこに列挙されている必要があります(または"*"を含める)- グループ内の bot メンバーシップを確認
- スキップ理由は
openclaw logs --followでログを確認
コマンドが部分的にしか動かない、またはまったく動かない
コマンドが部分的にしか動かない、またはまったく動かない
- 送信者 ID を認可する(pairing および/または数値
allowFrom) - グループポリシーが
openでも、コマンド認可は引き続き適用されます setMyCommands failedでBOT_COMMANDS_TOO_MUCHが出る場合、ネイティブメニューの項目が多すぎます。plugin/skill/custom コマンドを減らすか、ネイティブメニューを無効化してくださいsetMyCommands failedで network/fetch エラーが出る場合、通常はapi.telegram.orgへの DNS/HTTPS 到達性の問題です
polling またはネットワークの不安定さ
polling またはネットワークの不安定さ
- Node 22+ とカスタム fetch/proxy の組み合わせでは、AbortSignal 型の不一致により即時 abort 挙動が発生することがあります。
- 一部ホストでは
api.telegram.orgがまず IPv6 に解決され、IPv6 outbound が壊れていると Telegram API 障害が断続的に発生することがあります。 - ログに
TypeError: fetch failedまたはNetwork request for 'getUpdates' failed!が含まれている場合、OpenClaw は現在これらを回復可能なネットワークエラーとして再試行します。 - 直接 outbound/TLS が不安定な VPS ホストでは、Telegram API 呼び出しを
channels.telegram.proxy経由にしてください:
- Node 22+ では
autoSelectFamily=true(WSL2 を除く)とdnsResultOrder=ipv4firstがデフォルトです。 - ホストが WSL2 である、または明示的に IPv4-only のほうがうまく動作する場合は、family selection を強制してください:
- RFC 2544 の benchmark-range 応答(
198.18.0.0/15)は、Telegram メディアダウンロードでデフォルト許可されています。信頼できる fake-IP または transparent proxy がメディアダウンロード中にapi.telegram.orgを別の private/internal/special-use アドレスへ書き換える場合は、Telegram 専用バイパスを opt-in できます:
- 同じ opt-in はアカウントごとにも利用できます:
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork。 - proxy が Telegram メディアホストを
198.18.x.xに解決する場合は、まず dangerous フラグをオフのままにしてください。Telegram メディアは RFC 2544 benchmark range をすでにデフォルト許可しています。
- 一時的な環境変数上書き:
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- DNS 応答を検証する:
Telegram config リファレンスのポイント
主なリファレンス:-
channels.telegram.enabled: チャネル起動の有効/無効。 -
channels.telegram.botToken: bot トークン(BotFather)。 -
channels.telegram.tokenFile: 通常ファイルのパスからトークンを読み取ります。symlink は拒否されます。 -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(デフォルト: pairing)。 -
channels.telegram.allowFrom: DM allowlist(数値 Telegram ユーザー ID)。allowlistには少なくとも 1 つの送信者 ID が必要です。openには"*"が必要です。openclaw doctor --fixはレガシー@usernameエントリを ID に解決し、allowlist 移行フローで pairing-store ファイルから allowlist エントリを復元できます。 -
channels.telegram.actions.poll: Telegram poll 作成を有効化または無効化します(デフォルト: 有効。引き続きsendMessageが必要)。 -
channels.telegram.defaultTo: CLI--deliverが明示的な--reply-toなしで使うデフォルトの Telegram ターゲット。 -
channels.telegram.groupPolicy:open | allowlist | disabled(デフォルト: allowlist)。 -
channels.telegram.groupAllowFrom: グループ送信者 allowlist(数値 Telegram ユーザー ID)。openclaw doctor --fixはレガシー@usernameエントリを ID に解決できます。数値でないエントリは認可時に無視されます。グループ認可では DM pairing-store フォールバックを使いません(2026.2.25+)。 -
マルチアカウントの優先順位:
- 2 つ以上の account ID が設定されている場合、デフォルトルーティングを明示するために
channels.telegram.defaultAccountを設定するか、channels.telegram.accounts.defaultを含めてください。 - どちらも設定されていない場合、OpenClaw は最初に正規化された account ID にフォールバックし、
openclaw doctorが警告します。 channels.telegram.accounts.default.allowFromとchannels.telegram.accounts.default.groupAllowFromはdefaultアカウントにのみ適用されます。- 名前付きアカウントは、アカウントレベルの値が未設定の場合、
channels.telegram.allowFromとchannels.telegram.groupAllowFromを継承します。 - 名前付きアカウントは
channels.telegram.accounts.default.allowFrom/groupAllowFromを継承しません。
- 2 つ以上の account ID が設定されている場合、デフォルトルーティングを明示するために
-
channels.telegram.groups: グループごとのデフォルト + allowlist(グローバルデフォルトには"*"を使用)。channels.telegram.groups.<id>.groupPolicy: groupPolicy のグループごとの上書き(open | allowlist | disabled)。channels.telegram.groups.<id>.requireMention: メンションゲーティングのデフォルト。channels.telegram.groups.<id>.skills: skill フィルター(省略 = すべての Skills、空 = なし)。channels.telegram.groups.<id>.allowFrom: グループごとの送信者 allowlist 上書き。channels.telegram.groups.<id>.systemPrompt: グループ用の追加 system prompt。channels.telegram.groups.<id>.enabled:falseのときグループを無効化。channels.telegram.groups.<id>.topics.<threadId>.*: トピックごとの上書き(グループフィールド + トピック専用agentId)。channels.telegram.groups.<id>.topics.<threadId>.agentId: このトピックを特定のエージェントにルーティングします(グループレベルと binding ルーティングを上書き)。
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: groupPolicy のトピックごとの上書き(open | allowlist | disabled)。 -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: トピックごとのメンションゲーティング上書き。 -
type: "acp"とmatch.peer.idに正規のトピック IDchatId:topic:topicIdを持つトップレベルbindings[]: 永続 ACP トピック binding フィールド(ACP Agentsを参照)。 -
channels.telegram.direct.<id>.topics.<threadId>.agentId: DM トピックを特定のエージェントにルーティングします(forum topic と同じ挙動)。 -
channels.telegram.execApprovals.enabled: このアカウントで Telegram をチャットベースの exec 承認クライアントとして有効化。 -
channels.telegram.execApprovals.approvers: exec リクエストを承認または拒否できる Telegram ユーザー ID。channels.telegram.allowFromまたはダイレクトなchannels.telegram.defaultToで owner がすでに識別されている場合は任意です。 -
channels.telegram.execApprovals.target:dm | channel | both(デフォルト:dm)。channelとbothは、存在する場合に元の Telegram トピックを維持します。 -
channels.telegram.execApprovals.agentFilter: 転送される承認プロンプト向けの任意のエージェント ID フィルター。 -
channels.telegram.execApprovals.sessionFilter: 転送される承認プロンプト向けの任意の session key フィルター(substring または regex)。 -
channels.telegram.accounts.<account>.execApprovals: Telegram exec 承認ルーティングと approver 認可のアカウントごとの上書き。 -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(デフォルト: allowlist)。 -
channels.telegram.accounts.<account>.capabilities.inlineButtons: アカウントごとの上書き。 -
channels.telegram.commands.nativeSkills: Telegram ネイティブ skills コマンドの有効/無効。 -
channels.telegram.replyToMode:off | first | all(デフォルト:off)。 -
channels.telegram.textChunkLimit: 送信チャンクサイズ(文字数)。 -
channels.telegram.chunkMode:length(デフォルト)またはnewline。length chunking の前に空行で分割します(段落境界)。 -
channels.telegram.linkPreview: 送信メッセージのリンクプレビュー切り替え(デフォルト: true)。 -
channels.telegram.streaming:off | partial | block | progress(ライブストリームプレビュー。デフォルト:partial。progressはpartialにマップ。blockはレガシーなプレビューモード互換)。Telegram のプレビューストリーミングは、1 つのプレビューメッセージをその場で編集します。 -
channels.telegram.mediaMaxMb: 受信/送信 Telegram メディア上限(MB、デフォルト: 100)。 -
channels.telegram.retry: 回復可能な outbound API エラーに対する Telegram 送信ヘルパー(CLI/tools/actions)の再試行ポリシー(attempts、minDelayMs、maxDelayMs、jitter)。 -
channels.telegram.network.autoSelectFamily: Node の autoSelectFamily を上書き(true=有効、false=無効)。デフォルトでは Node 22+ で有効、WSL2 ではデフォルトで無効。 -
channels.telegram.network.dnsResultOrder: DNS 結果順序を上書き(ipv4firstまたはverbatim)。デフォルトでは Node 22+ でipv4first。 -
channels.telegram.network.dangerouslyAllowPrivateNetwork: 信頼できる fake-IP または transparent-proxy 環境で、Telegram メディアダウンロードがデフォルトの RFC 2544 benchmark-range 許可外の private/internal/special-use アドレスにapi.telegram.orgを解決する場合の危険な opt-in。 -
channels.telegram.proxy: Bot API 呼び出し用の proxy URL(SOCKS/HTTP)。 -
channels.telegram.webhookUrl: webhook モードを有効化(channels.telegram.webhookSecretが必要)。 -
channels.telegram.webhookSecret: webhook secret(webhookUrl が設定されている場合は必須)。 -
channels.telegram.webhookPath: ローカル webhook パス(デフォルト/telegram-webhook)。 -
channels.telegram.webhookHost: ローカル webhook bind ホスト(デフォルト127.0.0.1)。 -
channels.telegram.webhookPort: ローカル webhook bind ポート(デフォルト8787)。 -
channels.telegram.actions.reactions: Telegram ツールリアクションのゲート。 -
channels.telegram.actions.sendMessage: Telegram ツールメッセージ送信のゲート。 -
channels.telegram.actions.deleteMessage: Telegram ツールメッセージ削除のゲート。 -
channels.telegram.actions.sticker: Telegram ステッカーアクションのゲート — 送信と検索(デフォルト: false)。 -
channels.telegram.reactionNotifications:off | own | all— どのリアクションがシステムイベントを発生させるかを制御(未設定時のデフォルト:own)。 -
channels.telegram.reactionLevel:off | ack | minimal | extensive— エージェントのリアクション機能を制御(未設定時のデフォルト:minimal)。 -
channels.telegram.errorPolicy:reply | silent— エラー返信挙動を制御(デフォルト:reply)。アカウント/グループ/トピックごとの上書き対応。 -
channels.telegram.errorCooldownMs: 同じ chat へのエラー返信間の最小 ms(デフォルト:60000)。障害時のエラースパムを防ぎます。 - Configuration reference - Telegram
- 起動/認証:
enabled,botToken,tokenFile,accounts.*(tokenFileは通常ファイルを指す必要があり、symlink は拒否されます) - アクセス制御:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*, トップレベルbindings[](type: "acp") - exec 承認:
execApprovals,accounts.*.execApprovals - コマンド/メニュー:
commands.native,commands.nativeSkills,customCommands - thread/返信:
replyToMode - ストリーミング:
streaming(プレビュー)、blockStreaming - 書式設定/配信:
textChunkLimit,chunkMode,linkPreview,responsePrefix - メディア/ネットワーク:
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - アクション/機能:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - リアクション:
reactionNotifications,reactionLevel - エラー:
errorPolicy,errorCooldownMs - 書き込み/履歴:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit