From c151fe78ced87a49dd843911dd2c27999f45ac0a Mon Sep 17 00:00:00 2001 From: kolo Date: Fri, 27 Feb 2026 19:59:39 +0300 Subject: [PATCH] update --- src/dutylog/application/__main__.py | 2 +- .../bot/user_dialogs/main_menu_dialog.py | 60 ++++++++++++++++++- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/src/dutylog/application/__main__.py b/src/dutylog/application/__main__.py index c767aaf..7614850 100644 --- a/src/dutylog/application/__main__.py +++ b/src/dutylog/application/__main__.py @@ -36,7 +36,7 @@ async def main(): dp.include_router(main_menu_dialog) setup_dialogs(dp) - setup_dishka(container, dp) + setup_dishka(container, dp, auto_inject=True) await dp.start_polling(bot) diff --git a/src/dutylog/application/bot/user_dialogs/main_menu_dialog.py b/src/dutylog/application/bot/user_dialogs/main_menu_dialog.py index bbaa286..7072d79 100644 --- a/src/dutylog/application/bot/user_dialogs/main_menu_dialog.py +++ b/src/dutylog/application/bot/user_dialogs/main_menu_dialog.py @@ -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 = "👑 Создатель" + elif is_admin: + greeting = "👨‍💼 Администратор" + else: + greeting = f"👋 Привет, {event_from_user.first_name}!" + + if not is_admin and not is_creator: + content = f""" +{greeting} + +⏰ Ваши часы дежурств + +
🟢 Неотработанные часы: {user.active_hours} ч +━━━━━━━━━━━━━━━ +🔴 Неактивные часы: {user.inactive_hours} ч
+""" + else: + content = f""" +{greeting} + +
📋 Панель управления
+ +Добро пожаловать в систему учета дежурств! +""" + + return {"content": content} + main_menu_dialog = Dialog( Window( - Const("Главное меню"), + Format("{content}"), state=MainMenuSG.main, + getter=get_main_menu_data, ), )