Как получить список пользователей Telegram-канала с помощью Telegram Bot API

любой кто - нибудь даст стартер о том, как я могу получить информацию о пользователях от моего бота telegram.Представьте себе моего бота в admin user в моем канале, и я хочу получить список пользователей канала или быть замеченным, когда новый пользователь присоединяется. Как я могу это сделать? Документы Telegram настолько неорганизованны. до сих пор я смотрел на эти:

https://core.telegram.org/bots

https://core.telegram.org/bots/api

https://core.telegram.org/bots/samples

https://core.telegram.org/bots/faq

но ничто из этого не помогает.

5 ответов


чтобы получить список пользователей, вам нужно использовать telegram API.

Telegram API довольно сложный. Есть некоторые клиенты, которые могут получить работу гораздо быстрее.

для python есть телемарафон, и метод для получения пользователей канала:

get_full_channel.


Telegram Bot ничего не хранит о ваших пользователях. Вы должны самостоятельно сохранить всех пользователей, которые общаются с вашим ботом. Например, сохраните их идентификаторы в базе данных.

в случае канала - вы можете получить эту информацию из списка членов канала.

Если вам нужно получать уведомления - ваш бот должен хранить пользователей где-то и проверять, является ли пользователь новым.


чтобы получить список пользователей, вам нужно использовать telegram API.

Telegram API довольно сложный. Есть некоторые клиенты, которые могут получить работу гораздо быстрее.

для python есть телемарафон, и код для получения пользователей канала:

from telethon import TelegramClient

from telethon.tl.functions.contacts import ResolveUsernameRequest
from telethon.tl.functions.channels import GetAdminLogRequest

from telethon.tl.types import InputChannel
from telethon.tl.types import ChannelAdminLogEventsFilter
from telethon.tl.types import InputUserSelf
from telethon.tl.types import InputUser

# These example values won't work. You must get your own api_id and
# api_hash from https://my.telegram.org, under API Development.
api_id = ****** # Your api_id
api_hash = '********************************' # Your api_hash
phone_number = '+989122594574' # Your phone number

client = TelegramClient(phone_number, api_id, api_hash)
client.session.report_errors = False
client.connect()

if not client.is_user_authorized():
    client.send_code_request(phone_number)
    client.sign_in(phone_number, input('Enter the code: '))


channel = client(ResolveUsernameRequest('tabe_eshgh')) # Your channel username

user = client(ResolveUsernameRequest('amir2b')) # Your channel admin username
admins = [InputUserSelf(), InputUser(user.users[0].id, user.users[0].access_hash)] # admins
admins = [] # No need admins for join and leave and invite filters

filter = None # All events
# param: (join, leave, invite, ban, unban, kick, unkick, promote, demote, info, settings, pinned, edit, delete)
filter = ChannelAdminLogEventsFilter(True, True, True, False, False, False, False, False, False, False, False, False, False, False)

result = client(GetAdminLogRequest(InputChannel(channel.chats[0].id, channel.chats[0].access_hash), '', 0, 0, 10, filter, admins))
##print(result)

for _user in result.users:
    ##print(_user.id)
    with open(''.join(['users/', str(_user.id)]), 'w') as f:
        f.write(str(_user.id))

бот не может получить доступ к списку пользователей с помощью API. Для этого есть две возможности:--1-->

  • поймать все сообщения канала и фильтр "XXX присоединился к каналу" один-это теоретически, я не пытался
  • использовать https://github.com/vysheng/tgl

нет никакого api для Telegram bot для доступа к каналу или пользователям группы. Если для вас важен доступ к пользователям группы, я предлагаю вам использовать Telegram-CLI. Вы можете получить доступ ко всем API учетной записи Пользователя Telegran, чтобы иметь доступ ко всем данным пользователей вашей группы.

https://github.com/vysheng/tg