Spaces:
Runtime error
Runtime error
File size: 2,940 Bytes
339f372 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
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
) |