Задать вопрос

Как узнать user_id в Telegram Bot по нажатию на кнопку(InlineKeyboard)?

Добрый день. У меня имеется в боте имеется inline keyboard, по нажатию на кнопки идет запись/чтение значений из базы данных.
Для чтения/записи данных мне нужно знать user_id пользователя.
Как взять user_id пользователя нажавшего кнопку?

Сейчас я беру user_id шаг назад и сохраняю его в переменную, но сейчас когда моим ботом пользуется уже несколько человек - бывает эту переменную кто-то перезаписывает и человеку выдаются данные из БД совсем другого юзера...
Вообщем, как взять user_id пользователя, который нажал inline кнопку?

Вот как в этом коде, например:
@bot.callback_query_handler(func=lambda call: call.data in ['locs0', 'locs1', 'locs2'])
        def check_weather(c):
            global latitude, longitude
            if c.data == 'locs0':
                values = ({'user_id': idToSave})
                cursor.execute("SELECT latitude, longitude FROM locations WHERE user_id = %(user_id)s", values)
                lalo = cursor.fetchall()
                latitude = lalo[0][0]
                longitude = lalo[0][1]
                nextstep_check_weather(c)

узнать user_id? Чем заменить переменную idToSave?
  • Вопрос задан
  • 4904 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
В объекте CallbackQuery есть поле "from" - это объект User, который инициировал callback.
У User'а есть id - это и есть ваш chat_id.
Ответ написан
@Kt0T0
Поздновато как-то, вот как получать:

call.from_user.id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы