Не удается получить идентификатор пользователя ответного сообщения python-telegram-бот

#python #telegram #python-telegram-bot

Вопрос:

Я пытаюсь создать простого бота, который отключает пользователей, но у меня возникли некоторые проблемы с получением идентификатора пользователя в ответном сообщении.

Я не могу получить доступ к идентификатору пользователя, потому что библиотека использует from ключ, как:

 def mute_user(update, context):
    bot = context.bot
    print(update.message.reply_to_message.from.id)
 

Я не могу использовать ключ «от», потому что он зарезервирован, поэтому он выдает мне ошибку.

Если я удалю .from.id его , результат будет таким:

 [...] 'from': {'is_bot': False, 'username': '*****', 'first_name': '*****', 'id': 150*****}}
 

Как я могу получить доступ к этому идентификатору?

Комментарии:

1. Похоже from , это ключ в диктанте, так что вы пробовали что-то вроде data['from']['id'] ?

Ответ №1:

Я решил эту проблему, прочитав документацию по python-telegram-боту

https://python-telegram-bot.readthedocs.io/en/stable/telegram.message.html?выделите=телеграмма.Сообщение#телеграмма.Сообщение

Я использовал update.message.reply_to_message.from_user вместо update.message.reply_to_message.from

Ответ №2:

Не уверен, что это ответ на то, что вы ищете, но поскольку я вижу, что вы используете словари, скорее всего, вложенные словари, вот пример того, как получить ключи.

 user_dict = {
    'user1':{
        'is_bot': False,
        'first_name': "Bob",
        'username': '******',
        'id': '150'
    },
    'user2':{
        'is_bot': False,
        'first_name': "Joe",
        'username': '******',
        'id': '250'
    }
}

# ******** Search Record *******
usrnm = input("Enter username: ")
usr_id = input("Enter usrr id: ")

for usr in user_dict:
    u = user_dict[usr].get("Username")
    p = user_dict[usr].get("id")
    if usrnm != u and usr_id != p:
        continue
    else:
        print("found!")