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)