Как получить список пользователей 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, чтобы иметь доступ ко всем данным пользователей вашей группы.