init
This commit is contained in:
54
bot/handlers/start.py
Normal file
54
bot/handlers/start.py
Normal file
@@ -0,0 +1,54 @@
|
||||
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):
|
||||
|
||||
await clear_state(state = state, 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)
|
||||
|
||||
Reference in New Issue
Block a user