Бот для юридической компании URNEFP на Python (aiogram 3.x).
- Сбор лидов через FSM-форму
- Выдача лид-магнита (PDF, генерируется автоматически)
- Сохранение лидов в PostgreSQL
- Передача данных юристу (админ-чат)
- Ответ юриста клиенту через бота
- Логирование действий в JSON
main.py— запуск ботаhandlers/form.py— FSM-форма для сбора данныхhandlers/admin.py— админ-команды для юристаstates/form.py— состояния FSMservices/pdf_generator.py— генерация PDF-лидмагнитаutils/logger.py— логирование действийconfig.py— конфиг, чтение .env
-
Скопируйте
.env.exampleв.envи заполните переменные -
Соберите и запустите контейнеры:
docker-compose up --build
BOT_TOKEN— токен Telegram-ботаADMIN_CHAT_ID— ID чата для уведомлений юристаPOSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_HOST,POSTGRES_PORT— настройки БД
- Python 3.10+
- aiogram 3.x
- PostgreSQL
- PDF-лидмагнит генерируется индивидуально для каждого пользователя (fpdf)
- Все лиды сохраняются в таблицу leads в PostgreSQL
-
Пользователь нажимает «Получить помощь» и подтверждает согласие на обработку персональных данных.
-
Заполняет форму (имя, город, email, телефон, проблема). На каждом шаге можно нажать «Отмена» для выхода.
-
После заполнения:
- Получает PDF-лидмагнит
- Данные сохраняются в БД и отправляются юристу
- Юрист может ответить через /reply {user_id} {сообщение}
/reply {user_id} {сообщение}— ответить клиенту от имени бота/leads— получить 5 последних лидов из БД
- Все действия логируются в JSON-файл
- Ошибки при работе с БД и PDF отображаются пользователю и логируются
- Перед началом формы пользователь подтверждает согласие на обработку данных
- Все данные хранятся в PostgreSQL и не передаются третьим лицам
Для запуска unit-тестов используйте:
pytest tests/Для проверки в Docker:
docker run --rm -it <имя_контейнера> pytest tests/Пример workflow для GitHub Actions — см. .github/workflows/tests.yml
Проект масштабируемый, легко интегрируется с CRM и webhook-сервисами
. ├── main.py ├── config.py ├── requirements.txt ├── Dockerfile ├── docker-compose.yml ├── .dockerignore ├── .env.example ├── README.md ├── handlers/ │ ├── init.py │ ├── form.py │ └── admin.py ├── states/ │ ├── init.py │ └── form.py ├── services/ │ ├── init.py │ ├── db.py │ └── pdf_generator.py ├── utils/ │ ├── init.py │ └── logger.py ├── tests/ │ ├── test_db.py │ └── test_logger.py └── .github/ └── workflows/ └── tests.yml