Skip to content

meowsl/bitrix-lead-bot

Repository files navigation

Bitrix Lead

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           # Этот файл

Установка

Makefile + Poetry (рекомендуется)

  1. Установите зависимости:
make install
  1. Замените переменные в .env файле на необходимые:
SECRET_KEY='so-secret' # Или оставьте сгенерированный ключ
DATABASE_URL='postgresql://your_user:your_password@localhost:5432/db' # В случае подключения к PostgreSQL
USE_SQLITE=False # В случае подключения к PostgreSQL

Важно: в случае отсутствия Make на устройстве и при наличии Poetry, команды выполняются последовательно, как указано в Makefile.

Ручная установка (python)

  1. Создание виртуального окружения:
python3 -m venv .venv
  1. Активация виртуального окружения:
source .venv/bin/activate # Для Unix
.venv/Scripts/activate # Для Windowd
  1. Установка зависимостей:
pip3 install -r ./requirements.txt
  1. Создание .env файла:
python3 scripts/setup_env
  1. Применение миграций:
python3 manage.py migrate

Важно: Модуль config/settings.py автоматически загружает переменные окружения из .env файла при импорте. Убедитесь, что файл .env существует и содержит TELEGRAM_BOT_TOKEN, иначе бот не запустится.

Запуск

🐳 Docker (рекомендуется)

Самый простой способ - все сервисы в 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 - брокер сообщений

💻 Локальная разработка (без Docker)

Запуск всех сервисов (Админка + Бот + Celery Worker + Celery Beat):

make run-all # Для выполнения требуется Make

Запуск сразу двух основных сервисов (Админка + Бот):

make run # Для выполнения требуется Make

Запуск Telegram бота:

# Рекомендуемый способ (через Make):
make run-bot

# Через Poetry:
poetry run task run-bot

# Или напрямую:
python3 bot/main.py

Запуск Django админ-панели:

# Рекомендуемый способ (через Make):
make run-admin

# Через Poetry:
poetry run task run-admin

# Напрямую:
python manage.py runserver

Админ-панель будет доступна по адресу: http://127.0.0.1:8000/admin/

Запуск Celery Worker:

# Рекомендуемый способ (через Make):
make run-celery-worker

# Или напрямую:
python run_celery_worker.py

Запуск Celery Beat (планировщик задач):

# Рекомендуемый способ (через Make):
make run-celery-beat

# Или напрямую:
python run_celery_beat.py

Важно: Для работы автоматических рассылок необходимо запустить Redis, Celery Worker и Celery Beat.

Структура настроек

Настройки Django (admin_panel/settings)

Настройки организованы в модульную структуру:

  • /base/** - базовые настройки (приложения, middleware, переменные окружения)
  • /components/** - компоненты настроек (auth, logging, static, i18n, paths)
  • /environments/** - настройки для разных окружений (development, production, common)

Настройки бота (config/)

Директория 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

About

Telegram бот для цифровизации и автоматизации сбора и квалификации лидов

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages