問題の説明
Telegram チャンネルを設定した後、OpenClaw の Telegram ボットがメッセージを受信できない、またはユーザーに返信しないことがあります。よくある症状は以下の通りです。
Telegram でユーザーがボットにメッセージを送信しても全く反応がなく、OpenClaw のログにメッセージ受信の記録が見当たらない場合:
[openclaw:telegram] Bot started. Listening for messages...
ログには起動成功と表示されるものの、その後メッセージ処理の記録がまったくありません。
または、ログにエラーが表示される場合:
[openclaw:telegram] Error: 409 Conflict: terminated by other getUpdates request
あるいは:
[openclaw:telegram] GrammyError: Call to 'getMe' failed! (401: Unauthorized)
OpenClaw の Telegram チャンネルは grammY フレームワーク上に構築されており、Telegram Bot API を通じて Telegram サーバーと通信します。
診断手順
Bot Token が有効かどうか確認する
まず、設定で使用している Bot Token が正しく有効であるかを確認します。
curl https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getMe
正常なレスポンスではボットの基本情報が返されます。
{
"ok": true,
"result": {
"id": 123456789,
"is_bot": true,
"first_name": "MyBot",
"username": "my_openclaw_bot"
}
}
{"ok":false,"error_code":401,"description":"Unauthorized"} が返される場合、Token が無効です。
Webhook の競合を確認する
Telegram Bot API にはメッセージ受信の方法が 2 つあります:ポーリング(polling)と Webhook です。以前 Webhook を設定していたが、現在 OpenClaw がポーリング方式を使用している場合、Webhook の存在がポーリングでのメッセージ受信を妨げることがあります。
現在の Webhook 状態を確認します。
curl https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getWebhookInfo
url フィールドが空でない場合、Webhook が設定されています。
OpenClaw の設定を確認する
~/.openclaw/openclaw.json の Telegram チャンネル設定を確認します。
cat ~/.openclaw/openclaw.json | grep -A 10 telegram
botToken フィールドが存在し、空でないことを確認してください。
解決策
問題1:Bot Token が無効または期限切れ
Token が無効な場合は、再取得が必要です。
- Telegram で @BotFather を見つける
/mybotsを送信してボットの一覧を確認- 対象のボットを選択し、「API Token」をクリック
- Token をリセットする必要がある場合は、「Revoke current token」をクリックして新しいものを生成
新しい Token を設定ファイルに更新します。
{
"channels": {
"telegram": {
"botToken": "123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
}
}
}
その後、OpenClaw を再起動します。
openclaw restart
問題2:Webhook の競合(409 エラー)
409 Conflict エラーは通常、別のプロセスも同じ Bot Token を使用して getUpdates を呼び出しているか、古い Webhook 設定が残っていることを意味します。
Webhook をクリアします。
curl https://api.telegram.org/bot<YOUR_BOT_TOKEN>/deleteWebhook
他のプログラムが同じ Bot Token を使用していないことを確認します。重複した OpenClaw インスタンスが実行されていないかチェックします。
ps aux | grep openclaw
複数のインスタンスが見つかった場合は、余分なプロセスを停止してください。
問題3:ボットの権限が未設定
ボットがグループ内でメッセージを受信できない場合、グループプライバシーモードが有効になっていない可能性があります。
- BotFather で
/mybotsを送信 - ボットを選択 → Bot Settings → Group Privacy
- Privacy mode を Disabled に設定
これにより、ボットは / で始まるコマンドメッセージだけでなく、グループ内のすべてのメッセージを受信できるようになります。
問題4:grammY フレームワークのエラー
ログに grammY 関連の例外が表示される場合は、詳細ログを有効にしてトラブルシューティングを行います。
DEBUG=openclaw:telegram*,grammy* openclaw start
よくある grammY エラーとその対処法:
-
ETELEGRAM: 429 Too Many Requests:メッセージの送信頻度が高すぎて、Telegram にレート制限されています。OpenClaw にはデフォルトでレート制限が設定されていますが、設定を変更した場合はレート制限の設定を確認してください。 -
EFATAL: Polling stopped:致命的なエラーによりポーリングが停止しました。完全なエラースタックを確認してください。通常はネットワークの問題か Token の無効化が原因です。 -
Error: getaddrinfo ENOTFOUND api.telegram.org:DNS 解決の失敗です。ネットワーク接続と DNS 設定を確認してください。
問題5:ネットワークアクセスの制限
一部の地域では、Telegram API に直接アクセスできない場合があります。プロキシを設定します。
{
"channels": {
"telegram": {
"botToken": "YOUR_TOKEN",
"proxy": {
"url": "socks5://127.0.0.1:1080"
}
}
}
}
OpenClaw の Telegram チャンネルは HTTP と SOCKS5 プロキシをサポートしています。
修正の確認
修正後、ボットが正常に動作していることを確認します。
openclaw start
その後、Telegram でボットにテストメッセージを送信し、OpenClaw のログ出力にメッセージの受信と処理の記録が表示されるかを確認します。ログには以下のような出力が確認できるはずです。
[openclaw:telegram] Received message from user 123456: "こんにちは"
[openclaw:gateway] Processing message for channel telegram, user 123456
[openclaw:telegram] Sent reply to user 123456
すべてが正常であれば、ボットは Telegram でメッセージに返信するようになります。