Critical bug fix of schedule events in a separate thread.

This commit is contained in:
Rykov7
2023-10-29 14:37:16 +03:00
parent 1bac7420e9
commit e57657c6e4
+13 -7
View File
@@ -1,22 +1,26 @@
""" Schedule holidays. """ """ Schedule holidays. """
from schedule import repeat, every, get_jobs, run_pending from schedule import repeat, every, get_jobs, run_pending
import time import time
from threading import Thread from threading import Thread
from datetime import datetime as dt from datetime import datetime as dt
import csv import csv
from .config import PYTHONCHATRU, bot from .config import PYTHONCHATRU, TOKEN
from . import report from . import report
from telebot import TeleBot
# We need synchronous instance of bot here as we use synchronous library 'schedule' in a separate thread.
bot = TeleBot(TOKEN, "HTML", disable_web_page_preview=True, allow_sending_without_reply=True)
def scheduler(): def scheduler():
"""Main loop of schedule library."""
while True: while True:
run_pending() run_pending()
time.sleep(300) time.sleep(60)
@repeat(every().day.at("07:00"), PYTHONCHATRU, None) @repeat(every().day.at("07:00"), PYTHONCHATRU, None)
async def remind(chat_to_repeat, today): def remind(chat_to_repeat, today):
"""Remind holiday.""" """Remind holiday."""
if not today: if not today:
today = dt.today() today = dt.today()
@@ -33,18 +37,20 @@ async def remind(chat_to_repeat, today):
if date.year != 1000: if date.year != 1000:
age = today.year - date.year age = today.year - date.year
notification += f"\n\n🥳 <i>{age}-ая годовщина</i>" notification += f"\n\n🥳 <i>{age}-ая годовщина</i>"
await bot.send_message(chat_to_repeat, notification) bot.send_message(chat_to_repeat, notification)
@repeat(every().day.at("06:00"), PYTHONCHATRU) @repeat(every().day.at("06:00"), PYTHONCHATRU)
async def stat_report(chat_to_repeat): def stat_report(chat_to_repeat):
"""Everyday group statistic info."""
rep = report.create_report_text(PYTHONCHATRU) rep = report.create_report_text(PYTHONCHATRU)
if rep: if rep:
await bot.send_message(chat_to_repeat, rep) bot.send_message(chat_to_repeat, rep)
report.reset_report_stats(PYTHONCHATRU) report.reset_report_stats(PYTHONCHATRU)
def print_get_jobs(): def print_get_jobs():
"""Get jobs from schedule and prepare a formatted info text."""
all_jobs = get_jobs() all_jobs = get_jobs()
text = f"<b>{len(all_jobs)} jobs</b>\ text = f"<b>{len(all_jobs)} jobs</b>\
\n..:: {dt.now().strftime('%d-%m-%Y %H:%M:%S')} ::..\n" \n..:: {dt.now().strftime('%d-%m-%Y %H:%M:%S')} ::..\n"