Feat: started menu command and admin field

This commit is contained in:
2024-12-28 11:50:40 +03:00
parent a5d708383a
commit 5d6310e5a4
8 changed files with 32 additions and 21 deletions

1
.dockerignore Normal file
View File

@@ -0,0 +1 @@
__pycache__

View File

@@ -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))

View File

@@ -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)

View File

@@ -1 +1,2 @@
from nwxraybot.handlers.hello import HelloHandler
from nwxraybot.handlers.menu import MenuHandler

View File

@@ -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("Пользователь не найден, обратитесь к админу!")

View File

@@ -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:

View File

@@ -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()

7
run.sh
View File

@@ -1,7 +0,0 @@
#!/bin/sh
set -e
export $(grep -E -v '^#' .env | xargs)
docker stack deploy -c docker-compose.yml nwxraybot