Running it
Telegram bot privacy mode: why your bot ignores group messages
By the Botable team
Privacy mode is on by default and limits what a bot receives in groups to commands, replies to its own messages, mentions of itself, and service messages. Turn it off with /setprivacy in BotFather, then remove and re-add the bot.
Watch it
Privacy mode is on by default, so a bot in a group sees commands and almost nothing else. The two ways to change that, and why an existing group has to re-add the bot before either takes effect.
Read the transcript
Everything said in the video, in order.
A bot that answers perfectly in a private chat can look dead in a group. Commands work. Nothing else does.
That is privacy mode — a Telegram setting, on by default, deciding how much of a group your bot is handed.
Every trigger the bot has is a card on this map. In a group with privacy on, the ones that start with a slash are most of what reaches it.
Button taps get through too. They are callback queries, not messages, so privacy never touches them — an inline keyboard works the same in a group.
This card is the catch-all that answers any plain message. In a group it never runs, because the message is never delivered to your bot at all.
The handler is not broken. It answers every private chat exactly as written. Privacy mode is a group rule, which is why the two behave differently.
That part happens in Telegram, not here. Send slash set privacy to BotFather, pick your bot, choose Disable — or add the bot to the group as an admin.
Disabling privacy applies when the bot joins. Groups it is already in keep the old behaviour until you remove the bot and add it back — then everything on this map can fire.
Leave it on unless your bot genuinely needs to read the room. Start free at botable dot I O.
The short version
Privacy mode is a Telegram Bot API setting that determines how much of a group conversation a bot is given, and it is enabled by default. With it on, the bot receives messages beginning with a slash, replies to messages the bot itself sent, messages that @mention it, and service messages such as joins and leaves. Everything else, the actual conversation, is never delivered, which is a deliberate privacy protection rather than a limitation to work around casually. Turning it off with /setprivacy in @BotFather gives the bot every message in every group it is in, which is necessary for moderation filters, keyword watchers and auto-translation, and unnecessary for anything command-driven. The detail that costs people an afternoon is that the change applies only to groups joined afterwards: an existing group keeps the old behaviour until the bot is removed and added again.
Step by step
How do you tell whether privacy mode is the problem?
If the bot answers commands in the group but ignores everything else, it is privacy mode, not a bug in your handlers. If it ignores commands too, the problem is elsewhere: check that it is actually in the group and that the process is running.
How do you turn it off?
Message @BotFather, send /setprivacy, choose the bot, and select Disable. BotFather confirms the new setting immediately. Nothing about your running code needs to change.
Why does nothing change after disabling it?
Because the setting is applied when the bot joins a chat. Groups it is already in keep the previous behaviour indefinitely. Remove the bot from the group and add it back, and it will then receive everything. This step is missing from most explanations of the setting.
Should you disable it?
Only if a feature requires it. Moderation, keyword triggers, auto-translation and analytics over conversation all do. A command-driven bot does not, and leaving privacy on means a compromised token exposes far less history. Default to leaving it on.
What catches people out
- Disabling privacy has no effect on groups the bot is already in, the re-add is mandatory
- Privacy mode does not apply to private chats; a bot always receives everything there
- A bot promoted to group admin receives all messages regardless of the privacy setting
Questions
Does privacy mode affect channels?
Channels work differently, a bot must be an admin to be in a channel at all, and admins receive channel posts. The privacy setting is about groups and supergroups.
Can users tell whether privacy mode is off?
Not directly from the interface. This is worth stating plainly in your bot's description if it reads all messages, because people reasonably assume the default and the honest disclosure costs nothing.
Want a bot that does this?
Describe it in plain language and Botable writes the code, gives the bot its own database, deploys it and keeps it running. Everything on this page is handled for you, the token, the webhook, the storage, the hosting.
Keep reading
- Add a bot to a grouphow to add a bot to a telegram group
- Bot admin rightstelegram bot admin rights
- Bot not respondingtelegram bot not responding