2015-11-21 32 views
8

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

https://core.telegram.org/bots

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

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

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

Но ни один из них на самом деле не помогает.

+0

M.Shahrokhi, Вы нашли какие-либо решения, которые поддерживают с помощью робота API,? –

ответ

3

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

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

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

get_full_channel.

7

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

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

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

+0

Согласен, но: в случае каналов: Telegram Bot API не связаны с управлением каналом вообще.Новость (см. Https://core.telegram.org/bots/api#recent-changes) заключается в том, что владелец канала может добавить (один или несколько) ботов в качестве администраторов (-ов) канала. В этом случае «admin bot» может получить доступ к идентификаторам пользователей каналов. Смотрите: http://telegram.wiki/tips:channels –

+3

@GiorgioRobino прямо сейчас бот может иметь доступ только к сообщениям группы, но бот не имеет доступа к пользователям группы или канала (такого API нет), и даже если bot - admin, у него нет доступа к сообщениям канала. Возможно его ошибка –

+0

Да. Для получения всех идентификаторов нет конкретного API-интерфейса Bot (ни для 1. Бот-подписчиков, ни для 2. bot, как для администратора канала). В случае, если 1 бот может собирать и хранить идентификаторы (как вы сказали). В случае 2: ​​бот администратора канала МОЖЕТ видеть сообщения канала. Если вы протестировали это, это не так ... (я еще не знаю), поэтому я согласен с этим: это ошибка .. –

0

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

  • перехватывал все сообщения канала и фильтр «XXX присоединился канал» один - это в теории, я не пробовал
  • использование https://github.com/vysheng/tgl
+1

Не могли бы вы объяснить, как использование https://github.com/vysheng/tgl ответит на вопрос ? Я не вижу никакой документации, кроме официального, которую мы уже определили, не поддерживает списки пользователей из коробки. –

+0

вы должны использовать команду tgl 'channel_get_members' – Belegnar

+0

Первая теоретическая доза решения не работает. потому что в возвращенных объектах обновления отсутствует информация о «XXX в канале». –

0

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

https://github.com/vysheng/tg

1

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

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

Для питона, есть 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)) 
+0

этот фрагмент кода не работает –

Смежные вопросы