Python | Telethon. Как получить ID или Телефон пользователя, который отправил сообщение
from telethon import TelegramClient, events
import datetime
import telethon
api_id = 123123123
api_hash = '123123123123'
client = TelegramClient('phoneTest', api_id, api_hash)
@client.on(events.NewMessage(chats=('TestChannel')))
async def normal_handler(event):
userMessage=event.message.to_dict()['message']
message_dt = datetime.datetime.now()
print(message_dt, "Сообщение:", str(userMessage), "от пользователя:")
client.start()
client.run_until_disconnected()
Есть такой простой код, который пока что выводит сообщения. Как узнать телефон/id пользователя который отправил это сообщение?
Ответы (2 шт):
Автор решения: GrDEV
→ Ссылка
@client.on(events.NewMessage(chats=('TestChannel')))
async def normal_handler(event):
userMessage=event.message.to_dict()['message']
user=event.message.to_dict()['from_id']['user_id']
message_dt = datetime.datetime.now()
print(message_dt, "Сообщение:", str(userMessage), "от пользователя:" + user)
Как получить имя пользователя пока не придумал.
Автор решения: Alex
→ Ссылка
Как указал GrDEV необходимо использовать "event.message.to_dickt()". Я лишь дополню, что после этого нужно сделать запрос по полученному id за счет "client.get_enity(PeerUser(user_id))". Из полученных данных можно получить всю необходимую информацию о пользователе.
import socks
from telethon import TelegramClient, events
from telethon.tl.types import PeerUser
api_id = 123456
api_hash = 'qwerty'
client = TelegramClient('bot', api_id, api_hash, proxy=(socks.SOCKS5,'ip', port, 'login', 'password'), system_version='4.10.2')
client.start()
@client.on(events.NewMessage())
async def my_event_handler(event):
user_id = event.message.to_dict()['from_id']['user_id']
user = await client.get_entity(PeerUser(user_id))
print(user) #можно выводить user.id, user.first_name и т.д
client.run_until_disconnected()