Fix parsing phone and add redis storage for FSM in telegram bot
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
from aiogram import types
|
||||
from aiogram.enums import MessageOriginType, ParseMode
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from pydantic_core import PydanticCustomError
|
||||
from pydantic_extra_types.phone_numbers import PhoneNumber
|
||||
|
||||
from birthday_pool_bot.dto import (
|
||||
PaymentData,
|
||||
@@ -27,7 +25,7 @@ from .states import (
|
||||
SetProfileNameState,
|
||||
SetProfilePhoneState,
|
||||
)
|
||||
from .utils import get_telegram_user_full_name, parse_date
|
||||
from .utils import get_telegram_user_full_name, parse_date, parse_phone
|
||||
|
||||
|
||||
async def fallback_message_handler(
|
||||
@@ -114,12 +112,10 @@ async def set_profile_phone_message_handler(
|
||||
await state.set_state(SetProfilePhoneState.WAITING_FOR_PHONE)
|
||||
return
|
||||
|
||||
phone_number = message.contact.phone_number
|
||||
try:
|
||||
PhoneNumber._validate(phone_number, None)
|
||||
except PydanticCustomError:
|
||||
phone_number = parse_phone(text=message.contact.phone_number)
|
||||
if phone_number is None:
|
||||
await message.reply(
|
||||
text="Некорректный номер телефон, попробуйте ещё раз",
|
||||
text="Некорректный номер телефона, попробуйте ещё раз",
|
||||
)
|
||||
await state.set_state(SetProfilePhoneState.WAITING_FOR_PHONE)
|
||||
return
|
||||
@@ -146,7 +142,7 @@ async def set_profile_birthdate_message_handler(
|
||||
user: User,
|
||||
users_repository: UsersRepository,
|
||||
):
|
||||
birthday = parse_date(message=message)
|
||||
birthday = parse_date(text=message.text)
|
||||
if birthday is None:
|
||||
await logic.ask_profile_birthdate(message=message)
|
||||
await state.set_state(SetProfileBirthdayState.WAITING_FOR_DATE)
|
||||
@@ -182,9 +178,8 @@ async def set_profile_gift_payment_phone_message_handler(
|
||||
await state.set_state(SetProfileGiftPaymentDataState.WAITING_FOR_PHONE)
|
||||
return
|
||||
|
||||
try:
|
||||
PhoneNumber._validate(phone_number, None)
|
||||
except PydanticCustomError:
|
||||
phone_number = parse_phone(text=phone_number)
|
||||
if phone_number is None:
|
||||
await message.reply(
|
||||
text="Некорректный номер телефон, попробуйте ещё раз",
|
||||
)
|
||||
@@ -371,10 +366,8 @@ async def set_new_subscription_user_message_handler(
|
||||
telegram_id=user_telegram_id,
|
||||
)
|
||||
elif message.text:
|
||||
user_phone = message.text
|
||||
try:
|
||||
PhoneNumber._validate(user_phone, None)
|
||||
except PydanticCustomError:
|
||||
user_phone = parse_phone(text=message.text)
|
||||
if user_phone is None:
|
||||
await logic.ask_new_subscription_user(message=message)
|
||||
await state.set_state(NewSubscriptionState.WAITING_FOR_PHONE)
|
||||
return
|
||||
@@ -437,7 +430,7 @@ async def set_new_subscription_user_birthday_message_handler(
|
||||
state: FSMContext,
|
||||
users_repository: UsersRepository,
|
||||
):
|
||||
birthday = parse_date(message=message)
|
||||
birthday = parse_date(text=message.text)
|
||||
if birthday is None:
|
||||
await logic.ask_new_subscription_user_birthday(message=message)
|
||||
await state.set_state(NewSubscriptionState.WAITING_FOR_DATE)
|
||||
@@ -798,9 +791,8 @@ async def set_new_subscription_pool_payment_phone_message_handler(
|
||||
await state.set_state(NewSubscriptionPoolState.WAITING_FOR_PAYMENT_PHONE)
|
||||
return
|
||||
|
||||
try:
|
||||
PhoneNumber._validate(phone_number, None)
|
||||
except PydanticCustomError:
|
||||
phone_number = parse_phone(text=phone_number)
|
||||
if phone_number is None:
|
||||
await message.reply(
|
||||
text="Некорректный номер телефона, попробуйте ещё раз",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user