Телеграм бот ЭмБио - это виртуальный помощник, который всегда будет на связи с пациентом. Он поддержит, напомнит о процедуре, поделится полезными материалами и ответит на вопросы, предоставляя пользователю ощущение заботы и внимания.
-
Подготовка окружения:
- Токен и другие конфигурационные данные для запуска бота должны быть прописаны в скрытом
.envфайле. - Все необходимые библиотеки указаны в файле
requirements.txt.
- Токен и другие конфигурационные данные для запуска бота должны быть прописаны в скрытом
-
Создание файла
.env: В корневой директории проекта создайте файл.envи добавьте в него следующие строки:TOKEN=your_telegram_bot_token SUPABASE_URL=your_supabase_url SUPABASE_KEY=your_supabase_key URL=your_crm_url USERNAME_CRM=your_crm_username PASSWORD_CRM=your_crm_password REDIS_HOST= your_redis_host REDIS_PORT= your_redis_port REDIS_URL= your_redis_url REDIS_PASSWORD= your_redis_password SUPPORT_GROUP_ID = id_support_tg_group -
Устанока зависимостей:
pip install -r requirements.txt
-
Запуск бота
python run.py
| Library | Description |
|---|---|
| aiogram | Фреймворк, на котором написан бот |
| asyncio | Необходим для асинхронных операций в боте |
| python-dotenv | Загрузка токенов, паролей и ссылок из файлов .env |
| aiohttp | Для отправки асинхронных HTTP запросов и асинхронной обработки HTTP ответов. |
| supabase | Библиотека для взаимодействия с базой данной Supabase. |
| pytest | Библиотека для работы модульных тестов |
| pytest-asyncio | Бибилотека для тестирования асинхронного кода |
| APScheduler | Библиотека для отправки сообщений из очереди по времени |
| redis | Библитека для выставления очереди сообщений |
| httpx | Полнофункциональный HTTP-клиент |
| pytz | Библиотека для работы с часовыми поясами и форматами времени |
| Frame | Docs |
|---|---|
| Supabase | https://supabase.com/docs |
| Aiogram | https://docs.aiogram.dev/ |
| Asyncio | https://docs.python.org/3/library/asyncio.html |
| Aiohttp | https://docs.aiohttp.org/ |
| Pytest | https://docs.pytest.org/ |
| APScheduler | https://apscheduler.readthedocs.io/ |
| Redis | https://redis.io/docs/latest/ |
| Httpx | https://www.python-httpx.org/ |
| Pytz | https://github.com/stub42/pytz/blob/master/src/README.rst |
| Python-dotenv | https://www.dotenv.org/docs/ |
Стейты (состояние) необходимы для управления последовательностью действий пользователя и контекстом взаимодействия. Они позволяют боту понимать, на каком этапе взаимодействия находится пользователь, и обрабатывать его ввод в зависимости от текущего состояния. Для того, чтобы создать новый стейт, необходимо создать новый класс, наследуя его от “StatesGroup”. Далее определите новый стейт внутри класса, используя State().
Эти шаги позволят вам добавить новый класс в машину состояний (FSM).
TOKEN = “Токен телеграм бота”
USERNAME_CRM = “Имя пользователя в CRM”
PASSWORD_CRM = “Пароль пользователя в CRM”
URL = “Ссылка на точку входа в CRM”
SUPABASE_URL = “Ссылка на базу данных supabase”
SUPABASE_KEY = “Ключ supabase”
REDIS_HOST = “ip адрес сервера redis”
REDIS_PORT = “порт сервера redis”
REDIS_URL = “ссылка вида redis://REDIS_PASSWORD:@REDIS_HOST:REDIS_PORT/0”
REDIS_PASSWORD = “Пароль от redis”
SUPPORT_GROUP_ID = “Айди супергруппы поддержки, начинающиеся с -100”
- text - обычный текст, без медиаматериала
- image - фотоматериал
- video - видеоматериал
- text image - текстовый материал + фото для общей отправки
- text video - текстовый материал + видео для общей отправки
- survey - опрос