This commit is contained in:
2026-02-27 19:59:39 +03:00
parent 7385fb09c0
commit c151fe78ce
2 changed files with 58 additions and 4 deletions
@@ -1,11 +1,65 @@
from aiogram_dialog import Dialog, Window
from aiogram_dialog.widgets.text import Const
from aiogram.types import User
from aiogram_dialog import Dialog, Window, DialogManager
from aiogram_dialog.widgets.text import Format
from dishka import FromDishka
from dishka.integrations.aiogram_dialog import inject
from dutylog.application.bot.user_dialogs.states import MainMenuSG
from dutylog.infrastructure.database.repositories.users_repository import UsersRepository
from dutylog.infrastructure.utils.config import Config
@inject
async def get_main_menu_data(
dialog_manager: DialogManager,
event_from_user: User,
users_repository: FromDishka[UsersRepository],
config: FromDishka[Config],
**kwargs,
):
user = await users_repository.get_or_create_user(
user_id=event_from_user.id,
username=event_from_user.username,
first_name=event_from_user.first_name,
last_name=event_from_user.last_name,
)
is_creator = event_from_user.id == config.bot.creator_id
is_admin = user.is_admin
if is_creator:
greeting = "👑 <b>Создатель</b>"
elif is_admin:
greeting = "👨‍💼 <b>Администратор</b>"
else:
greeting = f"👋 <b>Привет, {event_from_user.first_name}!</b>"
if not is_admin and not is_creator:
content = f"""
{greeting}
⏰ <b>Ваши часы дежурств</b>
<blockquote>🟢 <b>Неотработанные часы:</b> <code>{user.active_hours}</code> ч
━━━━━━━━━━━━━━━
🔴 Неактивные часы: <code>{user.inactive_hours}</code> ч</blockquote>
"""
else:
content = f"""
{greeting}
<blockquote>📋 <b>Панель управления</b></blockquote>
Добро пожаловать в систему учета дежурств!
"""
return {"content": content}
main_menu_dialog = Dialog(
Window(
Const("Главное меню"),
Format("{content}"),
state=MainMenuSG.main,
getter=get_main_menu_data,
),
)