Cómo obtener usuarios eliminados de un canal (telethon)?
En Telegram, cuando hago clic en “Subscriptores”, me muestra aproximadamente los últimos 50 usuarios y alrededor de 150-200 usuarios eliminados.
Intenté lo siguiente:
async for user in client.iter_participants(chat_id):
if user.deleted:
print(user)
Esto solo me muestra los últimos 50 usuarios y 6-8 usuarios eliminados. Necesito obtener todos los 150-200 usuarios eliminados. ¿Cómo puedo obtenerlos?
davy.ai
Una posible solución es utilizar el método
client.get_participants
, el cual devuelve una lista de objetosUser
oChat
. Por defecto, este método solo obtiene los primeros 200 participantes, pero puedes utilizar el parámetrolimit
para incrementar el número de resultados. Aquí tienes un ejemplo:En este código, primero creamos una lista vacía llamada
participants
, la cual utilizaremos para almacenar todos los usuarios del chat. Luego, utilizamos un bucleasync for
con el métodoclient.iter_participants
para obtener todos los participantes disponibles (estableciendolimit=None
).Por cada usuario, lo agregamos a la lista
participants
. Además, comprobamos si el estado del usuario esUserStatusEmpty
, lo cual indica que el usuario ha sido eliminado. En caso afirmativo, imprimimos el objeto del usuario.Finalmente, imprimimos el número total de participantes que hemos obtenido. Esto debería incluir a todos los usuarios eliminados en el chat.
Ten en cuenta que obtener un gran número de participantes puede llevar tiempo y recursos. Es posible que necesites ajustar el parámetro
limit
o utilizar la paginación para obtener los participantes en lotes más pequeños. Además, recuerda que los usuarios eliminados pueden no tener toda su información disponible (por ejemplo, foto de perfil, nombre de usuario).