Telegram бот для цифровизации и автоматизации сбора и квалификации лидов.
- Python 3.13.3
- Poetry ^2.0.0
- Make
- Aiogram ^3.13.0
- Django ^5.0.0
- Celery ^5.5.0
- Django-Celery-Beat ^2.8.0
- Redis ^7.0.0
- Flake8 ^7.3.0
Более конкретные зависимости указаны в pyproject.toml или requirements.txt
bitrix-lead/
├── admin_panel/ # Django админ-панель
│ ├── apps/ # Django приложения
│ │ ├── management/commands # Базовые команды для управления панелью администратора
│ │ └── telegram/ # Приложение для пользователями
│ ├── settings/ # Модульные настройки Django
│ │ ├── base/ # Базовые настройки (apps, middleware, environment)
│ │ ├── components/ # Компоненты (auth, logging, static, i18n, paths, celery)
│ │ └── environments/# Окружения (development, production, common)
│ ├── celery.py # Конфигурация Celery
│ ├── urls.py # URL конфигурация
│ ├── wsgi.py # WSGI конфигурация
│ └── asgi.py # ASGI конфигурация
├── bot/ # Telegram бот (aiogram)
│ ├── handlers/ # Обработчики сообщений и команд
│ ├── keyboards/ # Клавиатуры бота
│ ├── middlewares/ # Middleware для бота
│ └── main.py # Точка входа бота
├── common/ # Общие модули
│ ├── models/ # Django модели (используются в боте и админке)
│ ├── tasks/ # Celery задачи
│ ├── signals/ # Django сигналы
│ └── utils/ # Утилиты
├── config/ # Общие настройки проекта
│ ├── __init__.py # Инициализация модуля конфигурации
│ └── settings.py # Конфигурация для бота (загрузка переменных окружения)
├── scripts/ # Вспомогательные скрипты
│ └── setup_env.py # Скрипт настройки окружения
├── manage.py # Django management script
├── run_bot.py # Скрипт запуска Telegram бота
├── run_celery_worker.py # Скрипт запуска Celery Worker
├── run_celery_beat.py # Скрипт запуска Celery Beat
├── deploy/ # Docker файлы
│ ├── Dockerfile # Multi-stage Dockerfile для всех сервисов
│ ├── robots.txt # Конфиг для направления индексирующих ботов
│ └── nginx.conf # Веб-прокси конфигурация
├── pyproject.toml # Poetry зависимости
├── pyproject.lock # Lock файл с зависимостями
├── docker-compose.yml # Production Docker Compose
├── .dockerignore # Игнорируемые файлы для Docker
└── README.md # Этот файл
- Установите зависимости:
make install- Замените переменные в .env файле на необходимые:
SECRET_KEY='so-secret' # Или оставьте сгенерированный ключ
DATABASE_URL='postgresql://your_user:your_password@localhost:5432/db' # В случае подключения к PostgreSQL
USE_SQLITE=False # В случае подключения к PostgreSQL
Важно: в случае отсутствия Make на устройстве и при наличии Poetry, команды выполняются последовательно, как указано в Makefile.
- Создание виртуального окружения:
python3 -m venv .venv- Активация виртуального окружения:
source .venv/bin/activate # Для Unix
.venv/Scripts/activate # Для Windowd- Установка зависимостей:
pip3 install -r ./requirements.txt- Создание .env файла:
python3 scripts/setup_env- Применение миграций:
python3 manage.py migrateВажно: Модуль
config/settings.pyавтоматически загружает переменные окружения из.envфайла при импорте. Убедитесь, что файл.envсуществует и содержитTELEGRAM_BOT_TOKEN, иначе бот не запустится.
Самый простой способ - все сервисы в Docker с Nginx:
# 1. Запустите все сервисы
docker-compose up -d --build
# 2. Создайте суперпользователя
docker exec -it bitrix-lead-admin python manage.py createsuperuserАдминка доступна на: http://localhost/admin/
Архитектура:
- 🌐 Nginx (порт 80) - reverse proxy, раздача статики/медиа
- 🎛️ Django Admin (порт 8000, внутренний) - админ-панель
- 🤖 Telegram Bot - бот для пользователей
- ⚙️ Celery Worker - обработка задач
- ⏰ Celery Beat - планировщик рассылок
- 🗄️ PostgreSQL - база данных
- 🔴 Redis - брокер сообщений
make run-all # Для выполнения требуется Makemake run # Для выполнения требуется Make# Рекомендуемый способ (через Make):
make run-bot
# Через Poetry:
poetry run task run-bot
# Или напрямую:
python3 bot/main.py# Рекомендуемый способ (через Make):
make run-admin
# Через Poetry:
poetry run task run-admin
# Напрямую:
python manage.py runserverАдмин-панель будет доступна по адресу: http://127.0.0.1:8000/admin/
# Рекомендуемый способ (через Make):
make run-celery-worker
# Или напрямую:
python run_celery_worker.py# Рекомендуемый способ (через Make):
make run-celery-beat
# Или напрямую:
python run_celery_beat.pyВажно: Для работы автоматических рассылок необходимо запустить Redis, Celery Worker и Celery Beat.
Настройки организованы в модульную структуру:
/base/**- базовые настройки (приложения, middleware, переменные окружения)/components/**- компоненты настроек (auth, logging, static, i18n, paths)/environments/**- настройки для разных окружений (development, production, common)
Директория config/ содержит общие настройки для Telegram бота:
settings.py- загружает переменные окружения из.envфайла и экспортируетTELEGRAM_BOT_TOKEN- Модуль автоматически загружает переменные окружения при импорте
Проект автоматически выбирает базу данных на основе переменной DEBUG:
-
DEBUG=True (development) → SQLite (по умолчанию)
- База данных создается в
private/db.sqlite3 - Можно переопределить через
USE_SQLITE=Falseв.envдля использования PostgreSQL
- База данных создается в
-
DEBUG=False (production) → PostgreSQL (по умолчанию)
- Требуется переменная
DATABASE_URLв формате:postgresql://user:password@localhost:5432/dbname - Можно переопределить через
USE_SQLITE=Trueв.envдля использования SQLite
- Требуется переменная
Пример .env для production с PostgreSQL:
DEBUG=False
SECRET_KEY=your-secret-key-here
DATABASE_URL=postgresql://user:password@localhost:5432/bitrix_lead
USE_SQLITE=False
# Celery (для автоматических рассылок)
CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=redis://localhost:6379/0