@EugeneVKruglov

Как узнать и зафиксировать время, когда пользователь нажал inline-кнопку?

Существует ли более элегантный способ узнать время Телеграм, когда пользователь нажал inline-кнопку, кроме применяемого мной? Пока использую неуклюжую конструкцию:
msg = bot.send_message(callback.message.chat.id, 'Производится поиск...')
add_new_user_sequence(callback.message.chat.id, callback.from_user.id, msg.date, seq_name)

т.е. по нажатию инлайн-кнопки бот отправляет, а потом удаляет сообщение, а уже из этого сообщения извлекается время. При этом появляется и исчезает это сообщение, что немного раздражает.
Использовать time.time() не хочется, чтобы избежать конфликта с Телеграм при неправильно установленном времени на локальной машине пользователя.
Код:
def start_sequence_by_button(callback, seq_name):
    msg = bot.send_message(callback.message.chat.id, 'Производится поиск...')
    msg.from_user.id = get_btn_owner_id(callback)
    bot.delete_message(msg.chat.id, msg.id)
    delete_user_sequence(callback.message.chat.id, callback.from_user.id)
    add_new_user_sequence(callback.message.chat.id, callback.from_user.id, msg.date, seq_name)
    # нужно установить это время --> msg.date
    process_sequence(msg, 0, False)

@bot.callback_query_handler(func=lambda callback: callback.data.startswith('btn_find'))
def answer_callback(callback):
    if btn_is_not_correct(callback):
        return
    start_sequence_by_button(callback, seq_find)
  • Вопрос задан
  • 76 просмотров
Решения вопроса 3
deepblack
@deepblack Куратор тега Python
Использовать time.time() не хочется, чтобы избежать конфликта с Телеграм при неправильно установленном времени на локальной машине пользователя.


Когда это time.time() стало отдавать время на локальной машине пользователя?
Это время на сервере, на котором выполняется Python код (т.е. там где запущен твой бот).
Ответ написан
@w1sh
Во-первых, time.time() не будет конфликтовать с Телеграмом
Во-вторых, если ты боишься, что время тачки, на которой ты будешь хостить бота не будет совпадать с тем, что тебе нужно, то воспользуйся библиотеками, которые выводят НЕ системное время. Примеры можешь найти здесь
Ответ написан
Комментировать
@EugeneVKruglov Автор вопроса
Сделал тупо, но просто: после первого сообщения пользователя извлекаю из сообщения время Телеграм, определяю локальное время системы через time. time() и при необходимости ввожу поправку. Для абсолютного большинства задач вполне достаточно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
Использовать time.time() не хочется, чтобы избежать конфликта с Телеграм при неправильно установленном времени на локальной машине пользователя.

Тогда только спрашивать время у какого-то доверенного сервера, по NTP или иному протоколу.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы