mirror of
https://github.com/olegvodyanov/docbot.git
synced 2026-02-02 02:45:46 +03:00
meet doctor logic
This commit is contained in:
parent
855fbf8d0e
commit
ed848bbbca
@ -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()],
|
||||
|
||||
@ -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 = (
|
||||
"👋 <b>Добро пожаловать в DocBot!</b>\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 = (
|
||||
"👋 <b>Добро пожаловать в DocBot!</b>\n"
|
||||
|
||||
@ -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())
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user