From e25b61a8eae3543dec95b288d1e32e04fef503b1 Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Sat, 7 Oct 2023 22:33:26 +0300 Subject: [PATCH] Add startup handler --- anymusicbot/__init__.py | 22 ++++++++++++++++++- anymusicbot/__main__.py | 4 ++++ anymusicbot/callbacks/__init__.py | 0 anymusicbot/callbacks/factories/__init__.py | 0 anymusicbot/common.py | 7 ++++++ anymusicbot/filters/__init__.py | 0 anymusicbot/handlers/__init__.py | 9 ++++++++ anymusicbot/handlers/initialize/__init__.py | 1 + .../handlers/initialize/initializer.py | 10 +++++++++ anymusicbot/keyboards/__init__.py | 0 anymusicbot/keyboards/inline/__init__.py | 0 anymusicbot/middlewares/__init__.py | 0 anymusicbot/modules/__init__.py | 0 anymusicbot/utils/__init__.py | 0 anymusicbot/utils/config/__init__.py | 4 ++++ anymusicbot/utils/config/_config.py | 22 +++++++++++++++++++ pyproject.toml | 1 + 17 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 anymusicbot/callbacks/__init__.py create mode 100644 anymusicbot/callbacks/factories/__init__.py create mode 100644 anymusicbot/common.py create mode 100644 anymusicbot/filters/__init__.py create mode 100644 anymusicbot/handlers/__init__.py create mode 100644 anymusicbot/handlers/initialize/__init__.py create mode 100644 anymusicbot/handlers/initialize/initializer.py create mode 100644 anymusicbot/keyboards/__init__.py create mode 100644 anymusicbot/keyboards/inline/__init__.py create mode 100644 anymusicbot/middlewares/__init__.py create mode 100644 anymusicbot/modules/__init__.py create mode 100644 anymusicbot/utils/__init__.py create mode 100644 anymusicbot/utils/config/__init__.py create mode 100644 anymusicbot/utils/config/_config.py diff --git a/anymusicbot/__init__.py b/anymusicbot/__init__.py index 2ae2839..ab42a3e 100644 --- a/anymusicbot/__init__.py +++ b/anymusicbot/__init__.py @@ -1 +1,21 @@ -pass +from rich import print + + +async def runner(): + from .common import dp, bot + + from . import handlers + + dp.include_router( + handlers.router + ) + + await bot.delete_webhook(drop_pending_updates=True) + await dp.start_polling(bot) + + +def main(): + import asyncio + + print('Starting...') + asyncio.run(runner()) diff --git a/anymusicbot/__main__.py b/anymusicbot/__main__.py index e69de29..c7c70d0 100644 --- a/anymusicbot/__main__.py +++ b/anymusicbot/__main__.py @@ -0,0 +1,4 @@ +from . import main + +if __name__ == '__main__': + main() diff --git a/anymusicbot/callbacks/__init__.py b/anymusicbot/callbacks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/callbacks/factories/__init__.py b/anymusicbot/callbacks/factories/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/common.py b/anymusicbot/common.py new file mode 100644 index 0000000..5146b5f --- /dev/null +++ b/anymusicbot/common.py @@ -0,0 +1,7 @@ +from aiogram import Bot, Dispatcher +from .utils.config import config + +bot = Bot(token=config.telegram.bot_token) +dp = Dispatcher() + +__all__ = ['bot', 'dp', 'config'] diff --git a/anymusicbot/filters/__init__.py b/anymusicbot/filters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/handlers/__init__.py b/anymusicbot/handlers/__init__.py new file mode 100644 index 0000000..74b3d52 --- /dev/null +++ b/anymusicbot/handlers/__init__.py @@ -0,0 +1,9 @@ +from aiogram import Router +from . import initialize + + +router = Router() + +router.include_routers( + initialize.router, +) diff --git a/anymusicbot/handlers/initialize/__init__.py b/anymusicbot/handlers/initialize/__init__.py new file mode 100644 index 0000000..938e9f5 --- /dev/null +++ b/anymusicbot/handlers/initialize/__init__.py @@ -0,0 +1 @@ +from .initializer import router diff --git a/anymusicbot/handlers/initialize/initializer.py b/anymusicbot/handlers/initialize/initializer.py new file mode 100644 index 0000000..629ce9e --- /dev/null +++ b/anymusicbot/handlers/initialize/initializer.py @@ -0,0 +1,10 @@ +from aiogram import Router, Bot +from rich import print + + +router = Router() + + +@router.startup() +async def startup(bot: Bot): + print(f'[green]Started as[/] @{(await bot.me()).username}') diff --git a/anymusicbot/keyboards/__init__.py b/anymusicbot/keyboards/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/keyboards/inline/__init__.py b/anymusicbot/keyboards/inline/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/middlewares/__init__.py b/anymusicbot/middlewares/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/modules/__init__.py b/anymusicbot/modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/utils/__init__.py b/anymusicbot/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anymusicbot/utils/config/__init__.py b/anymusicbot/utils/config/__init__.py new file mode 100644 index 0000000..c7cb2eb --- /dev/null +++ b/anymusicbot/utils/config/__init__.py @@ -0,0 +1,4 @@ +from ._config import Config + + +config = Config() diff --git a/anymusicbot/utils/config/_config.py b/anymusicbot/utils/config/_config.py new file mode 100644 index 0000000..fd6bbe2 --- /dev/null +++ b/anymusicbot/utils/config/_config.py @@ -0,0 +1,22 @@ +import tomllib + + +class Config(dict): + def __init__(self, _config: dict = None): + try: + if _config is None: + config = tomllib.load(open('config.toml', 'rb')) + + super().__init__(**config) + else: + super().__init__(**_config) + + except FileNotFoundError: + super().__init__() + + def __getattr__(self, item): + return ( + self.get(item) + if type(self.get(item)) is not dict + else Config(self.get(item)) + ) diff --git a/pyproject.toml b/pyproject.toml index 0e9465d..119c965 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ readme = "README.md" [tool.poetry.dependencies] python = "^3.11" aiogram = "^3.1.1" +rich = "^13.6.0" [build-system]