diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +__pycache__ diff --git a/main.py b/main.py index 8c2a805..0178396 100644 --- a/main.py +++ b/main.py @@ -5,7 +5,7 @@ from sys import exit import uvloop from nwxraybot import NwXrayBot, Settings -from nwxraybot.handlers import HelloHandler +from nwxraybot.handlers import * from nwxraybot.models import User if __name__ == "__main__": @@ -21,5 +21,5 @@ if __name__ == "__main__": # Start bot bot = NwXrayBot(config.bot_token.get_secret_value()) - bot.include_routers(HelloHandler(bot)()) + bot.include_routers(HelloHandler(bot), MenuHandler(bot)) uvloop.run(bot.start(skip_updates=True)) diff --git a/nwxraybot/bot.py b/nwxraybot/bot.py index 6d558fa..173b319 100644 --- a/nwxraybot/bot.py +++ b/nwxraybot/bot.py @@ -1,14 +1,16 @@ from aiogram import Bot, Dispatcher, Router +from .meta import Handler + class NwXrayBot: def __init__(self, token: str) -> None: self.bot = Bot(token=token) self.dp = Dispatcher() - def include_routers(self, *routers: Router): + def include_routers(self, *routers: Handler): for router in routers: - self.dp.include_router(router) + self.dp.include_router(router()) async def start(self, skip_updates: bool = False) -> None: await self.dp.start_polling(self.bot, skip_updates=skip_updates) diff --git a/nwxraybot/handlers/__init__.py b/nwxraybot/handlers/__init__.py index a03cc0c..9a127c1 100644 --- a/nwxraybot/handlers/__init__.py +++ b/nwxraybot/handlers/__init__.py @@ -1 +1,2 @@ from nwxraybot.handlers.hello import HelloHandler +from nwxraybot.handlers.menu import MenuHandler diff --git a/nwxraybot/handlers/menu.py b/nwxraybot/handlers/menu.py new file mode 100644 index 0000000..660881c --- /dev/null +++ b/nwxraybot/handlers/menu.py @@ -0,0 +1,18 @@ +from aiogram import types +from aiogram.enums import ParseMode + +from nwxraybot.meta import Handler +from nwxraybot.models import User + + +class MenuHandler(Handler): + def __init__(self, bot) -> None: + super().__init__(bot) + + @self.router.message() + async def menu(message: types.Message) -> None: + user: User = User.select().where(User.id == message.from_user.id).first() + if user: + await message.reply(f"Ваша ссылка:\n```{user.url}```", parse_mode=ParseMode.MARKDOWN_V2) + else: + await message.reply("Пользователь не найден, обратитесь к админу!") diff --git a/nwxraybot/meta/router.py b/nwxraybot/meta/router.py index 9220bcd..c66f282 100644 --- a/nwxraybot/meta/router.py +++ b/nwxraybot/meta/router.py @@ -1,15 +1,13 @@ -from aiogram import Router - -from nwxraybot import NwXrayBot +from aiogram import Bot, Router class Handler: - bot: NwXrayBot + bot: Bot router: Router - def __init__(self, bot: NwXrayBot) -> None: - assert isinstance(bot, NwXrayBot) - self.bot = bot + def __init__(self, bot) -> None: + assert isinstance(bot.bot, Bot) + self.bot = bot.bot self.router = Router() def __call__(self) -> Router: diff --git a/nwxraybot/models/user.py b/nwxraybot/models/user.py index 67c1f5e..70d2eb1 100644 --- a/nwxraybot/models/user.py +++ b/nwxraybot/models/user.py @@ -12,9 +12,7 @@ class User(Model): name = CharField() url = CharField() time = DateTimeField(null=True) + admin = BooleanField(default=False) class Meta: database = db - - -User.create_table() diff --git a/run.sh b/run.sh deleted file mode 100644 index 75bd83f..0000000 --- a/run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -export $(grep -E -v '^#' .env | xargs) - -docker stack deploy -c docker-compose.yml nwxraybot \ No newline at end of file