@ -38,7 +38,7 @@ last_bot_message_id = {}
# Авторизация и доступ к таблице
scope = [ " https://spreadsheets.google.com/feeds " , " https://www.googleapis.com/auth/drive " ]
credentials = ServiceAccountCredentials . from_json_keyfile_name ( " botforclinic-436512-0c117dd103a8.json " , scope )
credentials = ServiceAccountCredentials . from_json_keyfile_name ( r " C: \ Users \ ilyac \ PycharmProjects \ Bot_Polimed \ botforclinic-436512-0c117dd103a8.json " , scope )
client = gspread . authorize ( credentials )
sheet = client . open ( " Пациенты клиники " ) . sheet1 # Открытие таблицы, используйте название вашей таблицы
@ -85,7 +85,9 @@ logging.basicConfig(level=logging.INFO)
# Главное меню
main_menu = InlineKeyboardMarkup ( row_width = 2 ) . add (
InlineKeyboardButton ( " 🌍 Контакты " , callback_data = " menu_contacts " ) ,
InlineKeyboardButton ( " 📞 Связь " , callback_data = " menu_contact " )
InlineKeyboardButton ( " 📞 Связь " , callback_data = " menu_contact " ) ,
InlineKeyboardButton ( " ✅ Добавить пациента " , callback_data = " menu_registration " ) ,
InlineKeyboardButton ( " 🏥 О Клинике " , callback_data = " o_klinike " )
)
# Подменю "контакты"
@ -93,15 +95,27 @@ contacts_menu = InlineKeyboardMarkup(row_width=1).add(
InlineKeyboardButton ( " ▶️ Назад " , callback_data = " main_menu " )
)
# Подменю "О Клинике"
Klinik_o = InlineKeyboardMarkup ( row_width = 1 ) . add (
InlineKeyboardButton ( " ▶️ Назад " , callback_data = " main_menu " )
)
# Меню связь
contact_menu = InlineKeyboardMarkup ( row_width = 1 ) . add (
InlineKeyboardButton ( " 💬 Отправить сообщение администратору Клиники " , callback_data = " contact_administrator " ) ,
InlineKeyboardButton ( " 🛎 Заказать звонок от администратора Клиники " , callback_data = " order_call " ) ,
InlineKeyboardButton ( " ▶️ Назад " , callback_data = " main_menu " ) ,
InlineKeyboardButton ( " ▶️ Назад " , callback_data = " main_menu " )
)
# # Меню Добавить пациента
# registration_menu = InlineKeyboardMarkup(row_width=1).add(
# InlineKeyboardButton(text="Заполнить форму",web_app=WebAppInfo(url=form_url), callback_data="form_regist"),
# InlineKeyboardButton("▶️ Назад", callback_data="main_menu")
# )
administrator_contact = InlineKeyboardMarkup ( row_width = 1 ) . add (
InlineKeyboardButton ( " ✍🏼 Написать сообщение " , callback_data = " message_admin " ) ,
InlineKeyboardButton ( " ▶️ Назад " , callback_data = " menu_contact " ) ,
@ -133,6 +147,10 @@ whatsapp = InlineKeyboardMarkup(row_width=1).add(
# Обработка нажатий на инлайн-кнопки
@dp . callback_query_handler ( lambda c : c . data . startswith ( " menu_ " ) or c . data == " main_menu " )
async def handle_main_menu ( call : types . CallbackQuery ) :
user_id = call . from_user . id
# Генерируем ссылку с user_id
form_url = f " https://tgbotpolimed.pirogov.ai/?user_id= { user_id } "
if call . data == " main_menu " :
await call . message . edit_text ( " В настоящее время я, как Ваш виртуальный помощник, активно развиваюсь. "
" В ближайшее время у меня появятся новые функции и возможности. "
@ -164,6 +182,68 @@ async def handle_main_menu(call: types.CallbackQuery):
" Присоединяйтесь к нашему каналу новостей в <a href= ' https://t.me/permlor ' >Telegram</a>. " , reply_markup = contacts_menu , parse_mode = " HTML " )
elif call . data == " menu_contact " :
await call . message . edit_text ( " Выберите способ связи " , reply_markup = contact_menu )
elif call . data == " menu_registration " :
await call . message . edit_text ( " Обращаем Ваше внимание, что добавить можно только тех пациентов, которые ранее уже посещали нашу клинику. \n "
" Для ввода данных, пожалуйста, заполните форму, нажав на кнопку ниже: ' Заполнить форму ' \n "
" После заполнения формы вернитесь к боту и нажмите на кнопку ниже: ' Проверить данные ' " , reply_markup = InlineKeyboardMarkup ( row_width = 1 ) . add ( InlineKeyboardButton ( text = " Заполнить форму " , web_app = WebAppInfo ( url = form_url ) ) ,
InlineKeyboardButton ( text = " Проверить данные " , callback_data = " check_verification " ) ,
InlineKeyboardButton ( " ▶️ Назад " , callback_data = " main_menu " ) ) )
# Обработка нажатия на "Запись на исследование"
@dp . callback_query_handler ( lambda c : c . data == " form_regist " )
async def handle_call_menu ( call : types . CallbackQuery ) :
await call . message . edit_text ( " После того как Вы заполните форму, нажмите на кнопку ниже для проверки данных. \n "
" Если Вы хотите начать общение с ботом заново, нажмите /start. " , reply_markup = InlineKeyboardMarkup ( ) . add ( InlineKeyboardButton (
text = " Проверить данные " ,
callback_data = " check_verification "
)
)
)
# Обработка нажатия на "Запись на исследование"
@dp . callback_query_handler ( lambda c : c . data == " o_klinike " )
async def klinik_inf ( call : types . CallbackQuery ) :
await call . message . edit_text ( " <b>Добро пожаловать в специализированную ЛОР-клинику им. проф.Е.Н. Оленевой!</b> 🎉🤗 \n \n "
" С 2007 года мы заботимся о здоровье наших пациентов, предоставляя высококачественные медицинские услуги. \n \n "
" ✨ <b>Наши преимущества</b> \n "
" 🔹Команда из 47 профессиональных специалистов, включая 5 кандидатов медицинских наук и 1 доктора медицинских наук \n "
" 🔹Комплексный подход к лечению с учетом индивидуальных особенностей каждого пациента \n "
" 🔹Высокое качество первичной диагностики \n "
" 🔹Оснащение клиники современным оборудованием экспертного класса \n "
" 🔹Прием пациентов всех возрастных категорий \n \n "
" 💼<b>Наши услуги</b> \n "
" 🔹<u>Прием специалистов:</u> ЛОР-врачи, сурдологи, отоневрологи (вестибулологи), фониатр, пульмонологи, аллергологи-иммунологи \n "
" 🔹<u>Диагностика:</u> эндоскопическая диагностика, аудиометрия, тимпанометрия, ОАЭ, УЗИ, ЭКГ, КТ, КСП \n "
" 🔹<u>Терапия:</u> ФДТ, АСИТ-терапия, галотерапия \n "
" 🔹<u>Хирургия:</u> малоинвазивные ЛОР-операции \n "
" 🔹<u>Слухопротезирование:</u> диагностика слуха, подбор слуховых аппаратов \n \n "
" 🏢 <b>Наши клиники</b> \n "
" 🔹Клиника ухо,горло, нос им. проф. Е.Н. Оленевой \n "
" 🔹Клиника лечения кашля и аллергии им. проф. Е.Н. Оленевой \n "
" 🔹Центр диагностики и реабилитации им. проф. Е.Н. Оленевой \n \n "
" <b>Работаем 7 дней в неделю для вашего удобства!</b> \n \n "
" 🕙 <b>Часы работы</b> \n "
" Пн-пт: 9:00 – 21:00 \n "
" Сб-вс: 9:00 – 19:00 \n "
" ❗️ Каждый 4-ый четверг месяца клиника работает до 17:00 \n \n "
" 📍 <b>Наши адреса</b> \n "
" г. Пермь, ул. Клары Цеткин, 9 \n "
" г. Пермь, ул. Газеты Звезда, 31А \n \n "
" 📧clinic-lor@mail.ru \n \n \n "
" <b>Будьте здоровы вместе с нами</b>❣️ " , reply_markup = Klinik_o , parse_mode = ' HTML ' )
# Обработка нажатия на "Запись на исследование"
@ -171,6 +251,9 @@ async def handle_main_menu(call: types.CallbackQuery):
async def handle_call_menu ( call : types . CallbackQuery ) :
await call . message . edit_text ( " 💬 Для отправки сообщения администратору Клиники нажмите кнопку ниже ' Написать сообщение ' . " , reply_markup = administrator_contact )
# Обработка нажатия на "Запись на исследование"
@dp . callback_query_handler ( lambda c : c . data == " order_call " )
async def handle_admin_call_menu ( call : types . CallbackQuery ) :
@ -389,7 +472,7 @@ async def handle_start(message: types.Message, state: FSMContext):
await state . storage . reset_data ( user = message . from_user . id ) # Удаляет все данные пользователя в FSM хранилище
# Отправляем фото
with open ( " s-blob-v1-IMAGE-tdNCrEv8Ldo.png " , " rb " ) as photo :
with open ( r " C: \ Users \ ilyac \ PycharmProjects \ Bot_Polimed \ s-blob-v1-IMAGE-tdNCrEv8Ldo.png " , " rb " ) as photo :
await bot . send_photo (
chat_id = message . from_user . id ,
photo = photo ,