Как получить объект User из сообщения в группе в Telegram Bot

Недавно я работал над простым ботом Telegram, написанным на python (с python-telegram-bot библиотекой ). В этом боте я могу получить последний объект сообщения, используя следующую команду:

bot.getUpdates()[-1].message

и согласно Telegram Doc объект сообщения содержит некоторые атрибуты, такие как message_id,from,date,chat, ... Атрибут from возвращает объект User, который является отправителем сообщения. Но поскольку from - это ключевое слово python (используется во время импорта), поэтому мы не можем использовать его, который вызывает SyntaxError.

В качестве альтернативы мы можем использовать атрибут chat, который возвращает объект User в личных чатах и ​​объект GroupChat в группах, которые он не содержит, и информацию о пользователе. Также я не смог найти прямого способа сообщить об этой ошибке.

Итак, вопрос в том, есть ли способ выполнить эту работу? или, может быть, любое альтернативное решение?


person kasravnd    schedule 10.08.2015    source источник
comment
Вы пробовали использовать getattr()? Это позволит вам избежать зарезервированного ключевого слова. Но я все еще не совсем уверен, вы сами разрабатывали объектный код JSON в Python?   -  person Anonymous    schedule 11.08.2015
comment
@Anonymous Нет, я не позволил мне попробовать это, и нет, это просто простой бот без какой-либо базы данных.   -  person kasravnd    schedule 11.08.2015
comment
Я имею в виду, что единственный API, который они предоставляют, - это HTTP, и я не думаю, что для него есть официальная оболочка python. Если вы разработали код, преобразующий JSON в объекты Python, вы могли бы просто изменить свойство from на from_user или другое имя при синтаксическом анализе данных. Нет необходимости придерживаться их соглашения, если это не работает в Python. Но у меня плохое предчувствие, что я неправильно понимаю проблему.   -  person Anonymous    schedule 11.08.2015
comment
@Anonymous Как я и думал, это подняло AttributeError: 'Message' object has no attribute 'from'.   -  person kasravnd    schedule 11.08.2015
comment
Я не имею дела с каким-либо файлом JSON, я просто хочу делать то, что я объяснил в вопросе.   -  person kasravnd    schedule 11.08.2015
comment
Вы должны были упомянуть об этом в вопросе. Поскольку вы используете библиотеку, а не необработанный API, вместо этого посмотрите документацию библиотеки (или исходный код). Как и ожидалось, автор библиотеки переименовал атрибут from в from_user. Так что просто используйте это.   -  person Anonymous    schedule 11.08.2015
comment
@ Анонимный Да, большое вам спасибо. Поскольку я не знаком с миром Telegram, я пропустил эту простую вещь. Не могли бы вы оставить свой комментарий в качестве ответа?   -  person kasravnd    schedule 11.08.2015


Ответы (1)


Поскольку было выяснено, что вы используете python-telegram-bot, решение простое. Автор библиотеки переименовал в Несовместимый с Python from атрибут from_user. Так что просто сделайте:

user = bot.getUpdates()[-1].from_user
person Anonymous    schedule 10.08.2015