Solutions · Bots
A VPS for a Telegram bot
A bot idles at under a hundred megabytes and spends its life waiting, so the machine is almost never the constraint — U1-1 at $7.90 a month runs one properly. What actually decides your bill is media, and whether you run your own Bot API server. Both are arithmetic, and both are below.
The decision under the decision
Webhook or long polling
This, not the plan, decides whether your bot needs a domain, a certificate and an open port.
Long polling
Your bot connects out to Telegram and waits for updates. No domain, no TLS certificate, no port open to the internet, works behind NAT. It is the fastest way to get something running and it is a perfectly good permanent answer for most bots.
Webhook
Telegram connects to you. Needs a public address, a valid certificate and an open port — all of which any plan here can do — and in exchange there is no polling loop and it scales better under real load. Move when load or latency says to, not before.
The arithmetic
How many bots a plan actually holds
Bots = (RAM − 300 MB operating system) ÷ what one bot holds. The two columns are a stateless command bot and one carrying an ORM, a scheduler and a cache.
| Plan | RAM | Light bots | Heavy bots | Transfer | Price | Deploy |
|---|---|---|---|---|---|---|
| U1-1One bot, any size of audience | 1 GB | 12 | 4 | Unmetered | $7.90 | Deploy |
| C1-1-25One bot, metered but cheap | 1 GB | 12 | 4 | 1 TB | $9.90 | Deploy |
| GL2-4Several bots, or a bot with a database | 4 GB | 63 | 25 | Unmetered | $10.90 | Deploy |
| BD-8A self-hosted Bot API server | 8 GB | 131 | 52 | 32 TB | $11.90 | Deploy |
The number of users your bot has is not in this arithmetic, because it is not in the problem: Telegram hands your process updates one at a time rather than opening a connection per user. What changes the answer is state you hold yourself — a large cache, an in-process database, a model.
The number that decides the bill
Media, not memory
Average file size × messages a day × 30. Both directions count — a file received is traffic too.
| What the bot moves | 100/day | 5,000/day | 50,000/day |
|---|---|---|---|
| Text onlyA command and a reply. Effectively free. | < 1 GB | < 1 GB | 3 GB |
| PhotosA compressed image, sent and received. | < 1 GB | 44 GB | 439 GB |
| Voice notes and short videoThe usual load on a community bot. | 9 GB | 439 GB | 4.3 TB |
| Documents and long videoTelegram's own download ceiling for a plain bot. | 59 GB | 2.9 TB | 28.6 TB |
The one thing that changes the machine
A bot on the public Bot API can download files up to 20 MB and upload up to 50 MB — Telegram's limits, not ours — and the files never touch your disk. Run your own Bot API server and the ceiling becomes 2 GB and every file lands on your server. That is the point where disk and transfer stop being incidental: BD-8 gives you 100 GB of NVMe and 32 TB for $11.90, which is the shape that suits. If you are not doing that, do not pay for it.
Honestly
What we would actually buy
We run a Telegram bot ourselves. This is the machine we would put it on.
For one bot
U1-1 · $7.90/mo
1 core, 1 GB, 15 GB NVMe, and no traffic meter — so a bot that unexpectedly starts moving media cannot produce a bill you did not expect. Put the bot under systemd with Restart=always, and the only remaining way for it to go down is your own code. If you outgrow it, moving a bot is copying a directory and a token.
Questions