diff --git a/daemons/bot.py b/daemons/bot.py index 417c253..61bbbc4 100644 --- a/daemons/bot.py +++ b/daemons/bot.py @@ -3,10 +3,17 @@ import os import telebot from telebot.types import Message +from helpers.mongo import mongo bot = telebot.TeleBot(os.getenv("TELEGRAM_TOKEN")) +@bot.message_handler(commands=['start']) +def on_start(message: Message): + mongo.users_collection.delete_many({"chat_id": message.chat.id}) + do_action(message) + + @bot.message_handler() def do_action(message: Message): from helpers.answer import answer diff --git a/daemons/fetch.py b/daemons/fetch.py index 5b24566..8c63806 100644 --- a/daemons/fetch.py +++ b/daemons/fetch.py @@ -1,11 +1,11 @@ import datetime +import logging from time import sleep from helpers import now, User from helpers.models import UserSchema from helpers.mongo import mongo from helpers.ruz import ruz -from settings import MOSCOW_TIMEZONE def fetch_schedule_for_user(user: User): @@ -72,11 +72,11 @@ def delete_old(): def fetch(): while True: - print("fetch start") + logging.info("fetch start") begin = datetime.datetime.now() process() end = datetime.datetime.now() - print('fetch finished') - print("time elapsed", (end - begin).total_seconds()) + logging.info('fetch finished') + logging.info("time elapsed", (end - begin).total_seconds()) delete_old() sleep(60 * 5) diff --git a/daemons/notify.py b/daemons/notify.py index 0ecc56e..3f543ce 100644 --- a/daemons/notify.py +++ b/daemons/notify.py @@ -1,10 +1,11 @@ import datetime +import logging from time import sleep from telebot.apihelper import ApiTelegramException from daemons.bot import bot -from helpers import now, get_next_daily_notify_time +from helpers import now from helpers.models import UserSchema from helpers.mongo import mongo from helpers.ruz import ruz @@ -55,10 +56,10 @@ def process(): def notify(): while True: - print("notify start") + logging.info("notify start") begin = datetime.datetime.now() process() end = datetime.datetime.now() - print('notify finished') - print("time elapsed", (end - begin).total_seconds()) + logging.info('notify finished') + logging.info("time elapsed", (end - begin).total_seconds()) sleep(60) diff --git a/entrypoint.py b/entrypoint.py index 4f56b50..8b7c5ce 100644 --- a/entrypoint.py +++ b/entrypoint.py @@ -1,23 +1,27 @@ +import logging.config import sys +import settings from daemons.api import api from daemons.bot import bot from daemons.fetch import fetch from daemons.notify import notify + +logging.config.dictConfig(settings.logging_config) arg = sys.argv[-1] if arg == "bot": - print("bot is starting") + logging.info("bot is starting") bot.polling() elif arg == "fetch": - print("fetch is starting") + logging.info("fetch is starting") fetch() elif arg == "notify": - print("notify is starting") + logging.info("notify is starting") notify() elif arg == "api": - print("api is starting") + logging.info("api is starting") api() else: raise ValueError(f"Unknown param {arg}") diff --git a/helpers/answer.py b/helpers/answer.py index f4b11d0..ef2bdad 100644 --- a/helpers/answer.py +++ b/helpers/answer.py @@ -1,11 +1,8 @@ -import datetime - -import pytz from telebot.types import Message from daemons.bot import bot from daemons.fetch import fetch_schedule_for_user -from helpers import now, get_next_daily_notify_time +from helpers import get_next_daily_notify_time from helpers.keyboards import main_keyboard, notify_keyboard, yes_no_keyboard, again_keyboard, groups_keyboard, \ no_daily_notify, student_or_teacher_keyboard, campus_keyboard from helpers.models import UserSchema, User diff --git a/helpers/models.py b/helpers/models.py index 1793a9d..d2e6d48 100644 --- a/helpers/models.py +++ b/helpers/models.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from typing import Optional import marshmallow_dataclass -from marshmallow import EXCLUDE, pre_load +from marshmallow import EXCLUDE @dataclass diff --git a/helpers/mongo.py b/helpers/mongo.py index 4e444d5..33b95ce 100644 --- a/helpers/mongo.py +++ b/helpers/mongo.py @@ -1,5 +1,4 @@ import datetime -import zoneinfo from functools import cached_property import pymongo diff --git a/helpers/ruz.py b/helpers/ruz.py index 6be5987..04af103 100644 --- a/helpers/ruz.py +++ b/helpers/ruz.py @@ -1,4 +1,5 @@ import datetime +import logging from requests import get @@ -52,7 +53,8 @@ class RUZ: try: data = data.json() except: - print(data.content) + logging.info("Json ignored, data content is") + logging.info(data.content) return None formatted_data = [ { diff --git a/settings.py b/settings.py index bef9bc6..5d045df 100644 --- a/settings.py +++ b/settings.py @@ -1,4 +1,5 @@ import os +import sys import zoneinfo MONGO_USER = os.getenv("MONGO_USER", "mongo") @@ -8,3 +9,19 @@ DEBUG = os.getenv("DEBUG", "true") == "true" RUZ_API = "https://ruz.hse.ru/api/" MOSCOW_TIMEZONE = zoneinfo.ZoneInfo("Europe/Moscow") + +logging_config = { + 'version': 1, + 'disable_existing_loggers': False, + 'handlers': { + 'console': { + 'level': 'INFO', + 'class': 'logging.StreamHandler', + 'stream': sys.stdout + } + }, + 'root': { + 'handlers': ['console'], + 'level': 'INFO' + } +}