раздел 01
Лимиты и FloodWait
У Telegram есть ограничения на частоту действий - rate limit. Это защита от перегрузки и от спама: нельзя слать сообщения, вступать в группы или делать запросы бесконечно быстро. Когда вы упираетесь в лимит, сервер не молчит - он прямо говорит, сколько подождать.
Telegram сам сообщает «подожди N секунд». Это не ошибка, а инструкция. Правильная реакция - дождаться и продолжить. Неправильная - долбить дальше и получить блок.
Что такое FloodWait
FloodWait - это ответ сервера в духе «слишком много запросов, подожди столько-то секунд». Библиотеки вроде Telethon отдают его как ошибку FloodWaitError с полем seconds. Значение бывает разным: пара секунд, минута, иногда - часы, если вы сильно перестарались.
Ключевое: FloodWait - это не бан. Это предупреждение и просьба притормозить. Если вы его уважаете, ничего страшного не происходит. Если игнорируете и продолжаете сыпать запросами - вот тогда растёт риск уже настоящего ограничения аккаунта.
Главное правило: слушать сервер
Не пытайтесь угадывать лимиты и обходить их. Единственно верная стратегия - слушать, что говорит сервер, и подчиняться. Пришёл FloodWait на 30 секунд - ждём 30 секунд, потом продолжаем. Не «подождём 5 и попробуем», а ровно столько, сколько попросили, лучше с небольшим запасом.
Пример реакции на FloodWait в Python (Telethon):
import asyncio
from telethon.errors import FloodWaitError
async def safe_action(coro_factory):
while True:
try:
return await coro_factory()
except FloodWaitError as e:
# сервер сам сказал, сколько ждать - слушаем его
wait = e.seconds + 5 # небольшой запас сверху
print(f"FloodWait: ждём {wait} секунд")
await asyncio.sleep(wait)
# после паузы цикл повторит то же действие
Идея кода простая: поймали FloodWaitError - взяли из него число секунд, поспали столько (плюс запас) и повторили. Никаких попыток пробить лимит.
Не делать массовых действий залпом
Даже если формально вы ещё не поймали FloodWait, залповые действия - главный красный флаг. Сто сообщений подряд за минуту выглядят как спам, даже если все адресаты вам знакомы.
- Ставьте паузы между действиями. Не шлите и не вступайте вплотную одно за другим. Пауза в несколько секунд между операциями резко снижает подозрительность.
- Троттлинг вместо гонки. Троттлинг - это искусственное замедление: делать не «как можно быстрее», а «не чаще, чем раз в N секунд». Медленно и ровно безопаснее, чем быстро и рывками.
- Разбивайте большие задачи. Нужно обработать много - растяните по времени, делайте порциями с перерывами, а не всё сразу.
- Не запускайте несколько скриптов на один аккаунт. Два процесса легко вместе пробьют лимит, даже если каждый по отдельности аккуратный.
Смежные темы
- Telethon - библиотека, где вы встретите FloodWait на практике.