Ключевое слово как атрибут при использовании Telegram API

В Telegram, когда пользователь нажимает кнопку, бот получает эту информацию в формате JSON:

'update':
{
    'callback_query':
    {
        'from':
        {
            'id':420220883
        }
    }
}

В этом объекте JSON есть дополнительная информация, но меня интересует только часть id.

Теперь, когда я хочу получить к нему доступ как update.callback_query.from.id, он, очевидно, выдает ошибку SyntaxError, поскольку from является ключевым словом Python.

Итак, мой вопрос; Как я могу использовать эту информацию?

Обратите внимание, что я пытался использовать его как словарь update['callback_query']['from']['id'], но он выдает странную ошибку.

введите здесь описание изображения


person Amir A. Shabani    schedule 02.03.2019    source источник
comment
То, что вы опубликовали, не является допустимым JSON (как с точки зрения недействительной структуры данных, так и с точки зрения не действительного JSON, а что-то вроде объекта python), поэтому невозможно сказать.   -  person roganjosh    schedule 02.03.2019
comment
Не перехватывайте исключение, дайте ему подняться, а затем опубликуйте трассировку стека. и какую библиотеку телеграмм вы используете?   -  person Mehrdad Pedramfar    schedule 02.03.2019


Ответы (2)


Опубликованная вами структура данных не является допустимым JSON или допустимым словарем. После преобразования его в действительный дикт вы можете легко получить «id»

data = {'update':
    {
        'callback_query':
            {
                'from':
                    {
                        'id': 420220883
                    }
            }
    }}

print(data['update']['callback_query']['from']['id'])

Выход

420220883
person balderman    schedule 02.03.2019
comment
Хорошо, но вы сделали огромные предположения о том, как этот фрагмент вписывается в фактический ответ. - person roganjosh; 02.03.2019
comment
Как я (и другие говорили), структура данных, которую вы опубликовали, не является ни JSON, ни dict, и я не думаю, что это ввод, который вы получаете от Telegram. - person balderman; 02.03.2019
comment
Ты же знаешь, что я не ОП, верно? Мой комментарий не о том, работает ли это на самом деле, а скорее о том, что вы искали ответ, который вы сейчас говорите мне (думая, что я ОП), что вы не можете знать, работает это или нет. Вы только подтвердили мое первоначальное утверждение о том, что вы только что сделали предположения. - person roganjosh; 02.03.2019
comment
roganjosh — Telegram не может отправить эту структуру данных. Это сломано. Вам не кажется, что это верное предположение? - person balderman; 02.03.2019
comment
Я не знаю, верное это предположение или нет. Мы оба согласны с тем, что было сделано предположение, но я согласен с тем, что в данном случае не стоит предлагать ответ, пока ввод не будет прояснен. - person roganjosh; 02.03.2019
comment
Как выясняется, проблема не имела ничего общего с этими предположениями. Я знаю, что вы еще не можете проголосовать за закрытие, но я бы просто пропустил такие вопросы, вместо того, чтобы тратить время на уточнение вещей на основе предположения. - person roganjosh; 02.03.2019

Я полагаю, мой вопрос дублируется!

Проблема была исправлена ​​автором библиотеки. Я должен был просто изменить from на from_user!

Я нашел ответ здесь.

person Amir A. Shabani    schedule 02.03.2019