From 09cd36d5ba049963322a0d6977407036bc457201 Mon Sep 17 00:00:00 2001 From: Profitroll <47523801+profitrollgame@users.noreply.github.com> Date: Sat, 10 Dec 2022 15:52:34 +0100 Subject: [PATCH] Scheduler refactor --- modules/birthdays.py | 18 ------------------ modules/scheduled.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 18 deletions(-) delete mode 100644 modules/birthdays.py create mode 100644 modules/scheduled.py diff --git a/modules/birthdays.py b/modules/birthdays.py deleted file mode 100644 index 04963d9..0000000 --- a/modules/birthdays.py +++ /dev/null @@ -1,18 +0,0 @@ -from datetime import datetime -from os import fsdecode, listdir, sep -from modules.utils import configGet, jsonLoad, locale -from dateutil.relativedelta import relativedelta - - -def check_birthdays(app): - for user_file in listdir(f"{configGet('data', 'locations')}{sep}users{sep}"): - filename = fsdecode(f"{configGet('data', 'locations')}{sep}users{sep}{user_file}") - if filename.endswith(".json"): - user = jsonLoad(filename) - if isinstance(user["application"]["2"], str): - try: - if ".".join([((user["application"]["2"]).split("."))[0], ((user["application"]["2"]).split("."))[1]]) == datetime.now().strftime("%d.%m"): - tg_user = app.get_users(int(user_file.replace(".json", ""))) - app.send_message( configGet("admin_group"), locale("birthday", "message").format(str(tg_user.first_name), str(tg_user.username), str(relativedelta(datetime.now(), datetime.strptime(user["application"]["2"], '%d.%m.%Y')).years)) ) - except AttributeError: - continue \ No newline at end of file diff --git a/modules/scheduled.py b/modules/scheduled.py new file mode 100644 index 0000000..a194f09 --- /dev/null +++ b/modules/scheduled.py @@ -0,0 +1,35 @@ +from apscheduler.schedulers.background import BackgroundScheduler +from datetime import datetime +from os import fsdecode, listdir, sep +from app import app +from modules.utils import configGet, jsonLoad, locale, logWrite +from dateutil.relativedelta import relativedelta +from modules.database import col_applications + +scheduler = BackgroundScheduler() + +# for user_file in listdir(f"{configGet('data', 'locations')}{sep}users{sep}"): +# filename = fsdecode(f"{configGet('data', 'locations')}{sep}users{sep}{user_file}") +# if filename.endswith(".json"): +# user = jsonLoad(filename) +# if isinstance(user["application"]["2"], str): +# try: +# if ".".join([((user["application"]["2"]).split("."))[0], ((user["application"]["2"]).split("."))[1]]) == datetime.now().strftime("%d.%m"): +# tg_user = await app.get_users(int(user_file.replace(".json", ""))) +# await app.send_message( configGet("admin_group"), locale("birthday", "message").format(str(tg_user.first_name), str(tg_user.username), str(relativedelta(datetime.now(), datetime.strptime(user["application"]["2"], '%d.%m.%Y')).years)) ) +# except AttributeError: +# continue + +if configGet("enabled", "scheduler", "birthdays"): + @scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "birthdays")) + async def check_birthdays(): + for entry in col_applications.find({"2": datetime.now().strftime("%d.%m.%Y")}): + tg_user = await app.get_users(entry["user"]) + await app.send_message( configGet("admin_group"), locale("birthday", "message").format(str(tg_user.first_name), str(tg_user.username), str(relativedelta(datetime.now(), datetime.strptime(entry["2"], '%d.%m.%Y')).years)) ) # type: ignore + logWrite(f"Notified admins about {entry['user']}'s birthday") + logWrite("Birthdays check performed") + +if configGet("enabled", "scheduler", "sponsorships"): + @scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "sponsorships")) + async def check_sponsors(): + logWrite("Sponsorships check performed") \ No newline at end of file