From ffee163d8206f0fb1315015e4c60248b68d459bc Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Mon, 23 Mar 2026 00:21:18 +0300 Subject: Add start, help and vpn_link commands --- handlers/user/__init__.py | 9 ++++++ handlers/user/info.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++ handlers/user/vpn_link.py | 22 ++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 handlers/user/info.py create mode 100644 handlers/user/vpn_link.py (limited to 'handlers/user') 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 @@ from aiogram import Router +# isort: off +from . import info +from . import vpn_link +# isort: on + router = Router(name="user") +router.include_routers( + info.router, + vpn_link.router, +) 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 @@ +from aiogram import Bot, Router +from aiogram.filters import Command +from aiogram.types import BotCommand, BotCommandScopeChat, Message + +from models import User + +router = Router(name="info") + +COMMANDS = [ + BotCommand( + command="start", + description="Показать стартовое сообщение", + ), + BotCommand( + command="help", + description="Показать список доступных команд", + ), + BotCommand( + command="vpn_link", + description="Показать ссылку доступа к VPN", + ), + BotCommand( + command="announcements", + description="Показать анонсы", + ), + BotCommand( + command="invoices", + description="Показать счета на оплату", + ), + BotCommand( + command="payments", + description="Показать платежи", + ), + BotCommand( + command="suggest_user", + description="Предложить нового пользователя", + ), +] + +ADMIN_COMMANDS = COMMANDS + [ + BotCommand( + command="new_announcement", + description="Создать новый анонс", + ), + BotCommand( + command="new_invoice", + description="Создать новый счёт на оплату", + ), + BotCommand( + command="add_user", + description="Создать нового пользователя", + ), + BotCommand( + command="suggest_list", + description="Показать предложения новых пользователей", + ), +] + + +@router.message(Command("start")) +async def start_command(msg: Message, bot: Bot, user: User) -> None: + await msg.answer( + "Добро пожаловать в бота для пользователей VPN.\n" + "Посмотреть список доступных команд: /help" + ) + + await bot.set_my_commands( + ADMIN_COMMANDS if user.is_admin() else COMMANDS, + BotCommandScopeChat(chat_id=user.id), + ) + + +@router.message(Command("help")) +async def help_command(msg: Message, user: User) -> None: + commands = ADMIN_COMMANDS if user.is_admin() else COMMANDS + commands_text = "\n".join(f"/{c.command} - {c.description}" for c in commands) + 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 @@ +from aiogram import Router +from aiogram.filters import Command +from aiogram.types import Message + +from models import User + +router = Router(name="vpn_link") + + +@router.message(Command("vpn_link")) +async def vpn_link_command(msg: Message, user: User) -> None: + await msg.answer( + f"Ссылка для настройки VPN на ваших устройствах:\n{user.vpn_link}" + "\n\n" + "Пожалуйста не делитесь данной ссылкой с друзьями или знакомыми. " + "Данную ссылку разрешено предоставить только родным и близким " + "(Родители, Бабушка, Брат, Сестра и т.д.)" + "\n" + "Если ты вдруг хочешь предоставить VPN другу, то воспользуйся командой /suggest_user" + "\n\n" + "В противном случае я установлю лимит на количество устройств, а тебе это не нужно. " + ) -- cgit v1.3