mirror of
https://github.com/koloideal/DutyLog.git
synced 2026-06-10 10:25:29 +03:00
commit
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user