diff options
| author | Tolmachev Igor <me@igorek.dev> | 2026-03-23 00:21:18 +0300 |
|---|---|---|
| committer | Tolmachev Igor <me@igorek.dev> | 2026-03-23 00:21:18 +0300 |
| commit | ffee163d8206f0fb1315015e4c60248b68d459bc (patch) | |
| tree | e95f4eb2bb330f2223d00c80fa9e123263657a8e /handlers/user | |
| parent | bc7f486aa7b543a934f4cf23dc80a95f44afcb64 (diff) | |
| download | vpn_manager_bot-ffee163d8206f0fb1315015e4c60248b68d459bc.tar.gz vpn_manager_bot-ffee163d8206f0fb1315015e4c60248b68d459bc.zip | |
Add start, help and vpn_link commands
Diffstat (limited to 'handlers/user')
| -rw-r--r-- | handlers/user/__init__.py | 9 | ||||
| -rw-r--r-- | handlers/user/info.py | 77 | ||||
| -rw-r--r-- | handlers/user/vpn_link.py | 22 |
3 files changed, 108 insertions, 0 deletions
diff --git a/handlers/user/__init__.py b/handlers/user/__init__.py index 575982f..ac4c0a3 100644 --- a/handlers/user/__init__.py +++ b/handlers/user/__init__.py | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | from aiogram import Router | 1 | from aiogram import Router |
| 2 | 2 | ||
| 3 | # isort: off | ||
| 4 | from . import info | ||
| 5 | from . import vpn_link | ||
| 6 | # isort: on | ||
| 7 | |||
| 3 | router = Router(name="user") | 8 | router = Router(name="user") |
| 9 | router.include_routers( | ||
| 10 | info.router, | ||
| 11 | vpn_link.router, | ||
| 12 | ) | ||
diff --git a/handlers/user/info.py b/handlers/user/info.py new file mode 100644 index 0000000..9776e7e --- /dev/null +++ b/handlers/user/info.py | |||
| @@ -0,0 +1,77 @@ | |||
| 1 | from aiogram import Bot, Router | ||
| 2 | from aiogram.filters import Command | ||
| 3 | from aiogram.types import BotCommand, BotCommandScopeChat, Message | ||
| 4 | |||
| 5 | from models import User | ||
| 6 | |||
| 7 | router = Router(name="info") | ||
| 8 | |||
| 9 | COMMANDS = [ | ||
| 10 | BotCommand( | ||
| 11 | command="start", | ||
| 12 | description="Показать стартовое сообщение", | ||
| 13 | ), | ||
| 14 | BotCommand( | ||
| 15 | command="help", | ||
| 16 | description="Показать список доступных команд", | ||
| 17 | ), | ||
| 18 | BotCommand( | ||
| 19 | command="vpn_link", | ||
| 20 | description="Показать ссылку доступа к VPN", | ||
| 21 | ), | ||
| 22 | BotCommand( | ||
| 23 | command="announcements", | ||
| 24 | description="Показать анонсы", | ||
| 25 | ), | ||
| 26 | BotCommand( | ||
| 27 | command="invoices", | ||
| 28 | description="Показать счета на оплату", | ||
| 29 | ), | ||
| 30 | BotCommand( | ||
| 31 | command="payments", | ||
| 32 | description="Показать платежи", | ||
| 33 | ), | ||
| 34 | BotCommand( | ||
| 35 | command="suggest_user", | ||
| 36 | description="Предложить нового пользователя", | ||
| 37 | ), | ||
| 38 | ] | ||
| 39 | |||
| 40 | ADMIN_COMMANDS = COMMANDS + [ | ||
| 41 | BotCommand( | ||
| 42 | command="new_announcement", | ||
| 43 | description="Создать новый анонс", | ||
| 44 | ), | ||
| 45 | BotCommand( | ||
| 46 | command="new_invoice", | ||
| 47 | description="Создать новый счёт на оплату", | ||
| 48 | ), | ||
| 49 | BotCommand( | ||
| 50 | command="add_user", | ||
| 51 | description="Создать нового пользователя", | ||
| 52 | ), | ||
| 53 | BotCommand( | ||
| 54 | command="suggest_list", | ||
| 55 | description="Показать предложения новых пользователей", | ||
| 56 | ), | ||
| 57 | ] | ||
| 58 | |||
| 59 | |||
| 60 | @router.message(Command("start")) | ||
| 61 | async def start_command(msg: Message, bot: Bot, user: User) -> None: | ||
| 62 | await msg.answer( | ||
| 63 | "Добро пожаловать в бота для пользователей VPN.\n" | ||
| 64 | "Посмотреть список доступных команд: /help" | ||
| 65 | ) | ||
| 66 | |||
| 67 | await bot.set_my_commands( | ||
| 68 | ADMIN_COMMANDS if user.is_admin() else COMMANDS, | ||
| 69 | BotCommandScopeChat(chat_id=user.id), | ||
| 70 | ) | ||
| 71 | |||
| 72 | |||
| 73 | @router.message(Command("help")) | ||
| 74 | async def help_command(msg: Message, user: User) -> None: | ||
| 75 | commands = ADMIN_COMMANDS if user.is_admin() else COMMANDS | ||
| 76 | commands_text = "\n".join(f"/{c.command} - {c.description}" for c in commands) | ||
| 77 | await msg.answer(f"Список доступных команд:\n{commands_text}") | ||
diff --git a/handlers/user/vpn_link.py b/handlers/user/vpn_link.py new file mode 100644 index 0000000..88d2963 --- /dev/null +++ b/handlers/user/vpn_link.py | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | from aiogram import Router | ||
| 2 | from aiogram.filters import Command | ||
| 3 | from aiogram.types import Message | ||
| 4 | |||
| 5 | from models import User | ||
| 6 | |||
| 7 | router = Router(name="vpn_link") | ||
| 8 | |||
| 9 | |||
| 10 | @router.message(Command("vpn_link")) | ||
| 11 | async def vpn_link_command(msg: Message, user: User) -> None: | ||
| 12 | await msg.answer( | ||
| 13 | f"Ссылка для настройки VPN на ваших устройствах:\n{user.vpn_link}" | ||
| 14 | "\n\n" | ||
| 15 | "Пожалуйста не делитесь данной ссылкой с друзьями или знакомыми. " | ||
| 16 | "Данную ссылку разрешено предоставить только родным и близким " | ||
| 17 | "(Родители, Бабушка, Брат, Сестра и т.д.)" | ||
| 18 | "\n" | ||
| 19 | "Если ты вдруг хочешь предоставить VPN другу, то воспользуйся командой /suggest_user" | ||
| 20 | "\n\n" | ||
| 21 | "В противном случае я установлю лимит на количество устройств, а тебе это не нужно. " | ||
| 22 | ) | ||
