Бот-адміністратор приватної психотерапевтичної практики «Wellbeing Therapy»
Технічний розбір Telegram-бота-адміністратора психотерапевтичної практики - запис, нагадування, кризовий захист і принцип «рішення приймає код, а не модель».
Опис
Telegram-бот, який працює адміністратором приватної практики психотерапевта (ОАЕ). Він спілкується з клієнтами та організовує запис на консультації: пропонує вільний час, приймає заявку, нагадує про сесію. Бот не дає психотерапевтичних порад - він лише веде розклад. Усі остаточні підтвердження робить сам терапевт.
Головна ідея, на якій тримається весь проєкт: бот - це підстраховка для людини, а не її заміна. Він знімає з терапевта рутину (листування про час, ведення календаря, нагадування), але рішення про людей лишаються за людиною.
Графік практики: Пн–Пт, 10:00–18:00; сеанс 50 хвилин + 10 хвилин буфера (записи погодинні, не впритул). Прийом: індивідуальні консультації, робота з парами, підлітки від 17 років.
Шлях запиту наочно: кризова перевірка йде найпершою; ШІ лише розпізнає намір, а всі рішення й дії з календарем виконує код; остаточно сеанс підтверджує людина.
Що бот уміє
- Спілкується різними мовами - відповідає тією мовою, якою написав клієнт (українська, англійська, російська).
- Показує вільний час - читає реальний календар терапевта й пропонує вільні слоти на обраний день.
- Записує на консультацію - збирає ім’я й контакт, створює попередній запис у календарі.
- Підтвердження одним дотиком - терапевт отримує заявку з кнопкою «Підтвердити»; щойно тисне, клієнт автоматично дізнається, що запис підтверджено.
- Скасування та перенесення - з правилом 24 годин (пізнє скасування оплачується); якщо в клієнта кілька записів, бот уточнює, який саме, за точною датою.
- Нагадує клієнту про сесію за 24 години.
- Щоранку звітує терапевту - о 9:00 надсилає список підтверджених сеансів на день.
- Кризовий захист - якщо в повідомленні є ознаки гострої загрози життю, бот миттєво видає екстрений текст із номерами невідкладної допомоги й сповіщає терапевта, не вступаючи в подальшу розмову.
- Захист персональних даних - при першому контакті питає згоду на обробку даних; клієнт будь-коли може переглянути (
/mydata) або видалити (/delete) свої дані. База щоночі резервно копіюється.
Технологічний стек
| Шар | Технологія | Призначення |
|---|---|---|
| Мова | Python 3.9 | Основна мова реалізації |
| Бот-фреймворк | python-telegram-bot==21.6 |
Telegram Bot API, обробники, інлайн-кнопки |
| Планувальник | [job-queue] (APScheduler) |
Фонові завдання за часом (нагадування, підсумок) |
| Модель ШІ | google-genai, модель gemini-flash-latest |
Розпізнавання наміру, озвучення фактів, кризовий класифікатор |
| Календар | google-api-python-client (сервісний акаунт) |
Читання вільних слотів, створення/зміна/видалення подій |
| База даних | sqlite3 (вбудована) |
Постійне сховище записів, історії, метаданих |
| Конфігурація | python-dotenv |
Секрети з файлу .env |
| Інфраструктура | Oracle Cloud E2.1.Micro, Oracle Linux 9 | Хостинг (системний час - UTC) |
| Служба | systemd |
Автозапуск, перезапуск, робота 24/7 |
Фонові завдання (планувальник)
| Завдання | Коли | Що робить | Захист від дублів |
|---|---|---|---|
| Нагадування | за ≤24 год до сесії | надсилає клієнту нагадування про підтверджений сеанс | прапорець reminded у записі |
| Ранковий підсумок | о 09:00 ОАЕ | надсилає терапевту список підтверджених сеансів на день | last_digest_date у meta |
Обидва завдання збудовані за принципом періодичної звірки з базою, а не «планування на конкретний момент». Це робить їх стійкими до перезапусків: після рестарту планувальник просто знову зазирає в базу, а прапорці «вже надіслано» лежать у SQLite. Якщо бот був вимкнений у момент події - наступний цикл надолужить.
Ключові принципи
- Рішення приймає код, а не модель ШІ. Модель лише розуміє, чого хоче клієнт; усі дії з календарем і всі перевірки виконує запрограмований код. Це не дає моделі «вигадати» неіснуючий запис чи виконати щось зайве.
- Людина в контурі. Бот приймає заявку, але остаточно підтверджує сеанс завжди терапевт - вручну.
- Безпека передусім. Кризовий захист перевіряється найпершим, ще до будь-якої іншої логіки. Конфіденційні дані клієнтів захищені правами доступу.
- Захист персональних даних. Бот запитує згоду перед збором даних, дозволяє клієнту переглянути (
/mydata) чи видалити (/delete) свої дані, зберігає їх лише в ОАЕ й щоночі робить захищену резервну копію - відповідно до місцевого закону про захист даних (PDPL). - Чесність формулювань. Бот ніколи не каже «зроблено», якщо дія насправді не відбулася в коді.
Документ описує проєкт станом на червень 2026 року.