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

Любой, кто дает стартер, как я могу получить информацию о пользователях из моего телеграммы bot.Imagine мой бот в пользователе администратора на моем канале, и я хочу получить список моих каналов или быть замеченным, когда новый пользователь присоединяется. Как мне это сделать. Документы телеграммы настолько неорганизованны. до сих пор я смотрел на них:

https://core.telegram.org/bots

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

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

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

Но ничто из этого действительно не помогает.

Ответ 1

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

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

Для python существует Telethon, а способ получения пользователей канала:

get_full_channel.

Ответ 2

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

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

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

Ответ 3

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

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

Для python существует Telethon, а код для получения пользователей канала:

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))

Ответ 4

Бот не может получить доступ к списку пользователей каналов через api. Для этого есть две возможности:

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

Ответ 5

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

https://github.com/vysheng/tg