Можно воспользоваться методом iter_dialogs()
примерно будет так:
from telethon import TelegramClient, sync
from telethon.tl.types import InputPeerUser
# установка параметров API
api_id = YOUR_API_ID
api_hash = 'YOUR_API_HASH'
phone = 'YOUR_PHONE_NUMBER'
# создание объекта клиента
client = TelegramClient('my_session', api_id, api_hash)
# авторизация клиента
client.connect()
if not client.is_user_authorized():
client.send_code_request(phone)
client.sign_in(phone, input('Enter the code: '))
# получение списка всех диалогов пользователя
dialogs = client.iter_dialogs()
# проход по всем диалогам
for dialog in dialogs:
# проверка, является ли текущий диалог чатом
if not isinstance(dialog.entity, InputPeerUser):
continue
# получение всех контактов в текущем диалоге
contacts = client.loop.run_until_complete(client.get_participants(dialog.entity))
for contact in contacts:
print(contact.first_name, contact.last_name, contact.phone)