diff --git a/src/docbot/handlers/doctors/meet_doctor_handler.py b/src/docbot/handlers/doctors/meet_doctor_handler.py index f102792..4f587d8 100644 --- a/src/docbot/handlers/doctors/meet_doctor_handler.py +++ b/src/docbot/handlers/doctors/meet_doctor_handler.py @@ -1,31 +1,66 @@ -from telegram import Update +from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup from telegram.ext import ( ContextTypes, + CommandHandler, ConversationHandler, CallbackQueryHandler ) from docbot.handlers.utils.cancel_handler import get_cancel_handler -from docbot.handlers.start_handler import get_start_handler from core.logging import logger GET_TERMS_ACKNOWLEDGED = 1 -async def show_terms(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: - user_id = context.user_data['user_id'] +async def show_tariffs(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: + + keyboard_tariff = [ + [ + InlineKeyboardButton( + text="Тариф Новичок\n10 консультаций на месяц\n3990 рублей", + callback_data="tariff:ten:consultations", + url="https://pay.example.com/novice" + ), + InlineKeyboardButton( + text="Тариф Безлимит\n100 консультаций на месяц\n5990 рублей", + callback_data="tariff:hundred:consultations", + url="https://pay.example.com/beslimit" + ), + ] + ] await update.callback_query.message.reply_text( - text="Введите адрес вашей платёжной ссылки, пожалуйста." + text="Оплатить.\n\n" + "Юридический текст: для оказания услуг понадобятся ваши персональные данные:\n\n" + "фио, специальность и Telegram ID.\n\n" + "Нажимая кнопку оплатить, вы соглашаетесь с условиями оферты и обработкой персональных данных\n\n" + "на условиях Политики обработки перс данных (гиперссылка на оферту и Политику)", + reply_markup=InlineKeyboardMarkup(keyboard_tariff) ) - logger.info(f"Ask user {user_id} to enter their payment link.") return GET_TERMS_ACKNOWLEDGED -def meet_doctor_handler() -> ConversationHandler: + +async def send_notification(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: + + await update.callback_query.message.reply_text( + text="Спасибо вам за доверие!\n\n" + "Бот обработает платеж в течение 10-20 минут и предложит вам регистрацию.\n\n" + "Чек придет вам на почту, если что-то пойдет не так - пишите @help_milana_in_law" + ) + + return ConversationHandler.END + + +def meet_doctor_method() -> CommandHandler: + """Фабрика для регистрации в Application.""" + return CommandHandler("payment_methods", show_tariffs) + + +def get_meet_doctor_handler() -> ConversationHandler: return ConversationHandler( - entry_points=[get_start_handler()], + entry_points=[meet_doctor_method()], states={ GET_TERMS_ACKNOWLEDGED: [ - CallbackQueryHandler(show_terms, pattern="^(terms:aknowledged)$") + CallbackQueryHandler(send_notification, pattern="^(tariff)$") ], }, fallbacks=[get_cancel_handler()], diff --git a/src/docbot/handlers/start_handler.py b/src/docbot/handlers/start_handler.py index 320d788..705a141 100644 --- a/src/docbot/handlers/start_handler.py +++ b/src/docbot/handlers/start_handler.py @@ -9,16 +9,7 @@ async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: user_id = update.effective_user.id if await get_doctor(user_id): - - keyboard_accept = [ - [ - InlineKeyboardButton( - "Узнать условия", - callback_data="terms:aknowledged" - ), - ] - ] - + text = ( "👋 Добро пожаловать в DocBot!\n" "Привет, это первый сервис безопасных онлайн-консультаций Докбот.\n\n" @@ -26,11 +17,11 @@ async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: "Бот разработан медицинским юристом Миланой Бессоновой с соблюдением всех строгих законов о персональных данных.\n\n" "В отличии от других сервисов, Докбот реально защищает врача от избыточного сбора персональных данных, штрафов и возвратов.\n\n" "Хотите работать законно и безопасно?\n\n" - "Нажмите 'Узнать условия' чтобы ознакомиться с тарифами\n\n" + "Используйте команду /meet, чтобы ознакомиться с тарифами\n\n" "Юридический текст: для оказания услуг понадобятся ваши персональные данные: фио, специальность и Telegram ID.\n\n" "Ознакомиться с офертой и условиями Политики обработки перс данных можно тут (гиперссылка на оферту и Политику).\n\n" ) - await context.bot.send_message(chat_id=update.effective_chat.id, text=text, parse_mode=ParseMode.HTML, reply_markup=InlineKeyboardMarkup(keyboard_accept)) + await context.bot.send_message(chat_id=update.effective_chat.id, text=text, parse_mode=ParseMode.HTML) else: text = ( "👋 Добро пожаловать в DocBot!\n" diff --git a/src/docbot/main.py b/src/docbot/main.py index fac5ccf..739bda2 100644 --- a/src/docbot/main.py +++ b/src/docbot/main.py @@ -1,4 +1,5 @@ from core.logging import logger +from docbot.handlers.doctors.meet_doctor_handler import get_meet_doctor_handler from telegram.ext import ApplicationBuilder, PicklePersistence, ExtBot from core.config import settings @@ -39,6 +40,7 @@ def main(): app.add_handler(get_referral_handlers()) app.add_handler(get_verify_handler()) app.add_handler(get_add_payment_method_handler()) + app.add_handler(get_meet_doctor_handler()) app.add_handler(get_unknown_handler())