Mario, miembro de este gran equipo, nos ha hecho el favor de crear esta crónica ya que domina a la perfección el tema.
Solución:
Para obtener la lista de usuarios, debe usar la API de Telegram.
La API de Telegram es bastante complicada. Hay algunos clientes que pueden hacer el trabajo mucho más rápido.
Para python, existe Telethon, y el método para obtener usuarios del canal es:
get_full_channel
.
Telegram Bot no guarda nada sobre sus usuarios. Debes guardar tú mismo a todos los usuarios que se comunican con tu bot. Por ejemplo, almacene sus ID en la base de datos.
En el caso del Canal, puede obtener esta información de la lista de miembros del Canal.
Si necesita recibir una notificación, su bot debe almacenar a los usuarios en algún lugar y verificar si el usuario es nuevo.
Como otros ya mencionaron, no puede enumerar los usuarios del canal a través de la API de Bot.
Pero puede usar la API de MTProto para iniciar sesión como un usuario simple y tener acceso programático a todo lo que puede ver en la aplicación de escritorio o móvil.
Para usar MTProto, debe iniciar sesión en https://my.telegram.org/ con su cuenta de Telegram existente y obtener credenciales: api_id
y api_hash
.
Aquí hay un ejemplo práctico de cómo usar la biblioteca python de Telethon para obtener una lista de usuarios de canales/grupos de Telegram.
from telethon import TelegramClient, sync
api_id = 'FILL REAL VALUES HERE'
api_hash = 'FILL REAL VALUES HERE'
client = TelegramClient('xxx', api_id, api_hash).start()
# get all the channels that I can access
channels = d.entity.username: d.entity
for d in client.get_dialogs()
if d.is_channel
# choose the one that I want list users from
channel = channels[channel_name]
# get all the users and print them
for u in client.get_participants(channel):
print(u.id, u.first_name, u.last_name, u.username)
Es fácil buscar canales/usuarios por nombre/teléfono/URL con client.get_entity().
Si te sientes estimulado, eres capaz de dejar un ensayo acerca de qué te ha parecido esta noticia.