Feat: started menu command and admin field
This commit is contained in:
1
.dockerignore
Normal file
1
.dockerignore
Normal file
@@ -0,0 +1 @@
|
||||
__pycache__
|
||||
4
main.py
4
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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
from nwxraybot.handlers.hello import HelloHandler
|
||||
from nwxraybot.handlers.menu import MenuHandler
|
||||
|
||||
18
nwxraybot/handlers/menu.py
Normal file
18
nwxraybot/handlers/menu.py
Normal 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("Пользователь не найден, обратитесь к админу!")
|
||||
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user