What privacy mode does
Every new Telegram bot starts with privacy mode enabled. In groups, a bot in privacy mode does not receive every message. According to Telegram's documentation it receives:
- commands explicitly meant for it, such as
/start@YourBot, - general commands like
/startif it was the last bot to send a message to the group, - messages sent via the bot (inline mode),
- replies to its own messages,
- service messages (members joining or leaving, pinned messages and similar).
Everything else, like ordinary chat between members, is not delivered. This protects users' privacy and keeps bots from processing traffic they do not need.
When privacy mode is off, or does not apply
The bot receives all messages in the group if either:
- privacy mode is disabled in @BotFather, or
- the bot is an administrator of the group.
Channels are different: a bot must be an administrator of a channel to receive its posts at all.
How to change it
- Open @BotFather and send
/setprivacy. - Choose your bot.
- Pick Disable to receive all group messages, or Enable to restore privacy mode.
Then comes the step most people miss: remove the bot from the group and add it again. The setting applies when the bot joins, so a group where the bot was already a member keeps the old behavior.
You can check the current state with getMe: the can_read_all_group_messages field is true when privacy mode is off.
curl -s "https://api.telegram.org/bot$TOKEN/getMe"
Should you disable it?
Only if the bot's core feature needs to read ordinary messages: moderation, anti-spam filters, keyword triggers, conversation summaries. For command-driven bots, keep it on:
- fewer updates to process, so less load and lower hosting cost,
- less personal data flowing through your logs and storage,
- members trust a bot that cannot read everything.
If you disable it, say so in the bot's description and privacy policy. Our legal and privacy guide covers what to disclose.
Make commands work well in groups
- Register commands for groups with
setMyCommandsand theall_group_chatsscope, so members see them in the menu. Build the list with our command list builder. - Accept both
/cmdand/cmd@YourBot. Frameworks like grammY and python-telegram-bot do this automatically. - Reply to the triggering message (
reply_parameters) so it is clear who the answer is for. - Use inline keyboards for choices, and check who pressed the button.
Other group pitfalls
Supergroup migration. When a basic group becomes a supergroup, its chat ID changes. The bot receives a message with migrate_to_chat_id; update any stored IDs, or later sends fail with an error about the group being upgraded.
Webhook filters. If you set allowed_updates, make sure it contains the types you need, such as message and my_chat_member (to know when the bot is added or removed). See Telegram setWebhook step by step.
Can't add the bot at all. In @BotFather, /setjoingroups controls whether the bot can be added to groups. If it is disabled, the "Add to group" option is missing.
Sending limits. Telegram's Bot FAQ advises staying under about 20 messages per minute in the same group. Spread out bursts; our post on rate limits shows how.
Frequently asked questions
I disabled privacy mode but the bot still does not see messages. Why?
The bot was already in the group when you changed the setting. Remove it and add it again, or make it an administrator.
Does making the bot admin give it full access?
It receives all messages, and it gets whatever admin rights you grant. Grant only what it needs, for example "Delete messages" for a moderation bot.
Can users tell whether a bot reads all messages?
Yes. In the group member list, Telegram shows whether a bot has access to messages.
Sources
- Telegram, bot features: privacy mode: core.telegram.org/bots/features#privacy-mode
- Telegram Bot API, getMe and User (can_read_all_group_messages): core.telegram.org/bots/api#user
- Telegram Bot API, setMyCommands and BotCommandScope: core.telegram.org/bots/api#setmycommands
- Telegram Bots FAQ, sending limits: core.telegram.org/bots/faq