56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
from aiogram import Router
|
|
from aiogram.filters import CommandStart
|
|
from aiogram.fsm.context import FSMContext
|
|
from aiogram.types import Message
|
|
from logging import getLogger
|
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
|
|
from ...main import QBotApp
|
|
from ...model.settings import Settings
|
|
from ...model.language import LanguageBase
|
|
from .navigation import clear_state
|
|
|
|
|
|
logger = getLogger(__name__)
|
|
router = Router()
|
|
|
|
|
|
@router.message(CommandStart())
|
|
async def start(message: Message, db_session: AsyncSession, app: QBotApp, state: FSMContext):
|
|
|
|
state_data = await state.get_data()
|
|
clear_state(state_data = state_data, clear_nav = True)
|
|
|
|
User = app.user_class
|
|
|
|
user = await User.get(session = db_session, id = message.from_user.id)
|
|
|
|
if not user:
|
|
msg_text = (await Settings.get(Settings.APP_STRINGS_WELCOME_P_NAME)).format(name = message.from_user.full_name)
|
|
|
|
try:
|
|
if message.from_user.language_code in [item.value for item in LanguageBase.all_members.values()]:
|
|
lang = LanguageBase(message.from_user.language_code)
|
|
user = await User.create(session = db_session,
|
|
obj_in = User(
|
|
id = message.from_user.id,
|
|
name = message.from_user.full_name,
|
|
lang = lang,
|
|
is_active = True),
|
|
commit = True)
|
|
except Exception as e:
|
|
|
|
logger.error("Error creating user", exc_info = True)
|
|
message.answer((await Settings.get(Settings.APP_STRINGS_INTERNAL_ERROR_P_ERROR)).format(error = str(e)))
|
|
|
|
return
|
|
|
|
else:
|
|
if user.is_active:
|
|
msg_text = (await Settings.get(Settings.APP_STRINGS_GREETING_P_NAME)).format(name = user.name)
|
|
else:
|
|
msg_text = (await Settings.get(Settings.APP_STRINGS_USER_BLOCKED_P_NAME)).format(name = user.name)
|
|
|
|
await message.answer(msg_text)
|
|
|