Spaces:
Runtime error
Runtime error
File size: 5,354 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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
from aiogram import Router, F
from aiogram.types import Message, CallbackQuery
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 Register
from app.database.requests import check_login_unique
router = Router()
@router.callback_query(F.data == "user_register")
async def register_start(callback: CallbackQuery, state: FSMContext):
await state.set_state(Register.user_register_name)
await callback.message.answer('Как к вам обращаться?')
@router.message(Register.user_register_name)
async def register_name(message: Message, state: FSMContext):
await state.update_data(name=message.text)
await state.set_state(Register.user_register_login)
await message.answer(
'Выберите свой логин. Он должен быть уникальным!'
)
@router.message(Register.user_register_login)
async def register_name(message: Message, state: FSMContext):
if not await check_login_unique(message.text):
await message.answer('Этот логин уже занят. Пожалуйста, выберите другой.')
return
await state.update_data(login=message.text)
await state.set_state(Register.user_register_contact)
await message.answer('Укажите предпочтительный способ связи с вами')
@router.message(Register.user_register_contact)
async def register_contact(message: Message, state: FSMContext):
await state.update_data(contact=message.text)
await state.set_state(Register.user_register_subscribe)
await message.answer(
'Хотите получать уведомления о новинках и специальных предложениях?',
reply_markup=kb.yes_no_keyboard
)
@router.message(Register.user_register_subscribe)
async def register_subscribe(message: Message, state: FSMContext):
await state.update_data(include_in_broadcast=message.text)
if message.text == 'Да':
await message.answer('Спасибо за регистрацию! Добро пожаловать в наш тайный клуб клиентов!')
elif message.text == 'Нет':
await message.answer('Спасибо за регистрацию! Если Вы измените свое решение, Вы всегда можете подписаться '
'на наши секретные материалы, воспользовавшись ботом!')
data = await state.get_data()
await state.set_state(Register.user_register_check)
await message.answer(f'Давайте проверим еще раз:'
f'\n - Ваше имя - {data["name"]},'
f'\n - Ваш логин - {data["login"]},'
f'\n - Ваш контакт - {data["contact"]}, '
f'\n - Подписаны ли Вы на секретную рассылку: {data["include_in_broadcast"]} '
f'\n\n Всё верно?', reply_markup=kb.yes_no_keyboard)
@router.message(Register.user_register_check)
async def register_check(message: Message, state: FSMContext):
if message.text == 'Да':
data = await state.get_data()
await rq.user_register(message.from_user.id, data["name"], data["login"], data["contact"], data["include_in_broadcast"])
await message.answer('Ура! Спасибо, что Вы с нами! Хотите ли Вы сделать что-то еще?', reply_markup=kb.user_main)
await state.clear()
if message.text == 'Нет':
await state.set_state(Register.user_register_correct)
await message.answer('Упс :( Что Вы хотите исправить?', reply_markup=kb.register_correct_keyboard)
@router.message(Register.user_register_correct)
async def choose_the_correction(message: Message, state: FSMContext):
if message.text == 'Имя':
await state.set_state(Register.user_register_name)
await message.answer('Как к Вам обращаться?')
elif message.text == 'Логин':
await state.set_state(Register.user_register_login)
await message.answer('Выберите свой логин. Он должен быть уникальным!')
elif message.text == 'Контакт':
await state.set_state(Register.user_register_contact)
await message.answer('Оставьте контакт, с которого Вам будет удобнее всего общаться с нами')
elif message.text == 'Статус подписки на рассылку':
await state.set_state(Register.user_register_subscribe)
await message.answer('Хотите ли Вы получать от нас уведомления о новинках, акциях и даже '
'СЕКРЕТНЫХ РАСПРОДАЖАХ ДЛЯ СВОИХ?', reply_markup=kb.yes_no_keyboard)
@router.callback_query(F.data == "user_to_main")
async def register(callback: CallbackQuery):
await callback.answer("Возвращаемся в меню")
await callback.message.answer("Чем я могу Вам помочь?", reply_markup=kb.user_main) |