Quelqu'un peut-il expliquer comment puis-je obtenir des informations sur les utilisateurs auprès de mon bot télégramme? Imaginez mon bot dans un utilisateur administrateur de mon canal et je souhaite obtenir ma liste d’utilisateurs de canal ou être remarqué lorsqu’un nouvel utilisateur s’associe. Comment puis-je faire cela ... Les documents de Telegram sont tellement inorganisés ... Jusqu'à présent, j'ai examiné ceux-ci:
Mais rien de tout cela n’aide vraiment.
Pour obtenir la liste des utilisateurs, vous devez utiliser l'API de télégramme.
L'API Telegram est assez compliqué. Certains clients peuvent faire le travail beaucoup plus rapidement.
Pour python, il y a Telethon , et la méthode pour obtenir des utilisateurs de canaux est la suivante:
get_full_channel
.
Telegram Bot ne garde rien sur vos utilisateurs. Vous devriez enregistrer vous-même tous les utilisateurs qui communiquent avec votre bot. Par exemple, stockez leurs identifiants dans la base de données.
Dans le cas de Channel, vous pouvez obtenir ces informations à partir de la liste des membres de Channel.
Si vous avez besoin d’être averti, votre bot devrait stocker les utilisateurs quelque part et vérifier si cet utilisateur est nouveau.
Pour obtenir la liste des utilisateurs, vous devez utiliser l'API de télégramme.
L'API Telegram est assez compliqué. Certains clients peuvent faire le travail beaucoup plus rapidement.
Pour python, il y a Telethon , et le code pour obtenir les utilisateurs de la chaîne est:
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))
Comme d’autres déjà mentionné, vous ne pouvez pas lister les utilisateurs de canaux via Bot API.
Mais vous pouvez utiliser API MTProto pour vous connecter en tant qu’utilisateur ordinaire et disposer d’un accès programmatique à tout ce que vous pouvez voir sur un ordinateur ou une application mobile.
Pour utiliser MTProto, vous devez vous connecter à https://my.telegram.org/ avec votre compte Telegram existant et obtenir les informations d'identification : api_id
et api_hash
.
Voici un exemple de travail montrant comment utiliser Telethon bibliothèque python pour obtenir la liste des utilisateurs du canal/groupe Telegram.
from telethon import TelegramClient, sync
api_id = 'FILL REAL VALUES HERE'
api_hash = 'FILL REAL VALUES HERE'
client = TelegramClient('xxx', api_id, api_hash).start()
# get all the channels that I can access
channels = {d.entity.username: d.entity
for d in client.get_dialogs()
if d.is_channel}
# choose the one that I want list users from
channel = channels[channel_name]
# get all the users and print them
for u in client.get_participants(channel):
print(u.id, u.first_name, u.last_name, u.username)
Il est facile de rechercher des canaux/utilisateurs par nom/téléphone/URL avec client.get_entity () .
Bot ne peut pas accéder à la liste des utilisateurs du canal via api . On a deux possibilités pour y parvenir:
Il n’existe aucune API permettant à Telegram bot d’accéder aux utilisateurs de canaux ou de groupes . Si l’accès aux utilisateurs de groupes est important pour vous, je vous suggère d’utiliser Telegram-CLI. Vous pouvez accéder à l'API de tous les comptes utilisateur Telegran afin d'avoir accès à toutes les données des utilisateurs de votre groupe.