When a Telegram bot is the wrong tool
When a Telegram bot is the wrong tool
Someone sent me a bot last year and asked what it would cost to host. Six thousand lines of Python, and it was a marketplace: buyers, sellers, listings, escrow, payouts, the entire company inside one Telegram bot.
The code was competent. The thing that broke it was a line further down his roadmap that said “notify seller when item sells”.
A bot cannot message a person who has never messaged the bot. About half his sellers had registered through a web form months earlier and never opened a chat with him, so those accounts were unreachable. No API call, no paid tier, no supported workaround.
I run managed Telegram hosting on dedicated hardware in Singapore, so bots arrive on my desk after the decision has been made and the walls have started showing up. This is about the decision itself.
What you get free, and when the bill lands
The reason a bot is always the first thing built is that it genuinely is an afternoon of work.
Identity is handed to you. No signup form, no email verification, no password storage, no reset flow. The user turns up already authenticated and Telegram gives you a numeric ID that never changes.
Distribution too. No domain, no app store review, no install step. You send a link and they are inside. The client is already written, already installed, already open on their phone.
That is a month of unglamorous work you skipped. It reads as a discount. It behaves like a loan, and the repayments start the first time you need something Telegram did not decide to give you.
The jobs a bot does better than anything else
Alerts going outward. This is the best use of the platform. Something in my rack stops responding and a bot tells me within a second, with no mobile app to build and no push service to pay for. Every server I run has one attached.
One or two short commands. Check a status, restart a service, look up an order reference. One line in, one line back, no interface to design.
A short form. Four questions and a submit, handled by inline buttons, with no URL to find and no login to remember.
An internal tool for a small team who all already use Telegram, where the entire cost of building a front end evaporates.
What those have in common is that the chat window is a convenience laid over something else. The something else is the product.
The restriction that decides most projects
A bot cannot open a conversation. If a person has not pressed start or shared a group with your bot, there is no mechanism by which your bot reaches them, and no upgrade that changes it.
Written out, that removes: importing an existing customer list, password resets, delivery notices to people who bought on your website, appointment reminders for anyone who booked by phone, and every other message that begins with your business deciding to speak first.
It hides during development, because you and your two testers pressed start on day one. The wall appears the week you point the bot at a real customer table and find most of those rows have no Telegram relationship with you at all.
The standard fix is a deep link on your website: the customer taps it, the bot opens with a payload attached, and now you are allowed to write to them. That is the correct design, and it means you need a website, traffic to it, and a mapping between Telegram IDs and your own accounts, by which point the bot has stopped being the product.
A user can also block your bot with two taps, and you find out from an error the next time you send. There is no fallback address, because you never collected one.
The Bot API gives you nowhere to put anything
An update arrives with a chat ID, a user ID and the message. There is no storage, no user table, no session store.
So the first time your bot has to remember something across users or across a restart, you are running a database. Which means a server, which means deployments, migrations, monitoring, and a backup somebody has actually restored once.
That is an ordinary backend, complete. The hours you saved skipping the signup flow are back on the board with interest, and the bot is a front door on a system that stands up by itself. Which is fine, and also the moment to ask why the front door is the only door.
A chat log has no current screen
Everything a bot shows somebody is a message, and messages arrive in sequence and stay where they landed. That is excellent for conversation and hostile to layout.
Twelve rows of anything on a phone, in a monospace block with no column widths, is something people squint at rather than read. A chart has to be drawn server side and sent as an image file. A form with conditional questions turns into a run of messages, each one a small state machine.
The expensive part is that the chat has no idea which screen you are on. Old buttons stay live until you go back and edit or delete them, and people do scroll up and press them. You can edit a single message in place to imitate one screen, and good bots do that, but it is several times the code of a web page doing the same job and still worse.
Telegram’s web apps exist for this and they work. Reach for one and you have written a browser front end, you are hosting it, and the bot has become a launcher.
The rules belong to somebody else
Your bot exists because a platform permits it. The API changes when they change it. The limits are theirs: roughly thirty messages a second in aggregate and one per second into a given chat, so a hundred thousand recipients is close to an hour of broadcasting, with no plan you can buy to speed it up.
Telegram also decides what you may sell and how. It introduced its own currency for digital goods and required bots selling them to use it, which rewrote the economics of an entire category of bot in a single announcement.
And Telegram is blocked outright in some countries, on and off, for reasons unrelated to anything you did. That is an ordinary quarter for the platform and a very bad one for a company whose only surface lives inside it.
None of that is Telegram misbehaving. It is what building on someone else’s property has always meant. You are a tenant, and tenants hear about the new rules when everyone else does.
Every bot worth defending has the same shape
It is a thin interface over something that already exists and would carry on existing if the bot vanished.
A support desk answering on Telegram has a ticket system behind it, with Telegram as one inbox feeding it. An order bot writes into the same table the web checkout writes into.
Moderation is the honest exception, because a moderation bot works inside the room and has nowhere else to sit. That one has its own article.
What a bot can hear inside a group, what it takes to keep one online on an address that does not move, whether updates arrive by webhook or polling, and how you store the token are four separate subjects. All four assume a bot was already the right shape.
The switch off test
Turn the bot off and ask whether your thing still works.
If customers can still sign in, still see their data, still buy, and all they lost is a convenient way to poke at it, you built an interface, and that bot can be rebuilt in a weekend.
If switching it off means there is no product, Telegram is your landlord and you have moved the whole company into a rented room. That distinction is invisible on every ordinary day and total on the one day the platform changes something.
Three weeks I would like back
I built a control panel for our proxy customers as a Telegram bot about three years ago. Check your line, read your bandwidth, rotate your IP, get a warning before expiry. Three weeks of work, and customers took to it immediately, which is what made it hard to see.
Then a customer bought twelve lines, and twelve rows of status in a chat message is unreadable. I knew it the moment I sent the first one.
Then someone asked to give a colleague read only access. Identity in a bot is a Telegram account, so there are no roles and no seats unless you build a second identity system next to the free one, at which point the free one is a liability.
Then someone wanted a PDF invoice, so I was generating files on a server and sending them as documents to imitate a page that would have been eleven lines of HTML.
I had built a web dashboard with a chat window bolted across the front of it, badly, over three weeks. We built the real dashboard afterwards and the bot became four things: expiry warnings, a bandwidth alert, a status command and a link. It gets used more than the old one and it took two days.
If the chat window disappearing would only inconvenience somebody, build the bot this afternoon. If it would end the thing, build the thing first and let the bot be one door into it. And if you cannot describe what you have made without using the word Telegram in the first sentence, that is worth a day of thinking before you write any more of it.
telegramvault.org is managed Telegram hosting on dedicated Singapore hardware, real handsets on real carrier SIMs, keeping bots and the accounts behind them online on addresses that do not move. 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.