Система для создания, управления и запуска множества Telegram ботов с веб-интерфейсом и API.
- Управление множеством ботов - запуск, остановка, мониторинг
- REST API - полное API для интеграции
- Панель управления - веб-интерфейс для администрирования
- Асинхронная обработка - Celery для фоновых задач
- Масштабируемость - Docker контейнеризация
Django + DRF (Web Interface) → Celery (Task Queue) → python-telegram-bot (Bot Runtime)
↓ ↓
PostgreSQL (Data) Redis (Broker)
git clone https://github.com/Wiltort/bot-constructor.git
cd bot-constructor
cp .env.example .env
# Django settings
FIELD_ENCRYPTION_KEY=generated-key
SECRET_KEY=your-secret-django-key
DEBUG=True
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
# PostgreSQL Settings
DB_NAME=telegram_bots
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
# Redis Settings
REDIS_URL=redis://localhost:6379/0
Для генерации правильного FIELD_ENCRYPTION_KEY используйте keygen
python keygen.py
Полученную строку без кавычек вставляем в .env
docker compose up --build
Сервисы будут доступны:
- API Documentation: http://localhost:8000/api/swagger/
- Admin Panel: http://localhost:8000/admin/
docker-compose exec uv run manage.py createsuperuser
POST /api/token-auth/
- получение токена аутентификации DRF
GET /api/v1/bots/
- список ботовPOST /api/v1/bots/{id}/start/
- запуск ботаPOST /api/v1/bots/{id}/stop/
- остановка ботаGET /api/v1/bots/{id}/status/
- статус бота
GET /api/v1/scenarios/
- список сценариевPOST /api/v1/scenarios/{id}/steps/
- создание шагаGET /api/v1/scenarios/{id}/steps/
- шаги сценария
Полный список ендпойнтов находится в документации http://localhost:8000/api/swagger/ Для всех запросов изменения/добавления/удаления требуется авторизация, токен аутентификации можно получить в админке или по эндпойнту api/token-auth/
curl -X POST http://localhost:8000/api/v1/bots/1/start/ \
-H "Authorization: Token your-token" \
-H "Content-Type: application/json"
- Откройте http://localhost:8000/admin/
- Авторизуйтесь как суперпользователь
- Перейдите в раздел "Bots"
- Создайте бота с токеном
import requests
API_URL = "http://localhost:8000/api/v1"
TOKEN = "your-api-token"
# Запуск бота
response = requests.post(
f"{API_URL}/bots/1/start/",
headers={"Authorization": f"Token {TOKEN}"}
)
# Запуск всех сервисов
docker compose up --build
# Остановка
docker compose down
# Выполнение команд в контейнере
docker-compose exec web uv run src/manage.py migrate
docker-compose exec web uv run src/manage.py createsuperuser
pip install uv
uv sync
# Зависимости проекта находятся в pyproject.toml в разделе dependencies