2015-11-21 10 views
8

Każdy, kto daje starter, w jaki sposób mogę uzyskać informacje o użytkownikach z mojego telegramu bot. Wyobraź sobie mojego bota u administratora na moim kanale i chcę uzyskać dostęp do mojego kanału listę lub zostać zauważonym, gdy nowy użytkownik się dołączy. Jak mogę to zrobić. Dokumenty Telegram są tak niezorganizowane. dotychczas Mam spojrzał na nich:Jak zdobyć listę użytkowników kanału Telegram za pomocą Telegram Bot API

https://core.telegram.org/bots

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

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

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

Ale żaden z nich naprawdę pomaga.

+0

M.Shahrokhi, Znalazłeś żadnego rozwiązania, które obsługują przez Bot API? –

Odpowiedz

3

Aby uzyskać listę użytkowników, trzeba użyć telegramu API.

Telegram API jest dość skomplikowany. Istnieje kilka klientów, którzy mogą wykonać pracę znacznie szybciej.

dla Pythona, jest Telethon, a sposób, aby użytkownicy kanał to

get_full_channel.

7

Telegram Bot nie zatrzymuje niczego na temat użytkowników. Powinieneś sam zapisać wszystkich użytkowników, którzy komunikują się z twoim botem. Na przykład przechowuj ich identyfikatory w bazie danych.

W przypadku kanału - możesz uzyskać te informacje z listy członków kanału.

Jeśli potrzebujesz powiadomienia - Twój bot powinien gdzieś przechowywać użytkowników i sprawdzić, czy użytkownik jest nowy.

+0

Zgadzam się, ale: w przypadku kanałów: Telegram Bot API w ogóle NIE są związane z zarządzaniem kanałem.Wiadomości (patrz: https://core.telegram.org/bots/api#recent-changes) to fakt, że właściciel kanału może dodać (jednego lub więcej) bota jako administratora (ów) kanału. W tym przypadku "admin bot" może uzyskać dostęp do identyfikatorów użytkowników kanału. Zobacz: http://telegram.wiki/tips:channels –

+3

@GiorgioRobino Teraz bot może mieć dostęp tylko do wiadomości grupy, ale bot nie ma dostępu do użytkowników grup lub kanałów (nie ma takiego API), a nawet jeśli bot jest administratorem, nie ma dostępu do wiadomości kanału. Może to błąd –

+0

Tak. Nie ma konkretnego API Botów do pobierania wszystkich identyfikatorów (ani dla abonentów 1. Bot, ani dla 2. bota jako admin kanału). W przypadku, gdy jeden bot może zbierać i przechowywać identyfikatory (tak jak powiedziałeś). W przypadku 2: bot administratora kanału MOŻE zobaczyć komunikaty kanału. Jeśli testowałeś to, to nie jest prawdą ... (jeszcze nie), więc zgadzam się z: jest to błąd .. –

0

Bot nie może uzyskać dostępu do listy użytkowników kanału za pośrednictwem interfejsu API. One mają dwie możliwości, aby osiągnąć to:

  • złapać wszystkie komunikaty kanałowe i filtr "XXX dołączył do kanału" jeden - to jest w teorii, nie próbowałem
  • użycie https://github.com/vysheng/tgl
+1

Czy możesz wyjaśnić, jak za pomocą https://github.com/vysheng/tgl odpowiedzieć na pytanie ? Nie widzę żadnej dokumentacji poza oficjalną, która, jak już ustaliliśmy, nie obsługuje list użytkowników po wyjęciu z pudełka. –

+0

powinieneś użyć polecenia tgl 'channel_get_members' – Belegnar

+0

Pierwsza teoretyczna dawka roztworu nie działa. ponieważ w zwróconych obiektach aktualizacji nie ma informacji "XXX dołączone do kanału". –

0

Nie ma żadnych api dla bota telegramu, aby uzyskać dostęp do kanału lub grupy użytkowników. Jeśli dostęp do grupowych użytkowników jest dla Ciebie ważny, sugeruję użycie Telegram-CLI. Możesz uzyskać dostęp do wszystkich interfejsów konta użytkownika Telegran, aby mieć dostęp do wszystkich danych użytkowników grupy.

https://github.com/vysheng/tg

1

Aby uzyskać listę użytkowników, należy użyć interfejsu API telegramu.

Telegram API jest dość skomplikowany. Istnieje kilka klientów, którzy mogą wykonać pracę znacznie szybciej.

dla Pythona, jest Telethon, a kod dostać użytkownikom kanał to

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

ten fragment kodu nie działa –

Powiązane problemy