helpy_botik / app /handlers /user /leadmagnets.py
Zlovoblachko's picture
Add application file
339f372
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
)