From 7d50cf95cff09d0642539eac60f5a0688f0ab671 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Mon, 13 Jan 2025 15:50:45 +0300 Subject: [PATCH] Feat: started working on the sub notification --- main.py | 6 +++++- nwxraybot/bot.py | 2 ++ nwxraybot/notifiers/__init__.py | 1 + nwxraybot/notifiers/subscription.py | 28 ++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 nwxraybot/notifiers/__init__.py create mode 100644 nwxraybot/notifiers/subscription.py diff --git a/main.py b/main.py index 876de98..779875b 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,10 @@ from nwxraybot import NwXrayBot, Settings from nwxraybot.handlers import * from nwxraybot.models import User + +async def main(bot: NwXrayBot, skip_updates: bool = True) -> None: + await asyncio.create_task(bot.start()) + if __name__ == "__main__": config = Settings() # Load config from .env logging.basicConfig(level=logging.DEBUG if config.debug else logging.INFO) @@ -27,4 +31,4 @@ if __name__ == "__main__": bot = NwXrayBot(config.bot_token.get_secret_value()) bot.include_routers(HelloHandler(), MenuHandler(), AdminHandler()) - asyncio.run(bot.start(skip_updates=True)) + asyncio.run(main(bot)) diff --git a/nwxraybot/bot.py b/nwxraybot/bot.py index b24ae5d..ff4d5e2 100644 --- a/nwxraybot/bot.py +++ b/nwxraybot/bot.py @@ -2,6 +2,7 @@ from aiogram import Bot, Dispatcher, Router from aiogram.utils.callback_answer import CallbackAnswerMiddleware from nwxraybot.middlewares import UserMiddleware +from nwxraybot.notifiers import setup_subscription_notifier from .meta import Handler @@ -12,6 +13,7 @@ class NwXrayBot: self.dp = Dispatcher() self.dp.message.middleware(UserMiddleware()) self.dp.message.middleware(CallbackAnswerMiddleware()) + setup_subscription_notifier(self.bot) def include_routers(self, *routers: Handler): for router in routers: diff --git a/nwxraybot/notifiers/__init__.py b/nwxraybot/notifiers/__init__.py new file mode 100644 index 0000000..db8e999 --- /dev/null +++ b/nwxraybot/notifiers/__init__.py @@ -0,0 +1 @@ +from nwxraybot.notifiers.subscription import setup_subscription_notifier diff --git a/nwxraybot/notifiers/subscription.py b/nwxraybot/notifiers/subscription.py new file mode 100644 index 0000000..1bdc326 --- /dev/null +++ b/nwxraybot/notifiers/subscription.py @@ -0,0 +1,28 @@ +import asyncio +import datetime +import logging + +from aiogram import Bot +from apscheduler.schedulers.asyncio import AsyncIOScheduler + +from nwxraybot.models import User + + +# TODO: This shit is not working +async def send_subscription_notification(bot: Bot, telegram_id: int) -> None: + logging.debug(f"Sending subscription notification to {telegram_id}") + + +async def check_subscription_status(bot: Bot): + logging.debug('Running notifier task') + await asyncio.sleep(1) + for user in User.select(): + if user.telegram_id != '': + await bot.send_message(user.telegram_id, 'Your subscription is active') + + +def setup_subscription_notifier(bot: Bot) -> None: + scheduler = AsyncIOScheduler(event_loop=asyncio.get_event_loop()) + scheduler.add_job(check_subscription_status, + 'interval', seconds=10, args=[bot]) + scheduler.start()