from aiogram import Router, F from aiogram.types import Message from aiogram.fsm.context import FSMContext from app.database import requests as rq from app.keyboards import user_keyboards as kb from app.states import LeadMagnetStates router = Router() @router.message(F.text == "Ввести кодовое слово") async def start_leadmagnet_input(message: Message, state: FSMContext): await state.set_state(LeadMagnetStates.waiting_for_keyword) await message.answer( "Пожалуйста, введите кодовое слово.\n" "Для возврата в меню напишите 'отмена'", reply_markup=kb.user_back ) @router.message(LeadMagnetStates.waiting_for_keyword) async def process_leadmagnet(message: Message, state: FSMContext): if message.text.lower() == 'отмена': await state.clear() await message.answer( "Возвращаемся в главное меню", reply_markup=kb.user_main ) return leadmagnet = await rq.get_leadmagnet_info(message.text) if not leadmagnet: await message.answer( "К сожалению, такое кодовое слово не найдено.\n" "Проверьте правильность написания или попробуйте другое слово.\n" "Для возврата в меню напишите 'отмена'" ) return if not leadmagnet.is_active: await message.answer( "К сожалению, это кодовое слово больше не активно.\n" "Попробуйте другое слово или вернитесь в меню, написав 'отмена'" ) return # Send leadmagnet content await message.answer(leadmagnet.content) # Clear state and offer registration if user is not registered await state.clear() user = await rq.get_user_info(message.from_user.id) if not user or not user.contact: await message.answer( "Хотите получать больше полезных материалов?\n" "Зарегистрируйтесь, чтобы не пропустить новые акции и предложения!", reply_markup=await kb.get_registration_keyboard() ) else: await message.answer( "Можете ввести другое кодовое слово или вернуться в меню", reply_markup=kb.leadmagnet_keyboard ) @router.message(F.text == "Вернуться в главное меню") async def return_to_main_menu(message: Message, state: FSMContext): await state.clear() await message.answer( "Возвращаемся в главное меню", reply_markup=kb.user_main )