-добавил выбор мастера;

-расширил FSM новым состоянием master;
-добавил новую клавиатуру masters.py;
-изменил сценарий записи;
-доработал окно подтверждения записи;
-расширил структуру хранения бронирований.
This commit is contained in:
grigorij
2026-06-13 20:01:26 +04:00
parent 9282c1bbfb
commit 8d95ad3931
4 changed files with 67 additions and 1 deletions
+36 -1
View File
@@ -5,7 +5,7 @@ from aiogram.fsm.context import FSMContext
from aiogram.filters import StateFilter
from aiogram.types import Message, CallbackQuery
from app.keyboards.services import get_services_keyboard
from app.keyboards.masters import get_masters_keyboard
from app.states.booking import BookingState
from app.services.booking_service import create_booking
from app.keyboards.menu import menu, cancel_menu
@@ -59,9 +59,42 @@ async def choose_service(
service=service_name
)
await state.set_state(
BookingState.master
)
await callback.message.edit_text(
"👤 Выберите специалиста:",
reply_markup=get_masters_keyboard()
)
await callback.answer()
#выбор мастера
@router.callback_query(
StateFilter(BookingState.master),
F.data.startswith("master_")
)
async def choose_master(
callback: CallbackQuery,
state: FSMContext
):
masters = {
"master_anna": "Анна",
"master_maria": "Мария",
"master_alex": "Алексей"
}
master_name = masters[callback.data]
await state.update_data(
master=master_name
)
await state.set_state(
BookingState.date
)
await callback.message.edit_text(
"📅 Выберите дату:",
reply_markup=get_dates_keyboard()
@@ -127,6 +160,7 @@ async def choose_time(
f"📋 Проверьте запись:\n\n"
f"💆 Услуга: {data['service']}\n"
f"📅 Дата: {data['date']}\n"
f"👤 Мастер:{data['master']}\n"
f"🕒 Время: {selected_time}",
reply_markup=get_confirm_booking_keyboard()
)
@@ -149,6 +183,7 @@ async def confirm_booking_callback(
user_id=callback.from_user.id,
service=data["service"],
date=data["date"],
master=data["master"],
time=data["time"]
)
+28
View File
@@ -0,0 +1,28 @@
from aiogram.types import InlineKeyboardMarkup
from aiogram.types import InlineKeyboardButton
def get_masters_keyboard():
return InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="👩 Анна",
callback_data="master_anna"
)
],
[
InlineKeyboardButton(
text="👩 Мария",
callback_data="master_maria"
)
],
[
InlineKeyboardButton(
text="👨 Алексей",
callback_data="master_alex"
)
]
]
)
+2
View File
@@ -5,12 +5,14 @@ def create_booking(
user_id: int,
service: str,
date: str,
master:str,
time: str
):
booking = {
"user_id": user_id,
"service": service,
"date": date,
"master": master,
"time": time,
"status": "active"
}
+1
View File
@@ -2,6 +2,7 @@ from aiogram.fsm.state import StatesGroup, State
class BookingState(StatesGroup):
service = State()
master = State()
date = State()
time = State()
confirm = State()