Spaces:
Runtime error
Runtime error
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() | |
async def register_start(callback: CallbackQuery, state: FSMContext): | |
await state.set_state(Register.user_register_name) | |
await callback.message.answer('Как к вам обращаться?') | |
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( | |
'Выберите свой логин. Он должен быть уникальным!' | |
) | |
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('Укажите предпочтительный способ связи с вами') | |
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 | |
) | |
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) | |
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) | |
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) | |
async def register(callback: CallbackQuery): | |
await callback.answer("Возвращаемся в меню") | |
await callback.message.answer("Чем я могу Вам помочь?", reply_markup=kb.user_main) |