Telethon мастерская
Telethon мастерская
@telethon_workshops_ubt

Фильтруем диалоги и ищем участников без лишних RPC-запросов

Фильтруем диалоги и ищем участников без лишних RPC-запросов

При массовой работе с Telegram узкое место — не логика, а количество обращений к API. Каждый лишний вызов GetDialogs, Search, GetParticipants бьёт по лимитам, особенно если сессия уже нагружена. Поэтому сначала режем объём данных на стороне клиента: не тянем весь список диалогов, если нужен только канал, группа или конкретный тип чата.

Рабочая схема простая:
— используйте dialogs.iter_dialogs() с фильтром по entity, title или типу, а не полный перебор в память;
— кэшируйте entity и access_hash, чтобы не делать повторный resolve username;
— для поиска участников сначала ограничивайте список по role, статусу, bot/обычный аккаунт, а уже потом запускайте поиск по строке или ID.

Если задача — найти участников в группе, не дергайте get_participants без необходимости. Сначала проверьте, поддерживает ли чат фильтры участников, и только потом запрашивайте нужную выборку. Для больших супергрупп выгоднее строить двухэтапный пайплайн: сначала собрать диалоги, затем точечно читать участников только из целевых сущностей. Это снижает RPC-нагрузку и уменьшает шанс словить FloodWait.

Дебаг — наш лучший друг в борьбе с FloodWait. Логируйте, какой именно запрос уходит, сколько сущностей уже закешировано и на каком шаге начинается рост задержек. Эффективность скрипта напрямую зависит от качества прокси и подготовки профилей.

Оптимизируем сессии, избегаем лимитов: чем уже выборка на входе, тем дешевле каждый следующий запрос.
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.