Как сделать команду ежедневной?
Как сделать так чтобы пользователь мог запускать эту команду раз в 24 часа? У меня есть бот и в нём есть валюта, я знаю как выдавать пользователям монеты, но не знаю как ограничить эту функцию по времени, чтобы его можно было активировать лишь раз в 24 часа:
async def bonus(message: types.Message):
con = sqlite3.connect("users.db")
cur = con.cursor()
user = message.from_user.id
sql = "UPDATE ids SET balance = balance + ? \
WHERE user_id = ?"
val = (15, user)
cur.execute(sql, val)
con.commit()
await bot.send_message(message.chat.id, "Вам выдан бонус в качестве 15 монеток")
cur.close()
Желательно сделайте объяснение с кодом пожалуйста.
Ответы (1 шт):
Автор решения: vadimeche
→ Ссылка
Надеюсь достаточно подробно
from datetime import datetime #библиотека для работы с датами
#создаем класс для даты последнего полученя Бонуса
class previousDate:
#устанавливаем нереальную дату для инициализации
def __init__(self, Date = datetime(1900,1,1,1,1,1)):
self._Date = Date
# getter method
def get_Date(self):
return self._Date
# setter method
def set_Date(self, value):
self._Date = value
#создаем переменную для проверки доступа к Бонусу
def bonusAccess(prev, cur):
access = False
#сравниваем сколько прошло времени с последнего получения Бонуса
if (cur - prev._Date).total_seconds() > 86400: # 86400 секунд = 24 часа
access = True
#в случае, если прошло более 24 часов, устанавливаем новую последнюю дату
prev.set_Date(cur)
return access
prevDate = previousDate()
#отправляем в нашу переменную доступа объект последней даты и текущую дату
if (bonusAccess(prevDate, datetime.now())):
bonus()