Как обойти лимит Telegram API для групп свыше 10,000 участников
Введение
Здравствуйте! Если вы когда-либо пытались извлечь данные пользователей из крупных телеграм-групп и каналов, вы наверняка знаете о технических сложностях, которые могут возникнуть. В рамках нашего проекта — платформы для спикеров и коучей — мы столкнулись с необходимостью эффективно продвигать наши курсы, используя рекламу в других группах и каналах. Однако далеко не каждый готов предоставить доступ к своему каналу или группе, особенно если предлагаемые темы курсов перекликаются с их собственными.
Для решения этой задачи наша маркетинговая команда разработала трехуровневую партнёрскую программу. Суть программы заключается в том, что владельцы групп, согласные на сотрудничество, получают уникальный идентификатор в нашей системе. Под этим ID регистрируются все новые пользователи, которые, в случае покупки курсов, генерируют вознаграждение для владельца группы.
Эта инициатива казалась нам многообещающей, однако в процессе реализации мы столкнулись с серьёзным ограничением. При попытке загрузить список пользователей из группы на 13,000 человек, система смогла обработать только 10,000. Это ограничение API Telegram значительно усложнило выполнение задуманного плана, требуя от нас дополнительных технических решений.
Решение
В API Telegram channels→getParticipants нашелся параметр поиска 'filter' => ['_' => 'channelParticipantsSearch', 'q' => «Перебираем все символы которые могут быть в логине»]
Пример решения на PHP используем библиотеку MadelineProto
//.....................................
//подключаем библиотеки, считываем данные из базы
$telegram_group_id = $group['telegram_group_id'];
$groupInfo = $MadelineProto->getFullInfo($telegram_group_id);
$participantCount = $groupInfo['full']['participants_count'] ?? 0;
echo "В группе $participantCount пользователей!
";
$allParticipants = [];
$limit = 200;
if ($participantCount > 10000) {
$nextchar = $group['nextchar'];
if ($nextchar === '00') {
echo "Все символы были обработаны.
";
echo '