Недавно столкнулся с проблемой, что объект message(если это не объект, то поправьте) не обновляется у меня, если пользователь ничего не отправляет боту.
В своем коде создал отдельный поток для уведомлений, и там я беру время пользователя через
unix_time = message.date
Он мне присылает время в юних и потом каждые допустим пол минуты я сравниваю время пользователя с установленным мои временем для получения уведомления, если условие верно, то отправляется напоминание. Но в откладке я заметил, что время всегда старое, так как я понял, что объект message обновляется только после действия пользователя и поэтому время не будет обновляться в нем…
UPD: добавлю пример кода
import time
import datetime
setTimeH = 11
setTimeM = 30
@bot.message_handler()
def day1(message):
#Не стал вписывать код перед запуском потока, чтобы не заполнять лишний раз код
Notify = threading.Thread(target=notify, args=(message, )
Notify.start()
#Функция, которая запускается в отдельном потоке
def notify(message):
while true:
unix_time = message.date
user_time = datetime.datetime.fromtimestamp(unix_time).strftime('%Y-%m-%d %H:%M:%S')
user_timeH = datetime.datetime.fromtimestamp(unix_time).strftime('%H')
user_timeM = datetime.datetime.fromtimestamp(unix_time).strftime('%M')
print(user_time) #Выводит к примеру 2024-12-06 22:02:30 и после каждый раз значение одно и тоже, а это значит условие в операторе if не будет выполняться, так как объект message не обновляется
if int(user_timeH) and int(user_timeM) == setTimeH and setTimeM:
bot.send_message(message.chat.id, "text”)
time.Sleep(60)
else:
time.Sleep(30)
time.Sleep(30)