import datetime from time import sleep from telebot.apihelper import ApiTelegramException from daemons.bot import bot from helpers import now from helpers.mongo import mongo def process(): for user in mongo.users_collection.find({"notify_minutes": {"$ne": None}, "hse_id": {"$ne": None}}): for lesson in mongo.lessons_collection.find({ "hse_user_id": user["hse_id"], "begin": {"$lte": now() + datetime.timedelta(minutes=user["notify_minutes"])}, "notified": False }): ans = "" ans += f"Аудитория: {lesson['building']}, {lesson['auditorium']}\n" ans += f"Начало: {lesson['begin'].strftime('%H:%M')}\n" ans += f"Конец: {lesson['end'].strftime('%H:%M')}\n" ans += f"Преподаватель: {(lesson['lecturer'] or 'Неизвестно')}\n" try: bot.send_message( user["chat_id"], "Уведомляю о занятиях!\n" + ans ) except ApiTelegramException: pass mongo.lessons_collection.update_one({"_id": lesson['_id']}, {"$set": {"notified": True}}) def notify(): while True: print("notify start") begin = datetime.datetime.now() process() end = datetime.datetime.now() print('notify finished') print("time elapsed", (end - begin).total_seconds()) sleep(60)