upd project structure
This commit is contained in:
73
src/qbot/bot/handlers/start.py
Normal file
73
src/qbot/bot/handlers/start.py
Normal file
@@ -0,0 +1,73 @@
|
||||
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 ...utils.main 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)
|
||||
else:
|
||||
lang = LanguageBase.EN
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user