Telegram как получить список участников чата

от admin

Сбор информации о подписчиках Telegram-канала

На 2021 год боты в Telegram так и не имеют метода, позволяющего получать информацию о подписчиках канала. Тем не менее, существует достаточно сложное в освоении Telegram API и построенная на нём библиотека Telethon. Сегодня мы посмотрим, как при помощи библиотеки выгрузить информацию о подписчиках своего канала.

Создание приложения

Для начала необходимо создать приложение, через которое будут отправляться запросы к API. Перейдите на https://my.telegram.org и авторизуйтесь в Telegram-аккаунте:

После успешной авторизации перейдите на страницу API development tools:

Заполните все поля и жмите на создание приложения:

Из полученной конфигурации нам необходим app api_id и app api_hash:

Запрос к API

Импортируем telethon — он поможет сформировать запрос, и pandas — полученный ответ мы запишем в DataFrame.

Вводим api_id, api_hash, наш номер телефона и ссылку на канал, информацию о подписчиках которого хотим получить. Доступ к информации о подписчиках есть только у администраторов канала.

Создаём новую сессию — вместо session_name можно подставить любое другое название. Методы в библиотеке работают асинхронно, поэтому ответа от них требуется ожидать:

Собираем все каналы текущего пользователя. Из ссылки забираем часть с именем канала и вытаскиваем из словаря нужный:

Подписчиков, доступ к которым не ограничен приватностью, можно получить методом get_participants. С 20 июля 2018 года Telegram установил ограничение в 200 подписчиков для вызова метода, и установка параметра aggressive на True поможет получить всех подписчиков за раз.

Из полученных библиотечных структур извлекаем информацию о пользователях — их имена и телефоны:

Из четырёх списков собираем DataFrame и пишем его в csv-таблицу:

Результат работы — такая таблица:

Для запуска в Jupyter Notebook описанный ниже код можно просто вставить в ячейку, но при запуске из Python-файла будет такая ошибка:

Устранить проблему можно, записав весь код в асинхронную функцию. Целиком выглядеть код будет так:

Что-то не работает. Ругается: SyntaxError: ’await’ outside function

Добрый день! Проверили способ прямо сейчас — у нас всё работает. Пришлите, пожалуйста, свой код (можно через gist.github.com) и версию Python.

Да я вообще не очень разбираюсь в Python’е. Только начал учить буквально на днях. Парсер чатов-то сделал, но там попроще было (на другом сайте), а сейчас понадобился для дела свой канал собрать, а там такие камни подводные 🙂

В Python вовсе необязательно разделять отдельные участки кода на функции, как, например, в C 🙂 Попробуйте написать без них, просто записывая последовательно все команды из материала в файл — должно получиться вот так: https://gist.github.com/Elisejj/aec7867e5da55e295d148882ae41488c

Если так делать, то он снова на await ругается: SyntaxError: ’await’ outside function

Я ж с такой «атаки в лоб» и начинал 🙂 В общем, вот такое решение у меня работает (всё парсит и файл сохраняет): https://gist.github.com/Mnsrff/9cba7a3231034fac900dd00b692d7c0f

Но хотелось бы разобраться, почему так 🙂 Почему у вас без функций всё работает, а я вынужден был всё в них заворачивать и вызывать 🙂 Python 3.7 у меня. Библиотеки установлены.

Добрый день. Спасибо за код.
А с чем может быть связано несовпадение количества участников группы и количество выгруженных? Подписчики могут где-то ограничить приватность и не светиться в группах?
А то у меня из 574 юзеров выгружается только 470, хотя последний элемент в members_telethon_list total равняется 574.

Да, я подозреваю, что дело в настройках приватности у ряда пользователей, которые не дают свои данные выгрузить. У меня была аналогичная ситуация с экспортом собственных подписчиков.

Максим Игоревич 2021

Добрый день.
Подскажите пожалуйста, как вытащить ID юзеров.

Максим Игоревич 2021

Михаил Артемьев 10 мес

Подскажите, есть ли способ получить список подписчиков канала, которые были удалены?

насколько мне известно, нет, увы, их уже не получить

Ольга Телюкова 9 мес

Мы пробрасываем лиды из ФБ в телегу и гугл таблицы через Webjack. Сервис работает как часы.
Можно получить месяц халявы и бесплатную настройку по промокоду semen21, напишите его в чат техподдержки на сайте

Здравствуйте! Подскажите пожалуйста, возможно ли узнать, кто-нибудь мог таким образом спарсить подписчиков с моего канала?

вся статья об этом, вы ее читали?

Читал, но ничего не понял)))
У меня есть канал, и ощущение что один из админов спарсил моих подписчиков. Могу ли я как-то это проверить.
П.С.: Извиняюсь, если мой вопрос для Вас совсем тупой. Я чукча)

Роман Лыжов 7 мес

Добрый день
У меня почему-то выдает ошибку:

KeyError Traceback (most recent call last)
C:\Users\Public\Documents\Wondershare\CreatorTemp/ipykernel_7648/3941792516.py in <module>
15 if d.is_channel>
16 my_channel = channel_href.split(’/’)[-1]
—-> 17 channel = channels[my_channel]
18
19 members_telethon_list = await client.get_participants(channel, aggressive=True)

Хотя канал существует, при выполнении даже был запрос на авторизацию с подтверждением через телеграм.
Канал @TestChannelRomanLyzhov свежесозданный, для теста.
Сможете помочь?

А у меня не находит ваш канал: TestChannelRomanLyzhov. Он доступен в паблике?

Привет, у меня выскакивает вот такая ошибка DeprecationWarning: There is no current event loop
loop = asyncio.get_event_loop() в чём дело и как сделать чтобы ко работал

Здравствуйте. Можно ли парсить телеграм каналы в которых я состою в свой личный?
Допустим у меня будут два моих канала в 1ый- будут рассылаться сообщения, картины которые парсит бот, чтобы я там мог редактировать(к примеру парсит картину и цену товара и мне нужно в своем 1ом канале иметь доступ к редактированию) и во 2ой канал уже будет рассылаться готовый контент.
Заране спасибо за ответ)

Добрый день!
Выскакивает ошибка :

telethon.errors.rpcerrorlist.BotMethodInvalidError: The API access for bot users is restricted. The method you tried to invoke cannot be executed as a bot (caused by GetDialogsRequest)

Как я понял, не возможно добавить бота в канал. Есть ли хук или другой метод, что бы получить информацию о пользователях группы, в которую бот не добавлен как участник?

А что мешает добавить бота в свой канал?

В этом и суть, канал не мой)

Тогда у вас ничего не выйдет. Это метод для работы с собственным каналом

Здравствуйте, смогу ли я спарсить подписчиков с канала, в котором я администратор, а не владелец?

Руслан Трифонов 5 мес

Добрый день! Не могу получить данные на этапе создания нового приложения, ничего не происходит https://prnt.sc/_bby94Pk7OR3 нажимаю ок и все, дальше ничего нет.

Ну, это вам в суппорт Телеграмма

Ivan Mashtalov 5 мес

Такую ошибку выдает:
line 11
client = TelegramClient(’session_name’, api_id, api_hash)
TabError: inconsistent use of tabs and spaces in indentation

Очевидно, что у вас что-то не так с индентацией?

Здравствуйте, уже который месяц пытаюсь решить проблему которые вы описываете в этом посте. Но однако ваш метод не является рабочим в данный момент. Список участников канала как был ограничен 200 сотнями так и остается, если я конечно же все правильно понимаю.

Не понял, что за ограничение в 2 сотни? у меня ограничения на выгрузку не было.

Это снова я, пытаюсь достать списко своих подписчиков которых сейчас 500. Если добавляюАГРЕССИВ = true вылазит такая ошибка.
telethon.errors.common.MultiError: ([None, None, FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), None, FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), FloodWaitError(’A wait of 30 seconds is required (caused by GetParticipantsRequest)’), F[<telethon.tl.types.channels.ChannelParticipants object at 0x0000021E5B8EB130>, <telethon.tl.types.channels.ChannelParticipants object at 0x0000021E5B8E37F0>, None, <telethon.tl.types.channels.ChannelParticipants object at 0x0000021E5B8E7E50>, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [<telethon.tl.functions.channels.GetParticipantsRequest object at 0x0000021E5B7E1BB0>, <telethon.tl.functions.channels.GetParticipantsRequest object at 0x0000021E5B7E1C70>, <telethon.tl.functions.channels.GetParticipantsRequest object at 0x0000021E5B7E1D30>,

Читать:
Как зайти в телеграмм с компьютера по qr коду

Николай, благодарю за статью, код работает!
Но агрессив не получается применить на группе, у меня там 14к человек, он пишет, что слишком много попыток, и дропает парсинг.
Можете проверить, как это работает сейчас?
Буду признателен, если подскажете, как это обойти.

Статья Автоматизированный сбор данных в чатах и рассылка для Telegram на Python

Plane-Network-Application-Social-Internet-Telegram-5952446.jpg

UPDATE.
Меня правильно поправили — спам в РФ запрещен . Но есть возможность проводить автоматизированный сбор данных. Поэтому перед использованием данного метода следует получить согласие «каждого субъекта на такие действия».
То же самое с рекламной рассылкой — стоит также получить согласие «каждого субъекта на такие действия».
Федеральный закон о персональных данных

Обычно в этом месте все пишут предысторию, но у меня она достаточно заурядная: недавно возникла необходимость сделать рассылку по телеграм(никакой чёрнухи :Р).
Сначала посмотрел готовые решения. Их действительно очень много, но либо не нравилось, либо не подходило по нуждам, либо я совсем терялся в коде.
Вот решил, наконец, проверить свои навыки после курса «Python для Пентестера» и написать все сам.

Ссылка на готовый код с гитхаб в конце статьи.
У нас будет три основные части программы: коннектор клиента( как это назвать по-русски?? ), сбор участников чата и рассылка по пользователям.

Будем использовать библиотеку telethon. Документация по библиотеке — Telethon’s Documentation — Telethon 1.24.0 documentation

Устанавливаем библиотеку telethon

Далее необходимо получить App api_id и App api_hash. Для это заходим на my.telegram.org в раздел API development tools.

2022-04-29_17-10.png

Создаем app, копируем необходимое и создаем переменные:

Но при первом подключении надо будет ввести одноразовый код, а если включена двухфакторная авторизация, то и дополнительный пароль.
Поэтому пишем такую конструцию, которая учитывает эти вопросы.

В текущей директории создается файл *.session. Был момент, когда я долго разбирался как работает подключение и коннектился огромное количество раз, и Телеграм забанил меня на несколько суток. Если такое случится, нужно удалить это файл сессии и приконнектиться заново.

Получаем список чатов:

.get_dialogs – получить все диалоги
.is_group — проверка является ли диалог групповым чатом/megagroup-чатом
.is_channel – то же самое для каналов.
То есть вместе два этих условия дают спарсить групповые чаты от каналов(пабликов). Отдельно .is_channel можно спарсить участников канала, только если имеются админские права.

Дальше берем в переменную выбор пользователя.

Можно также спарсить такие параметры как:
id, bot(False or True), scam(False or True), fake(False or True), access_hash, first_name, last_name, phone, и status(когда в последний раз был онлайн)

Далее можно добавить опцию выбора: сохранить или спамить по списку. А можно и не добавлять. Взрослые люди все-таки, сами можете выбрать есть мороженное на завтрак или в обед.

Парсер Телеграм для сбора целевой аудитории и чатов

Когда у вас появится собственный чат или канал в Телеграмм, то вы обязательно столкнетесь с проблемой увеличения количества участников. В противном случае содержать сообщество нет никакого смысла, ведь оно не будет приносить прибыль, а держать чат или канал просто так мало кому захочется. Идеальный вариант — наращивать только целевую аудиторию читателей, так как именно они являются основными потребителями ваших продуктов или информационного контента. Но как найти таких людей? Для решения этой проблемы существует Телеграм парсер. Это автоматизированное программное решение, которое занимается сбором и обработкой информации по определенным критериям, с целью получения заинтересованных участников канала или чата. Парсеры экономят время администраторов каналов, спамеров, арбитражников и smm-менеджеров. Такие программы легальны и не нарушают правила Telegram, ведь основная их задача — сбор открытых и общедоступных данных.

Одним из таких продуктов на рынке является универсальный бот парсер для Телеграмма. Работает он очень просто: вы выбираете кого и как он будет парсить, после чего бот самостоятельно производит поиск, на выходе предоставляя вам готовый список пользователей, который подойдет для инвайтинга или рассылки. Более того, благодаря многозадачности, он может выполнить и эти процессы. Телеграм парсер:

  • имеет доступную цену;
  • удобен и прост в настройке;
  • оснащен различными фильтрами для отсеивания ботов;
  • быстро и бесперебойно работает.

Парсер для Телеграм не имеет себе равных, он одинаково эффективный для парсинга каналов, чатов и пользователей. Это лучший софт для поиска целевой аудитории и взаимодействия с ней.

Парсер Telegram: сбор участников чатов

В Телеграмме зарегистрировано большое число пользователей из разных стран. Часть их могли бы стать участниками ваших чатов и каналов, а значит и потенциальными клиентами или заказчиками. Функция парсинга логинов помогает справиться с данной задачей. Опция работает следующим образом:

  • Многопоточный парсинг. Указываете ссылки на несколько групп и Telegram парсер одновременно собирает их участников.
  • Отбор активных участников (по частоте входа в мессенджер: онлайн недавно, заходили на неделе, в течение месяца или были давно).
  • Фильтрация людей по другим параметрам: наличие аватарки или присутствие в общих группах.
  • Парсинг не только участников групп, но и администраторов.

Полученный список можно редактировать как угодно, импортировать и экспортировать контакты, объединять данные. Парсер для Telegram умеет проверять телефонные номера. Для организаций, у которых есть своя база номеров телефонов клиентов, данная возможность может быть очень полезна. Ведь так можно проверить, есть ли пользователь в Телеграмме. Такую базу можно использовать для каких-либо оповещений с помощью личных сообщений или для приглашения на каналы и корпоративные чаты. При чем сделать это все можно максимально быстро. На обработку 10000 аккаунтов у него уйдет всего 1 минута.

Парсер Телеграмм чатов

Если у вас нет готового списка чатов, с которым вы хотите работать, то это не будет являться проблемой, ведь Телеграм парсер сможет найти эти чаты в популярных поисковых системах. Вам достаточно указать нужные ключевые слова и фразы для поиска, а дальше он все сделает за вас. Парсер помогает подготовить почву для дальнейших действий с контактными данными и приблизительно понять объем работы в рамках конкретной тематики.

Из найденных групп уже можно получить и отфильтровать список участников и администраторов для рассылки рекламных сообщений или инвайтинга. При этом не забывайте, что рассылку можно сделать и сразу по чатам, если вам не нужна точечная реклама, а достаточно написать свое рекламное предложение в чат.

Похожие статьи