Лимиты Telegram-ботов: что на самом деле ломается в платных сообществах при росте
Платный Telegram-канал обычно начинается просто. Человек платит, вы отправляете ему ссылку, а раз в несколько недель вручную убираете тех, кто перестал платить. Потом сообщество перерастает несколько сотен участников, рутину берёт на себя бот, и то, что вручную никогда не ломалось, начинает тихо давать сбои.
Дело почти никогда не в багах Telegram. Сбои вытекают из того, как устроен Bot API: что он ограничивает, какие права нужны боту и что происходит, когда запрос не прошёл. Разберём, что на самом деле задокументировано, где ломается платный доступ и как мы решили каждую из этих проблем в TribeSync.
1. Telegram ограничивает скорость бота и на перебор отвечает ошибкой
В FAQ для ботов Telegram публикует три лимита (источник):
- примерно одно сообщение в секунду в один чат;
- 20 сообщений в минуту в группу;
- примерно 30 сообщений в секунду при массовой рассылке разным пользователям.
Короткие всплески сверх этого Telegram терпит. Дальше бот начинает получать ошибку 429. Запрос при этом не пропадает бесследно: Telegram его отклоняет и сообщает, сколько секунд подождать перед повтором (retry_after) (Bot API: ResponseParameters).
Почему это касается платных сообществ. Бот платного доступа не только пишет сообщения. Когда в один день заканчивается сразу много подписок, он по очереди удаляет каждого участника и обычно отправляет каждому сообщение «подписка закончилась». Получается всплеск запросов от одного бота. Если бот считает 429 окончательной неудачей, участник просто остаётся в чате, и никто этого не замечает.
Как это работает в TribeSync. Получив 429, наш бот ждёт ровно столько, сколько просит Telegram, и повторяет запрос. Удаления идут отдельно по каждому боту, с короткой паузой между участниками, потому что лимиты у каждого бота свои. Если Telegram просит подождать дольше нескольких секунд, мы не висим: этот участник обработается при следующем запуске.
2. Неудачное удаление нужно повторить, а не забыть
Вот сбой, который стоит денег. Автоматизация сначала помечает подписку как «истёкшую» и только потом пытается удалить участника. Если удаление не прошло (лимит, сбой Telegram, бот потерял права), в записи уже стоит «истекла», и повторять никто не будет. Человек остаётся в платном чате бесплатно и бессрочно.
Как это работает в TribeSync. Сначала удаление, потом смена статуса. Подписка помечается истёкшей только после того, как участник действительно вышел из чата. Если удалить не получилось, подписка остаётся в очереди и обрабатывается при следующем запуске. Лишнего доступа это не даёт: истёкшая подписка не позволит одобрить новую заявку на вступление и не учитывается в лимите подписчиков вашего тарифа.
Если удаление не проходит неделю подряд (например, бота удалили), мы прекращаем попытки и отправляем оператору алерт для ручной проверки. Так одна сломанная настройка не будет бесконечно сыпать уведомлениями.
Два случая считаются выполненными, а не ошибкой:
- Участник уже ушёл или удалил аккаунт. Цель «его нет в чате» уже достигнута.
- Участник — владелец чата или админ. Бот в Telegram никогда не может их удалить. Обычно так бывает, когда владелец покупает подписку на собственный канал, чтобы проверить, как всё работает.
3. Удаление не должно мешать оплатить снова
В Bot API «удалить участника» на деле означает «забанить», а забаненный не сможет вернуться по пригласительной ссылке, пока его не разбанят (Bot API: banChatMember). Поэтому удаление обычно выглядит как бан и сразу разбан. Если разбан не прошёл, бывший подписчик, который захочет продлить подписку, не сможет вернуться даже после оплаты.
Как это работает в TribeSync. Мы баним на время. Telegram позволяет задать бану срок окончания (until_date), и в супергруппах и каналах бан снимается сам, когда срок проходит. У нас это около минуты. Разбан мы всё равно отправляем сразу, но даже если он не пройдёт, никто не останется за дверью.
4. Автопродлению через Stars нужен небольшой запас
Telegram Stars поддерживает настоящие регулярные подписки: подписчик платит раз в 30 дней, и каждое продление приходит боту как новый платёж с новой датой окончания. Платёж за продление и дата окончания не всегда совпадают до минуты. Если бот удаляет участников в ту же секунду, как наступила дата, он может удалить человека, у которого продление вот-вот пройдёт, и показать платящему подписчику «ваша подписка закончилась».
Как это работает в TribeSync. Разовые подписки удаляются сразу после окончания. Подписки с автопродлением через Stars получают дополнительные 24 часа. Если платёж за продление придёт с небольшой задержкой, доступ просто продлится как обычно.
Проверка истёкших подписок запускается раз в сутки. На практике участник с разовой подпиской будет удалён в течение суток после её окончания, а отменивший автопродление — в течение двух суток.
5. Без нужных прав админа бот ломается молча
Каждый шаг платного доступа требует конкретных прав администратора. Чтобы создавать пригласительные ссылки и одобрять заявки на вступление, бот должен быть админом с правом приглашать пользователей (createChatInviteLink, approveChatJoinRequest). Чтобы удалять участников, ему нужно право блокировать пользователей (banChatMember).
Владельцы часто добавляют бота с урезанными правами «на всякий случай», а иногда стандартный диалог Telegram просто не отмечает нужные пункты. Платежи при этом проходят, но бот не может впустить покупателя или потом удалить того, кто не продлил.
Как это работает в TribeSync. Когда вы подключаете бота, TribeSync задаёт ему права администратора по умолчанию через Bot API (setMyDefaultAdministratorRights). Поэтому в диалоге «добавить администратора» Telegram сразу предлагает нужные права: приглашать пользователей, блокировать пользователей и удалять сообщения для модерации. Лишнего бот не просит: менять информацию о чате или назначать админов ему не нужно. Если удаление не прошло из-за нехватки прав, оно повторится, а вы получите алерт, а не тишину. Если бота убрали из чата совсем, новые продажи встают на паузу, и панель предлагает добавить его снова. Действующие участники сохраняют доступ, и всё возобновляется, как только бот вернётся.
6. Ваша группа может сменить ID
Когда обычная группа в Telegram растёт или вы меняете некоторые настройки, Telegram превращает её в супергруппу, и у супергруппы появляется новый ID чата. Бот получает служебное сообщение с указанием нового ID (migrate_to_chat_id, см. Bot API: Message). Любая автоматизация, которая продолжит обращаться к старому ID, начнёт получать ошибку на каждый запрос.
Как это работает в TribeSync. Бот отслеживает это служебное сообщение и сам переносит платный доступ и модерацию на новый ID. Вам ничего делать не нужно. Подробнее — в статье справочного центра о переходе группы в супергруппу.
7. Доступ получает только тот, кто заплатил
Классическая утечка в платных Telegram-сообществах — пересланная ссылка-приглашение. Если ссылка впускает любого, кто по ней перешёл, один покупатель может провести с собой друзей.
Как это работает в TribeSync. После оплаты покупатель получает персональную ссылку, которая не впускает в чат напрямую, а создаёт заявку на вступление (createChatInviteLink с заявками). Ссылка действует 24 часа. Бот одобряет заявку, только если у этого Telegram-аккаунта есть активная, не истёкшая подписка. Всем остальным, кто нажмёт на пересланную ссылку, бот отказывает.
Почему важен собственный бот
Лимиты Telegram действуют для каждого бота отдельно. В TribeSync вы подключаете своего бота, созданного в @BotFather, поэтому лимиты запросов, права админа и доход в Stars принадлежат вашему боту и вашему сообществу. Stars от подписчиков поступают на баланс вашего бота, а крипта (USDT/TON) — в ваш собственный кошелёк CryptoBot. TribeSync никогда не держит ваши деньги: вы платите фиксированную плату за платформу, и с ваших продаж TribeSync берёт 0% комиссии.
Короткий чек-лист
Если вы продаёте доступ в Telegram, неважно через какой инструмент, проверьте, что:
- при ошибке 429 бот ждёт и повторяет запрос, а не сдаётся;
- участник помечается истёкшим только после того, как его действительно удалили, а неудачные удаления повторяются;
- удаление не мешает вернуться тому, кто хочет продлить подписку;
- подписки с автопродлением не обрываются за несколько минут до того, как пройдёт платёж;
- у бота есть права приглашать и блокировать пользователей, а если их нет — вы об этом узнаёте;
- переход группы в супергруппу не ломает автоматизацию;
- ссылка-приглашение впускает только того, кто заплатил.
TribeSync закрывает все семь пунктов из коробки, вместе со встроенной модерацией. Попробуйте бесплатно 7 дней, без привязки карты: подключите бота, привяжите чат и настройте первую подписку за пару минут.