Why Isn't My Telegram Bot Receiving Group Messages? Privacy Mode, Webhooks and 4 Other Causes (2026)
Why isn't my Telegram bot receiving group messages?
In most cases, nothing is broken: the bot is in privacy mode, which Telegram turns on by default for every bot. A bot in privacy mode added to a group only sees a narrow set of messages, mainly commands meant for it and replies to its own messages. Ordinary chat in the group never reaches it, whether you use a webhook or getUpdates. The other common causes are a webhook that blocks getUpdates, an allowed_updates filter that leaves out the update type you need, a group that was upgraded to a supergroup and got a new chat ID, and a webhook that is failing quietly. This guide walks through each cause, how to confirm it in a minute, and the fix.
Based on Telegram's Bot API and bot features documentation, checked 2026-10-29. Telegram can change bot behaviour; when in doubt, the official docs win.
What privacy mode lets a bot see
Telegram's bot features page lists what a bot in privacy mode receives in a group:
- Commands explicitly meant for it, such as
/command@this_bot. - General commands, such as
/start, but only if this bot was the last bot to send a message to the group. - Inline messages sent via the bot.
- Replies to any of the bot's own messages.
Every bot, whatever its privacy setting, also receives service messages, all messages in private chats with users, and all messages from channels where it is a member. That last point matters for channel workflows: a bot added to a channel sees channel posts without touching privacy mode at all.
Cause 1: privacy mode is on (the default)
Telegram enables privacy mode by default for all bots, with one exception: bots added to a group as administrators receive all messages there. So there are two ways to let a bot read normal group chat:
- Make the bot an admin of that group. This is per group, and it gives the bot the admin rights you tick, so grant only what it needs.
- Turn privacy mode off in @BotFather with
/setprivacy. This applies to every group the bot is in.
Two details trip people up. First, Telegram's docs say that after you change privacy mode, the bot must be removed and re-added to a group for the change to take effect there. Changing the setting alone doesn't update groups the bot is already in. Second, the docs point out that users can see a bot's privacy setting in the group's member list, so a bot that reads everything is visible as such. Only turn it off if your bot genuinely needs every message.
A quick confirmation: call getMe. The returned User object includes can_read_all_group_messages, which is true only when privacy mode is disabled.
Cause 2: you need replies, not everything
Many bots don't need to read the whole group. They need an answer to one question, such as "what time should this post go out?". Telegram's docs recommend force reply for this: send your question with a ForceReply markup, and the user's reply comes back to the bot even with privacy mode on, because replies to the bot's own messages are always delivered. It's more private for the group and needs no admin rights.
Cause 3: a webhook is set, so getUpdates returns nothing
The Bot API has two mutually exclusive ways to receive updates. Its docs are explicit: you won't be able to receive updates using getUpdates for as long as an outgoing webhook is set up. A common debugging trap is a webhook left over from a deploy while you test locally with polling. Call getWebhookInfo: if url isn't empty, a webhook is active. Remove it with deleteWebhook before polling, or debug the webhook instead.
Cause 4: allowed_updates filters out what you need
Both setWebhook and getUpdates accept allowed_updates, a list of update types to receive. If you specify an empty list, you get all update types except chat_member, message_reaction and message_reaction_count. If you don't specify it, the previous setting is kept, which means an old, narrow filter can silently stay in force across deploys. If your bot lives in a channel, check that channel_post and edited_channel_post are in the list; our post on syncing edits with edited_channel_post shows why the second one matters.
Cause 5: the group became a supergroup
When a basic group is upgraded to a supergroup, it gets a new chat ID. The Bot API reports this with a service message whose migrate_to_chat_id field holds the new identifier. If your bot stores chat IDs, it may keep sending to, or filtering on, the old ID and look as if it stopped receiving anything. Handle that field and update the stored ID.
Cause 6: the webhook is failing quietly
getWebhookInfo also tells you whether Telegram is struggling to deliver. Look at three fields:
pending_update_count: updates waiting for delivery. A growing number means your endpoint isn't accepting them.last_error_dateandlast_error_message: the most recent delivery error in plain text, such as a timeout or a bad certificate.
Webhooks only work on ports 443, 80, 88 and 8443. If you use a secret_token, make sure your handler compares it correctly; our guide to webhook secret tokens and update_id dedupe covers that check. A handler that throws on one bad update can also block everything behind it, so log and acknowledge, then process.
A five-minute diagnosis order
- Send the bot a private message. If it doesn't arrive, the problem is delivery (webhook, filter or code), not privacy mode.
- Call getWebhookInfo. Check
url,pending_update_countandlast_error_message. - Call getMe. Check
can_read_all_group_messages. - Reply to one of the bot's messages in the group. If that arrives but normal chat doesn't, it's privacy mode.
- Check allowed_updates and stored chat IDs. Then remove and re-add the bot if you just changed privacy mode.
How this applies to Auto X
Auto X schedules X posts from Telegram, so most of its traffic is private chat with the bot, which every bot receives regardless of privacy mode. You don't need to disable privacy mode or make Auto X an admin just to schedule posts. If you're building your own Telegram-to-X pipeline, the same rules decide what your bot can see. For the delivery side, see Telegram bot rate limits and retry_after and our checklist on why a scheduled post didn't go out.
FAQ
Why does my bot see commands but not normal messages in a group?
That's privacy mode, which is on by default. In a group, a bot in privacy mode receives commands meant for it, replies to its messages and inline messages via it, but not ordinary chat.
I disabled privacy mode in BotFather. Why does nothing change?
Telegram's docs say the bot must be removed and re-added to each group for a privacy mode change to take effect there.
Does making the bot an admin work instead?
Yes. Bots added to a group as administrators receive all messages, even with privacy mode on. Grant only the admin rights the bot needs.
Why does getUpdates return nothing?
If a webhook is set, getUpdates doesn't work. Check getWebhookInfo and call deleteWebhook if you want to poll.
Can a bot read a channel without being admin?
Telegram's docs say all bots receive messages from channels where they are a member, regardless of privacy mode.
Sources
- Telegram: Bot features, privacy mode (checked 2026-10-29)
- Telegram Bot API: getting updates, setWebhook and getWebhookInfo (checked 2026-10-29)
- Telegram Bot API: User, can_read_all_group_messages (checked 2026-10-29)
- Telegram Bot API: ForceReply (checked 2026-10-29)