← 全記事
ガイド

Telegramボットがグループのメッセージを受信しない?プライバシーモードを確認

Telegramボットに個人チャットや明示的に指定したコマンドは届くのに、グループの通常メッセージが届かない場合は、webhookを変更する前にプライバシーモードを確認してください。Telegramでは既定でこのモードが有効になり、管理者ではないボットが受信できるグループメッセージを制限します。個人チャットの成功だけでは、グループ全体を読めるとは判断できません。ボットの識別情報、グループ内の役割、更新フィルターを確認し、人間のアカウントから新しいメッセージでテストします。

要点

  • グループメッセージの可視範囲と、更新の配信経路は別問題です。
  • プライバシーモードが有効なボットは関連するコマンドや返信を受信しますが、通常のグループ会話をすべて受信するわけではありません。
  • Telegramは、モードを無効にした後、その変更を反映するためにボットをグループへ再追加するよう案内しています。
  • 必要な場合だけ可視範囲を広げます。配信障害の調査だけを理由に管理者権限を付与しないでください。

プライバシーモードが制御する範囲

Telegramの公式機能ドキュメントでは、プライバシーモードが有効なボットは /command@this_bot のように宛先を明示したコマンドや、そのボット宛てのメッセージへの返信を受信すると説明しています。宛先を明示しない一般的なコマンドには文脈による条件があるため、単独の診断材料には向きません。

個人チャット、サービスメッセージ、通常のグループ会話も区別されています。グループのサービスメッセージが届いたからといって、人間が送信した通常テキストもすべて届くとは限りません。

公式ドキュメントでは、管理者ボットとプライバシーモードを無効にしたボットに、より広いグループメッセージの可視範囲を認めています。これはアクセス範囲の判断であり、配信性能の改善策ではありません。コマンドと返信だけで運用できるなら、モードを有効のままにして明示的な操作を案内します。

本記事の対象はグループの一部メッセージだけが届かない問題です。ボットとアカウント単位の受信方式を選ぶ段階なら、Telegram Bot API webhookと統合受信webhookの比較を参照してください。

グループメッセージの欠落を層ごとに切り分ける

観測した状況考えられる方向性次の確認
個人チャットは届くが通常のグループテキストは届かないグループの可視範囲が制限されているプライバシーモードと対象グループ内の役割
宛先指定コマンドは届くが通常テキストは届かない少なくとも一種類のメッセージは配信できている広い可視範囲が本当に必要か
個人チャットも宛先指定コマンドも届かないプライバシーモードだけでは説明できないトークンの識別情報、フィルター、受信プロセス
生の更新は届くがアプリに表示されないアプリ側のフィルターや処理の問題ハンドラー条件とキューの記録
モードを変えても状況が変わらない既存のグループ参加状態の確認が必要ボットを再追加し、新しいメッセージを送信

これは原因を断定する表ではありません。権限やコードを変更する前に、受信口へ実際に何が届いたかを記録します。

1. ボットの識別情報とグループ内の役割を確認する

信頼できるAPIクライアントから getMe を呼び、デプロイ済みトークンがどのボットを識別するか確認します。Bot APIリファレンスでは、can_read_all_group_messagesgetMe のみが返す任意フィールドで、true はプライバシーモードが無効であることを示します。

このフィールドはグループごとの役割情報ではありません。対象グループでボットの参加状態と管理者権限も確認してください。トークンをスクリーンショット、共有ログ、問い合わせチケットに残さないようにします。

2. 必要最小限の可視範囲を選ぶ

明示的な依頼だけを処理するボットなら、実際のユーザー名を指定したコマンドと、ボットのメッセージへの返信を試します。Telegramも、多くの用途ではモードを無効にする代わりに強制返信の対話形式を推奨しています。

人間による通常のグループ会話を処理する必要がある場合は、所有者がBotFatherの /setprivacy を確認します。収集範囲を広げる前にグループ管理者と参加者へ説明してください。モードを無効にしたら、公式の案内に従ってボットの削除と再追加を調整し、その後の役割も確認します。

モード変更、管理者への昇格、受信経路の移行を同時に実施しないでください。どの変更が有効だったのか判断できなくなります。

3. 配信方式を変えずに更新フィルターを確認する

Bot APIの allowed_updates は更新タイプを絞り込みます。テキストのテストでは、意図した設定に message が含まれることを確認します。Telegramは、このパラメーターを省略すると以前の設定が使われると説明しています。省略はリセットではありません。

このフィルターは、ボットに許可されていないグループメッセージへのアクセスを付与しません。逆に、グループの可視範囲を広げても、必要な更新を除外するフィルターは直りません。

すべての配信が失敗しているなら、別記事の getUpdatesとsetWebhookの切り替え手順を使います。配信方式の変更をプライバシーモードのテストにしないでください。

管理された受け入れテスト

参加者の同意があるテストグループで、人間のアカウントを送信者にします。以下は提案するテスト計画であり、本番環境での実測結果ではありません。

  1. 個人チャットでテキストを送り、基本的な受信経路を確認する。
  2. グループでボットの実際のユーザー名を指定したコマンドを送る。
  3. ボットが送ったメッセージに返信する。
  4. コマンドでも返信でもない通常のグループテキストを送る。
  5. 承認済みの可視範囲変更の前後で、生の配信とアプリの記録を比較する。

モードが有効な状態で明示的なやり取りだけ届き、通常テキストが届かないのは、文書化された挙動と整合します。必要な広いアクセスを設定した後は通常テキストを再テストし、残る問題を配信とアプリ処理に分けて調べます。新しいメッセージを使ってください。この手順は履歴復元ではありません。別のボットを送信者にすると別の条件が関わるため、人間から送信します。

UnifyPortが適する範囲

UnifyPortはBotFatherの設定でも、既存のBot API webhookを修復する機能でもありません。非公式インターフェースでメッセージングアカウントを接続し、正規化したイベントを配信します。公開ボットではなく既存アカウントの受信箱が必要なら、Telegram認証リファレンスを読んでから構成を選んでください。LINEなどと受信処理を共有する設計でも、まず接続するアカウントの範囲を明確にします。

この別経路では、message.received は観測したメッセージを表します。受信メッセージとして扱う前に data.message.direction を確認します。構造はイベントリファレンスに従い、signing_secret を設定したうえで配信リファレンスのHMAC-SHA256検証を実装します。

正規化スキーマは、任意のグループへのアクセスや欠落メッセージの復元を保証しません。UnifyPortにはメッセージ履歴を読むREST APIも、保証された再配信もありません。許可されたイベントを到着時に保存し、不要な下流システムへグループ内容を渡さないでください。

FAQ

個人チャットは届くのにグループテキストが届かないのはなぜですか?

個人チャットの配信とグループの可視範囲は別の規則に従います。モードとグループ内の役割を先に確認し、次に更新・アプリのフィルターを調べます。

ボットを管理者にする必要がありますか?

コマンドと返信だけのフローでは不要です。必要最小限の権限を選びます。管理者には受信以外の責任も伴います。

モードを無効にしても変わりません。

Telegramはグループへの再追加を指示しています。正しいボットとグループであることを確認し、人間が送った新しいテキストで生の受信を確認してください。

getUpdatesに変えると可視範囲が広がりますか?

いいえ。配信方式を変えてもプライバシーモードやグループ権限は変わりません。

参照元と次のステップ

公式資料の確認日:2026-09-16。

アカウント単位の受信を設計する場合はTelegram認証から始めます。ボット専用の構成なら公式Bot APIを使い、まずグループの受け入れテストを完了してください。

UnifyPort API

メッセージ連携を安定したプロダクトパイプラインへ。

まずは 1 つの API で送信を始め、標準イベントですべての inbound メッセージを業務システムへ戻しましょう。