Фильтрация диалогов и поиск участников: как не утонуть в лишних RPC
При автоматизации Telegram главная ошибка — дергать API без предварительной фильтрации. Если скрипт сначала тащит весь список диалогов, а потом уже ищет нужные чаты и людей, вы платите лишними запросами, временем и риском упереться в FloodWait.
Рабочая схема простая:
— сначала отбираем только нужные типы сущностей: channel, group, user;
— исключаем архив, сервисные чаты и пустые диалоги;
— кешируем id, access_hash и username, чтобы не пересобирать объект на каждом проходе.
Для поиска участников не используйте «слепой» перебор всех диалогов. Сначала сузьте контекст: чат, супергруппа, конкретный username или search-запрос. Потом применяйте iter_participants с фильтрами по ролям, ботам, агрессивности и лимиту выдачи. Так вы уменьшаете число RPC и получаете предсказуемую нагрузку на сессию.
Разбираем логи ошибок: что пошло не так на стороне API? Если видите долгий ответ, пустую выборку или частые PeerIdInvalid, проблема обычно не в Telethon, а в том, что объект не был корректно разрешен через input entity. Оптимизируем сессии, избегаем лимитов.
Дебаг — наш лучший друг в борьбе с FloodWait: сначала фильтр, потом запрос, потом кэш. Это базовая схема, которая делает парсинг и инвайтинг стабильнее, а не «быстрее на глаз».
Telethon мастерская
@telethon_workshops_ubt
Фильтрация диалогов и поиск участников: как не утонуть в лишних RPC
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.