Фильтруем диалоги и ищем участников без лишних RPC и FloodWait
Когда скрипт начинает «тормозить», причина часто не в Telethon, а в плохой логике обхода. Не дергайте список чатов целиком, если вам нужны только каналы, только группы или только диалоги с активностью. Сначала отсекаем мусор по типу сущности, потом уже идем в детали.
Для диалогов используйте явные фильтры: проверяйте is_group, is_channel, megagroup, исключайте архив и сервисные чаты. Это сокращает число объектов в памяти и уменьшает количество запросов к API. Оптимизация сессий, избегаем лимитов.
Поиск участников делайте не через полный перебор, а через сужение выборки: сначала получите нужный чат, затем работайте по его участникам с iter_participants и ограничениями по роли, активности или ключевому флагу профиля. Если нужен быстрый lookup, кешируйте id, username и уже обработанные сущности, иначе повторные обращения будут съедать лимит на ровном месте. Дебаг — наш лучший друг в борьбе с FloodWait.
Если ловите пустые результаты, смотрите на права доступа: не в каждом чате API отдает полный список, а в некоторых случаях поиск по участникам режется сервером. Разбираем логи ошибок: что пошло не так на стороне API?
Стройте пайплайн так: фильтр диалогов → отбор нужного чата → точечный поиск участников → кеширование результата. Так скрипт работает быстрее, а сессия живет дольше.
Telethon мастерская
@telethon_workshops_ubt
Фильтруем диалоги и ищем участников без лишних RPC и FloodWait
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.