1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-03 00:03:13 +00:00
Lumi/data/Dailies.py

87 lines
2.3 KiB
Python
Raw Normal View History

2023-06-19 14:20:17 +00:00
import json
from datetime import datetime, timedelta
import pytz
2023-06-19 14:20:17 +00:00
2023-06-20 19:44:22 +00:00
from data.Currency import Currency
2023-06-19 14:20:17 +00:00
from db import database
with open("config/economy.json") as file:
2023-06-19 14:20:17 +00:00
json_data = json.load(file)
class Dailies:
def __init__(self, user_id):
2023-06-19 14:20:17 +00:00
self.user_id = user_id
self.amount = json_data["daily_reward"]
self.tz = pytz.timezone('US/Eastern')
data = Dailies.get_data(user_id)
if data[0] is not None:
self.claimed_at = datetime.fromisoformat(data[0])
else:
# set date as yesterday to pretend as a valid claimed_at.
self.claimed_at = datetime.now(tz=self.tz) - timedelta(days=2)
print(self.claimed_at)
self.streak = int(data[1])
def refresh(self):
if self.streak_check():
self.streak += 1
else:
self.streak = 1
self.claimed_at = datetime.now(tz=self.tz).isoformat()
2023-06-19 14:20:17 +00:00
query = """
INSERT INTO dailies (user_id, amount, claimed_at, streak)
2023-06-19 14:20:17 +00:00
VALUES (?, ?, ?, ?)
"""
values = (self.user_id, self.amount, self.claimed_at, self.streak)
database.execute_query(query, values)
2023-06-19 14:20:17 +00:00
2023-06-20 19:44:22 +00:00
cash = Currency(self.user_id)
cash.add_cash(self.amount)
cash.push()
def can_be_claimed(self):
if self.claimed_at is None:
return True
2023-06-19 14:20:17 +00:00
else:
time_now = datetime.now(tz=self.tz)
reset_time = time_now.replace(hour=7, minute=0, second=0, microsecond=0)
if time_now < reset_time:
reset_time -= timedelta(days=1)
if self.claimed_at < reset_time <= time_now:
return True
return False
def streak_check(self):
yesterday = datetime.now(tz=self.tz) - timedelta(days=1)
return self.claimed_at.date() == yesterday.date()
2023-06-19 14:20:17 +00:00
@staticmethod
def get_data(user_id):
2023-06-19 14:20:17 +00:00
query = """
SELECT claimed_at, streak
FROM dailies
2023-06-19 14:20:17 +00:00
WHERE id = (
SELECT MAX(id)
FROM dailies
WHERE user_id = ?
)
"""
try:
(claimed_at, streak) = database.select_query(query, (user_id,))[0]
except (IndexError, TypeError):
(claimed_at, streak) = None, 0
2023-06-19 14:20:17 +00:00
return claimed_at, streak