Есть скрипт для создания сессии
from telethon import TelegramClient
api_id = ...
api_hash = ...
client = TelegramClient(name, api_id, api_hash)
client.start()
client.run_until_disconnected()
И есть скрипт для парсинга
import json
from telethon.sync import TelegramClient
from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.types import ChannelParticipantsSearch
api_id = ...
api_hash = '...'
username = 'anon'
with TelegramClient(username, api_id, api_hash) as client:
client.start()
async def dump_all_participants(channel):
offset_user = 0
limit_user = 100
all_participants = []
filter_user = ChannelParticipantsSearch('')
while True:
participants = await client(GetParticipantsRequest(channel,
filter_user, offset_user, limit_user, hash=0))
if not participants.users:
break
all_participants.extend(participants.users)
offset_user += len(participants.users)
all_users_details = []
for participant in all_participants:
all_users_details.append({"id": participant.id,
"first_name": participant.first_name,
"last_name": participant.last_name,
"user": participant.username,
"phone": participant.phone,
"is_bot": participant.bot})
with open('channel_users.json', 'w', encoding='utf8') as outfile:
json.dump(all_users_details, outfile, ensure_ascii=False)
async def main():
url = input("Введите ссылку на канал или чат: ")
channel = await client.get_entity(url)
await dump_all_participants(channel)
with client:
client.loop.run_until_complete(main())
При запуске второго несмотря на ранний запуск первого и создание файла сессии с тем же именем telethon заново запрашивает авторизацию, из-за чего банят аккаунт по причине частой авторизации.