Files
export-telegram-group-members/main.py
T

42 lines
1.3 KiB
Python

import getpass
from telethon.errors import SessionPasswordNeededError
from telethon.sync import TelegramClient
from telethon.tl.types import Chat, Channel
import TelethonFakeTLS
from common import *
from config import *
if proxy_host and proxy_port and proxy_secret:
proxy = (proxy_host, proxy_port, proxy_secret)
connection = TelethonFakeTLS.ConnectionTcpMTProxyFakeTLS
client = TelegramClient(phone, api_id, api_hash, connection=connection, proxy=proxy)
else:
client = TelegramClient(phone, api_id, api_hash)
client.connect()
if not client.is_user_authorized():
client.send_code_request(phone)
try:
client.sign_in(code=input('Enter code: '))
except SessionPasswordNeededError:
client.sign_in(password=getpass.getpass())
client.start(phone)
for group_id in group_ids:
try:
entity = client.get_entity(group_id)
if not isinstance(entity, (Chat, Channel)):
print(f'skip {group_id} because it is not a group.')
continue
print(f'exporting {entity.title} (ID: {group_id})')
members = client.get_participants(entity)
members.sort(key=lambda x: x.id)
export_csv(entity.title, members)
print(f'export {entity.title} done.')
except Exception as e:
print(f'error accessing group {group_id}: {e}')