File size: 4,811 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
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 Other
from app.database.requests import check_user_registered
from app.config.config import ADMIN_ID

router = Router()

@router.message(F.text == 'Посмотреть каталог услуг')
async def get_catalog(message: Message):
    await message.answer('Спасибо за интерес! Вот наш перечень услуг. '
                         'Пожалуйста, выберите самую подходящую и нажмите на соответствующую кнопку, '
                         'чтобы узнать о ней подробнее:', reply_markup=await kb.user_keyboard_catalog())


@router.callback_query(F.data.startswith('service_'))
async def service_info(callback: CallbackQuery,state: FSMContext):
    await callback.answer('')
    service_info = await rq.get_service_info(callback.data.split('_')[1])
    service_string = f"Вот информация по выбранной Вами услуге: \n" \
                     f"Название: {service_info.service_name} \n" \
                     f"Описание: {service_info.service_description} \n" \
                     f"Цена: {service_info.service_price}. \n\n" \
                     f"Хотите ли Вы воспользоваться данной услугой?"
    await callback.answer('')
    await state.set_state(Other.user_pre_buy_service)
    await state.update_data(user_id=callback.from_user.id,
                            user_username=callback.from_user.username,
                            service=service_info.service_name)
    await callback.message.answer(service_string, reply_markup=kb.service_confirm)


@router.message(F.text == 'Да, связаться с Ниной')
async def admin_prompt(message: Message, state: FSMContext):
    await state.set_state(Other.user_buy_service)
    await message.answer('Напишите Нине и изложите Вашу проблему - это поможет ей лучше понять Ваш конкретный случай'
                         ' и сделать Ваш разговор более предметным!')


@router.message(Other.user_buy_service)
async def admin_connect(message: Message, state: FSMContext):
    data = await state.get_data()
    await message.bot.send_message(chat_id=ADMIN_ID[0],
                           text=f'Здравствуйте! Поступил новый заказ на услугу {data["service"]} от пользователя'
                                f' @{data["user_username"]}')
    await message.send_copy(ADMIN_ID[0])
    await message.answer('Спасибо за обращение! Скоро Нина свяжется с Вами в личных сообщениях для обсуждения '
                         'подробностей Вашего заказа!')
    await state.clear()
    registration_status = await check_user_registered(message.from_user.id)
    if registration_status:
        await message.answer('Вы можете вернуться в меню и посмотреть, какие еще услуги мы предлагаем!',
                         reply_markup=kb.user_back_wo_reg)
    elif not registration_status:
        await message.answer('Вы можете вернуться в меню и посмотреть, какие еще услуги мы предлагаем! Еще мы предлагаем '
                         'зарегистрироваться, чтобы получить возможность не пропускать всё самое важное, что происходит '
                         'в канале. Также регистрация позволит Вам вступить в СЕКРЕТНЫЙ КЛУБ пользователей, которые'
                         ' будут иметь доступ к специальным акциям и ВКУСНЫМ ЦЕНАМ для своих!',
                         reply_markup=kb.user_back)


@router.message(F.text == 'Нет, вернуться в меню')
async def np_service_return_to_menu(message: Message, state: FSMContext):
    await state.clear()
    await message.answer('Чем я могу Вам помочь?', reply_markup=kb.user_main)


@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)