This commit is contained in:
2026-02-28 09:48:37 +03:00
parent c57a40b09a
commit 44182955aa
15 changed files with 414 additions and 21 deletions
+14 -10
View File
@@ -4,8 +4,9 @@ from aiogram.types import Message
from aiogram_dialog import DialogManager, StartMode
from dishka import FromDishka
from dutylog.application.bot.user_dialogs.states import MainMenuSG, AdminMenuSG
from dutylog.application.bot.user_dialogs.states import MainMenuSG, AdminMenuSG, RegistrationSG
from dutylog.infrastructure.database.repositories.users_repository import UsersRepository
from dutylog.infrastructure.database.repositories.residents_repository import ResidentsRepository
from dutylog.infrastructure.utils.config import Config
router = Router()
@@ -16,20 +17,23 @@ async def start_handler(
message: Message,
dialog_manager: DialogManager,
users_repository: FromDishka[UsersRepository],
residents_repository: FromDishka[ResidentsRepository],
config: FromDishka[Config],
):
assert message.from_user is not None
user = await users_repository.get_or_create_user(
user_id=message.from_user.id,
username=message.from_user.username,
first_name=message.from_user.first_name,
last_name=message.from_user.last_name,
)
user = await users_repository.get_user_by_id(message.from_user.id)
is_creator = message.from_user.id == config.bot.creator_id
is_admin = user.is_admin
is_admin = user.is_admin if user else False
if is_admin or is_creator:
await dialog_manager.start(AdminMenuSG.main, mode=StartMode.RESET_STACK)
else:
await dialog_manager.start(MainMenuSG.main, mode=StartMode.RESET_STACK)
return
if user:
resident = await residents_repository.get_resident_by_user_id(message.from_user.id)
if resident:
await dialog_manager.start(MainMenuSG.main, mode=StartMode.RESET_STACK)
return
await dialog_manager.start(RegistrationSG.select_floor, mode=StartMode.RESET_STACK)