<b>Фильтруем диалоги и ищем участников без лишних RPC-запросов</b>
Когда скрипт начинает перебирать все чаты подряд, нагрузка растёт не от Telegram, а от вашей логики. Для Telethon правильнее сначала сузить выборку: нужные типы диалогов, исключение служебных чатов, заранее сохранённые ID. Так вы уменьшаете число обращений к API и снижаете шанс поймать лишний FloodWait.
Рабочая схема простая:
— берём диалоги только из <code>iter_dialogs()</code> и сразу отсекаем боты, каналы или архив;
— не вызываем полный <code>get_participants()</code> без фильтра, если нужен конкретный сегмент;
— используем <code>aggressive=False</code>, если не требуется полный сбор;
— кэшируем уже найденные entities и usernames, чтобы не дергать сервер повторно.
Для быстрого поиска участников лучше опираться на локальную структуру данных: username, user_id, доступность в entity cache. Если нужен поиск по группе, сначала получите список участников один раз, потом работайте только с ним. Повторные проходы по одному и тому же чату без кэша — типичная причина медленного парсинга и лишних RPC.
Не забывайте про контроль ошибок: <code>ChannelPrivateError</code>, <code>ChatAdminRequiredError</code>, <code>FloodWaitError</code> нужно обрабатывать отдельно, а не глушить общим <code>except</code>. Разбираем логи ошибок: что пошло не так на стороне API?
Оптимизируем сессии, избегаем лимитов. Чем точнее фильтрация на входе, тем меньше запросов, выше скорость и стабильнее скрипт.
Telethon мастерская
@telethon_workshops_ubt
<b>Фильтруем диалоги и ищем участников без лишних RPC-запросов</b>
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.