CopyPost or Your Own Bot: Which Pays Off for Forwarding Posts
Servers, memory, account bans, lost posts, albums and edits — what a home-made Telegram forwarding bot really costs you.
“It’s just ten lines of Python” — that’s how almost every home-made post forwarding bot starts. And the first version really does take one evening: the bot sees a new post in the source channel and copies it to your channel. The problems come later — when an album falls apart into separate posts, when the account the bot reads channels through stops working without warning, when a post from a big channel simply never arrives.
We went through everything the owner of a home-made bot runs into: where to keep the server, how much memory the bot eats, what accounts get banned for, why messages get lost and what happens to edits and deletions. And we compared it honestly with what CopyPost does — including what it doesn’t do.
A bot or an account: the first fork in the road #
Before choosing a server, you’ll have to decide on whose behalf your program will read channels.
An ordinary bot from @BotFather is the official and safe way to automate. But it comes with hard limits:
- it sees posts only from the channels where it has been added as an admin. A bot can’t read someone else’s channel, even a public one;
- it sees the messages of other bots in groups only partially;
- it downloads files no bigger than 20 MB and uploads no more than 50 MB — it can forward or copy a long video as it is, but it can’t change it (say, put a watermark on it): to do that it would have to download it;
- it writes to one chat no more than once a second, and to a group — no more than 20 messages a minute.
That’s why almost everyone who collects news from other people’s channels moves to a user account — an ordinary Telegram account run by a program (it’s called a userbot). It sees everything it’s subscribed to, but it comes with risks, which we cover below. For more on the difference, see the article Userbot or bot.
CopyPost works with both bots and accounts, and you can combine them: for example, read with an account and publish with a bot that’s an admin of your channel. That way the account sees everything, the posts come out on behalf of the channel itself (not the bot), and the bot is easy to replace if need be.
Where to keep the server #
Telegram lives in three cities #
Telegram’s servers are in Miami, Amsterdam and Singapore. Each account is “registered” in one of these data centers. The data center is chosen at sign-up based on where you signed up from (Telegram picks the nearest one), and you can’t change it yourself — only Telegram itself can move an account to another data center. So accounts registered in Europe and the CIS usually live in Amsterdam.
What this means for your own bot:
- the server is best kept close to the account’s data center. Every request to Telegram goes there and back; from a server in the Netherlands to Amsterdam it’s a few milliseconds, from another continent — tens or hundreds;
- files are stored in the data center of whoever uploaded them. If a video was uploaded to the channel by an account registered in Singapore and yours lives in Amsterdam, the program opens a separate connection to Singapore to download that video;
- if you have several accounts from different regions, one server for all of them will be far from at least one data center.
At home and in “your” country it may not work #
Keeping the bot on your home computer or on a server in a country where Telegram is restricted is a bad idea. In 2026, Telegram in Russia was first slowed down, and in spring, blocked on a mass scale; it’s also blocked in China and Iran. A bot that loses its connection to Telegram loses posts too.
So you need a rented server in a country where Telegram works without restrictions. The smallest ones cost $4–6 a month (512 MB – 1 GB of memory, one core — for example, at DigitalOcean). Prices change: Hetzner, popular with developers, raised them in the spring and once more in the summer of 2026, and it has no servers in Amsterdam at all.
In CopyPost, choosing the hosting and the connection to the right data centers is our job. You don’t rent a server, don’t keep track of paying for it and don’t have to move elsewhere if the provider raises prices or Telegram stops opening in your country.
How much memory the bot will eat #
A $5 server doesn’t have much memory, and the libraries people write bots with use it in very different amounts. There are hardly any independent measurements — below is what we managed to find, and our own measurements.
| Library | Language | Memory | Where the figure comes from |
|---|---|---|---|
| python-telegram-bot | Python | ~40 MB | our measurement: process with no connection |
| Telethon | Python | ~63 MB | our measurement: client created, not connected |
| Kurigram (Pyrogram replacement) | Python | ~68 MB | our measurement, same conditions |
| aiogram | Python | ~167 MB | our measurement, a single run |
| mtcute | TypeScript | “under 50 MB” | the authors’ words |
| TDLib | C++ | up to ~10 MB per account | developer’s estimate |
| gotd | Go | “150 KB per idle client” | the authors’ words |
What matters is that this is the lower bound: our measurements were taken before connecting to Telegram, when the program doesn’t know anything about your channels yet, and the authors’ figures are under a light load. From there memory grows:
- for Telethon there are reports that, when about a dozen accounts run in one program, a certain error makes memory grow by several megabytes a second; an RSS bot built on it that serves more than 6,000 feeds takes about 350 MB on a single-core server;
- with TDLib, according to user reports, a program in which the account only receives messages uses more and more memory until it crashes — within a few dozen hours, and in one user’s case TDLib’s on-disk database grew to 18.7 GB.
In practice this means your own bot has to be restarted every now and then, and you have to keep an eye on disk space — otherwise one night it will crash, and you’ll find out in the morning from an empty channel.
There’s a more serious risk too: libraries die. Pyrogram has been abandoned since December 2024, and in February 2026 Telethon left GitHub for another platform. Meanwhile Telegram keeps changing: the Bot API alone has had 13 updates since the start of 2025, and Telegram has already switched off old versions of the protocol — after which programs on old library versions could no longer log in to the account.
Account bans #
This is the main fear of those who read channels with a user account — and it’s well founded.
What Telegram itself says #
- All accounts that log in through unofficial programs are automatically put under monitoring. For flooding, spam and fake subscribers or views — a permanent ban, and getting the account back only by writing to a live person.
- If people report an account as a spammer, it gets restricted: you can only write to people who saved your number or wrote to you first. The first time for a few days, then longer.
- Since 2025, an account can be “frozen”: the account stays read-only, and if the appeal isn’t accepted, it’s deleted.
- Telethon’s developers plainly advise against using new accounts and virtual numbers for automation: Telegram bans them more readily, and changes the rules without warning.
Invisible limits #
Telegram doesn’t publish exact limits, but when you exceed them it answers “wait N seconds”. A home-made bot often handles this silently: if the wait is no longer than a minute, Telethon by default simply waits without reporting anything, and on a longer wait it raises an error. Worse is a restriction “for spam”: Telegram’s response doesn’t say how long it will last, and retries don’t help. Another hidden ceiling — an account without Premium can be a member of no more than 500 channels and supergroups.
What CopyPost does — and what it doesn’t #
Honestly: no service can guarantee that an account won’t get banned. The decision is Telegram’s, and if an account sends spam, it will be blocked anywhere. But many bans and losses happen not because of spam but because of a program behaving carelessly. This is where CopyPost takes the work on itself:
- it keeps to Telegram’s pauses automatically. If Telegram asks to wait, CopyPost waits exactly that long (up to 15 minutes) and doesn’t hammer it with repeated requests. If the pause is longer, the post doesn’t wait for hours but is skipped, and in the panel you’ll see a clear message: “Telegram has restricted sending from this account for another N — the message was skipped”;
- one account’s pause doesn’t stop the others, and repeated send attempts go out at growing intervals;
- it connects openly. The account logs in as the CopyPost app — with an
api_id(that’s the app’s number in Telegram) issued to CopyPost itself — rather than pretending to be someone else’s program. If you like, you can enter theapi_idandapi_hash(the number and the key) of your own app, obtained at my.telegram.org; - it warns you right away. If the account gets logged out, blocked, frozen or removed from a chat, the service bot will message you, and the account will be flagged in the panel — you won’t find out about the problem a week later from an empty channel.
Our advice is the same as the library developers’: for forwarding, set up a separate account, not your personal one, and don’t subscribe it to hundreds of channels in a day.
Why posts get lost #
This is the nastiest problem with your own bot: it runs, there are no errors, and yet some of the posts simply aren’t in your channel.
Telegram doesn’t send everything #
Telegram isn’t obliged to deliver every update instantly. Its documentation says plainly that for some channels it may send updates (new posts, edits, deletions) less often or stop altogether, and the program has to request the gaps itself. Home-made bots usually don’t do this — and in practice:
- Telethon users complain that new posts arrive from a test channel with two subscribers but don’t arrive from a public channel with 500,000. No fix ever appeared: in February 2026, when the project moved, this complaint was closed as “not planned”;
- in GramJS, events for a channel stop arriving after a few seconds unless you “interact” with the channel;
- the workaround from another report — making the library request updates more often — makes the program run out of memory and crash after about 10 hours.
In CopyPost, ordinary receiving is backed up by turbo receive: the account itself polls up to 10 channels twice a second and picks up posts Telegram hasn’t sent yet. Turbo receive is free on any plan. For bots there’s a similar safety net — every second the bot itself checks three of the channels it reads, cycling through them in turn.
A restart — and the posts are gone #
The server rebooted, the program crashed, the internet went down. What happened in the meantime?
- for an ordinary bot, Telegram keeps undelivered updates for no more than 24 hours;
- in Telethon, catching up on what was missed is off by default — without it, everything that came out during the downtime is lost;
- really old events Telegram deletes, and they can no longer be fetched.
In CopyPost, after a dropped connection or a restart, the service itself requests what was missed in every channel your pipelines read from (a pipeline is what CopyPost calls a “from where — to where — with which rules” link). A post that arrives is first written to disk and only then counts as received — so it survives even a server crash. And it won’t be duplicated: CopyPost remembers which copies have already been published, every send carries its own tag, and Telegram won’t accept a repeat.
One honest limitation: if the account was unavailable for more than an hour, CopyPost doesn’t publish posts older than an hour — so that after a long downtime your channel doesn’t get flooded with a pile of stale news.
The album fell apart #
An album in Telegram is several separate messages with a shared group number. A bot receives them one at a time and has to stitch them back together; usually the bot waits about half a second for the other parts, and if the album is large or the network is slow, some of the photos don’t make it in time — and the album falls apart. Your channel ends up with three posts of one photo each instead of one with three.
CopyPost doesn’t wait for the parts of an album forever either, but it waits longer — up to a few seconds if the parts arrive late — and publishes them as one post. And if a photo is so late that the album has already gone out, the photo goes out as a separate post — nothing is lost or duplicated.
What can’t be forwarded at all #
Telegram doesn’t let you copy service messages, paid media, giveaways and invoices, and from channels with forwarding protection it doesn’t let you forward anything. What’s more, if you forward several messages in one request, such messages are sometimes skipped silently. CopyPost won’t copy service messages, paid media, giveaways and invoices either, while posts from a protected channel CopyPost publishes anew in Copy mode (“Копия”: the post comes out as a new one, without the “Forwarded from” label), with freshly uploaded files. But it’s important at least to know that a post didn’t get through: in CopyPost the last delivery error is shown on the pipeline, with its text in Russian and the time, and the log for the last three days shows every delivery and how long it took.
Edits and deletions #
The author of a post fixed a typo or deleted a news item — it would be good if your copy changed too. For your own bot that’s a big separate chunk of work:
- message numbers are different in every chat, so you have to store which copy matches which original and not lose those records on a restart;
- the Bot API doesn’t report at all when posts are deleted in channels, and a bot can delete its own copy only within 48 hours;
- Telegram tells a user account about deletions “not 100% reliably”, and in private chats and small groups — without even saying which chat the deletion was in.
In CopyPost, edits, deletions and pins are repeated after the source, and if a post in the source replies to another post or links to it, your copy will reply to your copy of that post and link to it. The exception is Forward mode (“Пересылка”, with the “Forwarded from” label): edits don’t reach such copies and links in them aren’t swapped, because Telegram doesn’t let anyone change forwarded messages (while deletions, pins and replies work there too).
Security and your data #
A fair question to ask any service: what does it see?
To read channels on behalf of your account, CopyPost stores its session key (it lets the service stay logged in to the account without signing in again) — like any program you’ve allowed to log in, your own bot included. That’s exactly why we recommend a separate account for forwarding. You can remove the account from CopyPost at any time: the service first closes the session in Telegram, then erases the keys. You can also close the session yourself — in Telegram, in the active sessions section.
CopyPost keeps the text of posts only while delivering them — usually seconds. The match between originals and copies (without the text) is stored for 30 days, so that edits and deletions can be repeated. There are no trackers, and data goes only to Telegram, to the hosting providers whose servers the service runs on, and to your own webhooks — addresses you’ve asked to have posts sent to.
Your own bot on your own server gives you full control — but full responsibility for making sure the server isn’t hacked and the session key doesn’t leak is yours too.
What it costs #
| Your own bot | CopyPost | |
|---|---|---|
| Server | $4–6 a month, plus choosing the hosting | not needed |
| Development | from an evening to weeks — depending on albums, edits, media | none |
| Maintenance | restarts, library updates, watching memory and disk | ours |
| Missed posts | request them yourself | requested automatically, plus turbo receive |
| Albums, edits, deletions | write it yourself | work out of the box |
| Telegram’s limits | handle them yourself, often silently | kept to automatically, errors visible in the panel |
| Ban or logout | you find out from an empty channel | a message from the service bot |
| Price | the developer’s time | three accounts free, each additional three — 231 Stars for 30 days (discounted from four packs bought at once) |
As many pipelines as you like on any plan, the free one included, and the speed is the same everywhere. Payment is in Telegram Stars, and they can be refunded within 14 days of payment if you haven’t used the service or it didn’t work because of a fault on our side.
When your own bot still pays off #
We won’t pretend that everyone needs a service:
- you have unique logic that no service has — say, a post has to go through your own neural network or database. Though some of these tasks are solved by webhooks: CopyPost sends every post to your server, and what to do with it is up to you;
- data must not leave your own servers because of security requirements;
- you already have a developer who will maintain the bot for years, and a server that someone looks after.
In every other case — especially if you’re a channel admin and not a programmer — a home-made bot costs more than it seems on that first evening: not in money, but in lost posts and time.
How to try it #
Connect an account in the CopyPost panel by QR code or with a code from Telegram, choose where to forward from and to, and switch on the rules you need. Step by step — in the article how to set up autoposting in 5 minutes. Three accounts are free, so you can compare it with your own bot without paying anything.