← back to blog

What a Telegram bot can actually see in your group

telegram-bots group-admin permissions privacy

What a Telegram bot can actually see in your group

I opened the member list of a group I have run since 2023 and counted four bots in it. Two of them, nobody in the admin team could name. One had been added by somebody who left the company a year and a half ago.

That is normal. Bots accumulate the way browser extensions accumulate, one useful thing at a time, and almost nobody goes back and reads the list. The reason that matters is that adding a bot is a permission grant, and Telegram’s interface does a poor job of telling you which grant you just made.

I run managed Telegram hosting on dedicated hardware in Singapore. I write bots, I host them for other people, and I put third party bots into groups I am accountable for. So this is the version I would give a client, not the one on a bot’s landing page.

The switch that decides everything

Every bot has a setting called privacy mode, and it has two positions.

With privacy mode on, the bot receives a narrow slice of the group: messages beginning with a slash command, messages that mention its username, replies to messages the bot itself sent, and the service notices when people join or leave. Anything else typed in that room is never delivered to it. Telegram filters at its own end, so the bot’s server does not receive the traffic and then discard it. The traffic never arrives.

With privacy mode off, the bot receives every message in the group. Text, photos, files, forwards, all of it, streamed to a program running on somebody’s machine.

That is the whole model. There is nothing in between the two.

Why you cannot check which one you are looking at

Open group info and tap through to the members. The bot is there with its name and a small bot label, exactly like every other bot you have ever seen.

There is no badge for privacy mode. No icon, no warning, no line of text. A bot quietly reading every word in a customer support group looks the same as one that only wakes up when somebody types a slash.

If you registered the bot yourself, you can check the setting in BotFather. If you did not, you cannot check it at all. The toggle lives in a private conversation between BotFather and the developer, and there is no read only view of it for the people whose group is on the other end.

So when you add a bot you did not build, you are trusting a claim on a website. That may well be fine. It is still a claim.

Admin rights override the switch

Here is the part that catches experienced people.

Promote a bot to administrator and privacy mode stops applying. An admin bot receives every message in the group regardless of how its privacy setting was configured. Telegram documents this and the reasoning is sound, because a moderation bot that cannot read the messages it moderates would be useless.

The consequence is that two decisions people think of as separate are the same decision. You promote a bot so it can delete spam or pin an announcement, and the promotion also converts it from a narrow listener to a full one. Nothing in the interface mentions the second effect.

Demoting it later drops it back to ordinary membership, which returns it to whatever privacy mode it was registered with. Which you still cannot see.

Why the default is the safe one

Telegram ships every new bot with privacy mode on. A developer has to go and switch it off deliberately.

There is a second guard behind that. Changing the privacy setting does not take effect in groups the bot is already sitting in. The bot must be removed and re added. That is deliberately awkward, and it exists so that a bot cannot go from deaf to listening across ten thousand groups because one person changed one setting one afternoon.

Both of those defaults are good, and the majority of the setup instructions you will read this year exist to talk you out of them.

The ask in every setup guide

Scroll far enough into a bot’s documentation and you hit a step telling you to disable privacy so the bot works properly.

Sometimes that is entirely honest. Anti spam scoring needs to see messages to score them. A captcha bot has to catch a new member’s first post. Keyword alerting cannot alert on words it was never sent.

Sometimes it is just easier for the developer, because handling the restricted feed properly is more code than handling the full one.

And sometimes the message volume is the product being built, and you are the supply.

All three arrive as the same sentence in the same grey documentation box. You cannot tell them apart, and the grant is identical either way.

What arrives with any message it does receive

Separate from the group question, a few things are true of every bot interaction anywhere.

When you interact with a bot, it learns your display name, your username if you have set one, and the numeric account ID Telegram uses for you internally. That ID is the durable identifier. Change your name, delete your username, and it stays the same, so a bot that has seen you before still knows you.

It also learns the chat: title, internal ID, type, and frequently the invite link that brought it in.

And in a one to one chat with a bot there is no privacy mode by definition. Everything you send goes to it, because that is what the conversation is. This one catches people who are careful in groups and careless in a bot inbox.

What it genuinely cannot do

The fear usually overshoots the facts, so the other side of the ledger:

  • Your phone number stays private unless you tap a share button. It does not ride along with ordinary messages.
  • A bot has no visibility into your other chats. It lives in the conversations it was added to.
  • A bot cannot retrieve group history from before it joined. It gets updates as they occur, with no backfill.
  • A bot cannot message you first. You have to start the conversation or share a group with it.

Narrow and deep is the shape. It does not roam around your account. Inside its own room it hears whatever it was configured to hear.

Delete for everyone does not reach the other server

The no history point has a nasty inverse.

Anything the bot was entitled to receive while it sat there has already been delivered to hardware that has nothing to do with Telegram. Deleting a message afterwards clears it from Telegram and from every phone in the group. It does not touch the copy that landed on the operator’s disk, and there is no mechanism by which it could.

A password pasted by mistake and removed forty seconds later is gone from the chat and permanent somewhere else.

Admin is a second grant with its own toggles

Membership is a question about listening. Administration is a question about doing, and the rights are individual, so read them instead of approving them.

Delete messages lets it remove anything anyone posted, including you. Ban users lets it empty the room. Change group info lets it rename the community, replace the photo, and rewrite the description that every invite link opens onto.

Invite users is the one people wave through. A bot with that right can generate an invite link, and a link is a door that does not check who walks through it.

Add new admins is the one worth being frightened of, because a bot holding it can promote an account you have never heard of to your own level.

None of that requires the bot to be malicious. It requires the bot to be compromised, which is a far lower bar, because the thing controlling a bot is a token. One string. Whoever holds it is the bot, in every group that bot has ever joined. That string sits in a file or an environment variable on a machine you do not administer, cannot audit, and will never log into.

The one I approved without thinking

Two years ago I added a welcome and analytics bot to a customer group. Its setup page said to disable privacy mode so it could count messages accurately. I read that sentence, understood exactly what it meant, and did it, because I wanted the join numbers that week.

That group was where customers asked for help, so it had port numbers in it, IP addresses, and at least two credentials pasted by people who deleted them immediately afterwards. All of it went to a company I knew nothing about beyond a domain name, for around eight months, because I never went back and looked at the list.

Nothing came of it as far as I know. That is luck, and I can tell luck apart from a decision.

The audit

Open the member list of every group you own and read the bots properly. For each one, answer whether anybody still uses it, because a lot of them are residue from a migration, a trial, or a person who left.

Check the administrator list as a separate exercise, because it is a separate screen and a separate grant, and the two disagree more often than you would expect. Recent Actions shows who added what, but it does not reach back far, so anything sitting there for months will need you to ask around.

Then remove the ones nobody defends. Removal is the only control here that is instant, complete, and doesn’t depend on trusting somebody’s word.

telegramvault.org runs managed Telegram hosting on dedicated Singapore hardware, real handsets on real carrier SIMs. If the account that owns your groups is currently a personal phone in somebody’s pocket, that is the piece worth moving first, because a bad bot costs you a leak and a lost owner account costs you the group. Onboarding starts with a conversation about your setup, and the code TGYT gets you a discount when you start.

Get new guides and videos first — join the Telegram channel.

need infra for this today?