diff --git a/main.py b/main.py index 41445a5..876de98 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,4 @@ +import asyncio import logging from sys import exit @@ -18,7 +19,12 @@ if __name__ == "__main__": User.create_table() + asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) + loop = uvloop.new_event_loop() + asyncio.set_event_loop(loop) + # Start bot bot = NwXrayBot(config.bot_token.get_secret_value()) bot.include_routers(HelloHandler(), MenuHandler(), AdminHandler()) - uvloop.run(bot.start(skip_updates=True)) + + asyncio.run(bot.start(skip_updates=True)) diff --git a/nwxraybot/handlers/hello.py b/nwxraybot/handlers/hello.py index 506a1d1..4e41b0b 100644 --- a/nwxraybot/handlers/hello.py +++ b/nwxraybot/handlers/hello.py @@ -50,5 +50,10 @@ class HelloHandler(Handler): @self.router.callback_query(F.data == 'update') async def update_data(callback: CallbackQuery): - await callback.message.edit_text(get_subscription_info(callback.from_user.id), - reply_markup=self.__non_admin_main_menu(), parse_mode=ParseMode.MARKDOWN) + text = get_subscription_info(callback.from_user.id) + try: + await callback.message.edit_text(get_subscription_info(callback.from_user.id), + reply_markup=self.__non_admin_main_menu(), parse_mode=ParseMode.MARKDOWN) + except: + await callback.answer('Обновлений нет', show_alert=True) + return diff --git a/nwxraybot/utils.py b/nwxraybot/utils.py index 6bc4a5d..35a9c42 100644 --- a/nwxraybot/utils.py +++ b/nwxraybot/utils.py @@ -10,7 +10,7 @@ def get_subscription_info(telegram_id: str) -> str: user: User = User.select().where(User.telegram_id == telegram_id).first() if user is None: logging.error("[get_subscription_info]: User is not found") - return "Ошибка\!" + return "Ошибка!" date: Optional[datetime] = user.time date_str = "" if date is None else f'До: { date.strftime("%d.%m.%Y %H:%M")} МСК\n' diff --git a/poetry.lock b/poetry.lock index 40127c9..2ed186f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "aiofiles" @@ -185,6 +185,33 @@ files = [ {file = "ansicon-1.89.0.tar.gz", hash = "sha256:e4d039def5768a47e4afec8e89e83ec3ae5a26bf00ad851f914d1240b444d2b1"}, ] +[[package]] +name = "apscheduler" +version = "3.11.0" +description = "In-process task scheduler with Cron-like capabilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "APScheduler-3.11.0-py3-none-any.whl", hash = "sha256:fc134ca32e50f5eadcc4938e3a4545ab19131435e851abb40b34d63d5141c6da"}, + {file = "apscheduler-3.11.0.tar.gz", hash = "sha256:4c622d250b0955a65d5d0eb91c33e6d43fd879834bf541e0a18661ae60460133"}, +] + +[package.dependencies] +tzlocal = ">=3.0" + +[package.extras] +doc = ["packaging", "sphinx", "sphinx-rtd-theme (>=1.3.0)"] +etcd = ["etcd3", "protobuf (<=3.21.0)"] +gevent = ["gevent"] +mongodb = ["pymongo (>=3.0)"] +redis = ["redis (>=3.0)"] +rethinkdb = ["rethinkdb (>=2.4.0)"] +sqlalchemy = ["sqlalchemy (>=1.4)"] +test = ["APScheduler[etcd,mongodb,redis,rethinkdb,sqlalchemy,tornado,zookeeper]", "PySide6", "anyio (>=4.5.2)", "gevent", "pytest", "pytz", "twisted"] +tornado = ["tornado (>=4.3)"] +twisted = ["twisted"] +zookeeper = ["kazoo"] + [[package]] name = "attrs" version = "24.3.0" @@ -882,6 +909,34 @@ files = [ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "tzdata" +version = "2024.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, +] + +[[package]] +name = "tzlocal" +version = "5.2" +description = "tzinfo object for the local timezone" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, + {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, +] + +[package.dependencies] +tzdata = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] + [[package]] name = "uvloop" version = "0.21.0" @@ -1085,4 +1140,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.13" -content-hash = "9b455b4a27b4038063fad5d023c0d2af06d7277a9b7ee02cc2d366e458f195b4" +content-hash = "57654abddded59b21f10fc936a3f75bf5897bc0fd9ebcc81da38a5699d7ca90a" diff --git a/pyproject.toml b/pyproject.toml index c50a0dc..72ec579 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ peewee = "^3.17.8" uvloop = "^0.21.0" jurigged = "^0.6.0" psycopg2-binary = "^2.9.10" +apscheduler = "^3.11.0" [build-system]