54 lines
2.6 KiB
Python
54 lines
2.6 KiB
Python
import re
|
||
from datetime import datetime
|
||
|
||
from aiogram.enums import ParseMode
|
||
from aiogram.filters import Command
|
||
from aiogram.types import Message
|
||
|
||
from nwxraybot import get_code
|
||
from nwxraybot.meta import Handler
|
||
from nwxraybot.middlewares import AdminMiddleware
|
||
from nwxraybot.models import User
|
||
|
||
|
||
class AdminHandler(Handler):
|
||
def __init__(self) -> None:
|
||
super().__init__()
|
||
|
||
self.router.message.middleware(AdminMiddleware())
|
||
|
||
@self.router.message(Command('adduser'))
|
||
async def add_user(message: Message):
|
||
mask = r"^(?P<name>[a-zA-Z0-9]+)\s(?P<url>[^\s]+)($|\s(?P<date>[0-9]{2}\.[0-9]{2}\.[0-9]{4})\s(?P<time>[0-9]{2}\:[0-9]{2})$)"
|
||
text = message.text.replace('/adduser ', '')
|
||
match = re.match(mask, text)
|
||
if match is None:
|
||
await message.reply('Вы ввели команду в неверном формате. Вводите в формате:\n``` /adduser name vless://.... 01.01.1970 00:00```', parse_mode=ParseMode.MARKDOWN)
|
||
return
|
||
user_dict = match.groupdict()
|
||
date = None
|
||
if user_dict['date']:
|
||
date = datetime.strptime(f"{user_dict['date']} {
|
||
user_dict['time']}", "%d.%m.%Y %H:%M")
|
||
code = get_code()
|
||
new_user = User(
|
||
name=user_dict['name'], url=user_dict['url'], time=date, code=code)
|
||
new_user.save()
|
||
await message.answer(f'Пользователь создан. Вот его ссылка для доступа:\n`https://t.me/nwproxybot?start={code}`', parse_mode=ParseMode.MARKDOWN)
|
||
|
||
@self.router.message(Command('updateuser'))
|
||
async def update_user(message: Message):
|
||
mask = r"^(?P<name>[a-zA-Z0-9]+)\s(?P<date>[0-9]{2}\.[0-9]{2}\.[0-9]{4})\s(?P<time>[0-9]{2}\:[0-9]{2})$"
|
||
text = message.text.replace('/updateuser ', '')
|
||
match = re.match(mask, text)
|
||
if match is None:
|
||
await message.reply('Вы ввели команду в неверном формате. Вводите в формате:\n``` /updateuser name 01.01.1970 00:00```', parse_mode=ParseMode.MARKDOWN)
|
||
return
|
||
user_dict = match.groupdict()
|
||
date = datetime.strptime(f"{user_dict['date']} {
|
||
user_dict['time']}", "%d.%m.%Y %H:%M")
|
||
query = User.update(time=date).where(
|
||
User.name == user_dict['name'])
|
||
query.execute()
|
||
await message.answer('Информация о пользователе обновлена.')
|