Визуальный конструктор с drag-and-drop интерфейсом, где вы просто перетаскиваете блоки на холст, а готовый бот появляется сам.
💡 Идеально подходит для малого бизнеса, фрилансеров и тех, кто хочет быстро запустить бота, не изучая программирование.
🏗️ Архитектура системы
🎨 FrontendReact + TypeScript Визуальный редактор • Drag-and-drop интерфейс • Панель настроек блоков • Управление проектами |
🖥️ BackendExpress.js + Node.js API сервер • REST API для данных • Генерация Python кода • Загрузка медиафайлов |
🗄️ База данныхPostgreSQL + Drizzle Хранение данных • Проекты и схемы ботов • Пользователи и настройки • Медиафайлы |
☁️ ДеплойRailway + Python Запуск ботов • Автогенерация кода • Готовые Python боты • Облачный хостинг |
🔄 Поток данных
📋 Подробное описание потока (нажми для раскрытия)
- 👤 Пользователь создает схему бота в визуальном редакторе
- 🎨 Frontend отправляет изменения через REST API, предлагает сохранить и перезапустить бота
- 📡 API Server валидирует данные и сохраняет в PostgreSQL
- 🤖 Generator преобразует схему в Python код с aiogram
- ▶️ Запуск — бот запускается как Python-процесс на сервере (Worker Pool)
- 📱 Telegram получает сообщения через polling (по умолчанию) или webhook
- 📊 Analytics собирает статистику использования в реальном времени
📁 Структура проекта
Показать структуру проекта
📦 telegram-bot-builder/
┣ 📂 client/ # 🎨 React Frontend
┃ ┣ 📂 components/ # UI компоненты
┃ ┃ ┣ 📂 editor/ # Визуальный редактор
┃ ┃ ┃ ┣ 📂 app-sidebar/ # Навигация по вкладкам
┃ ┃ ┃ ┣ 📂 analytics/ # Панель аналитики
┃ ┃ ┃ ┣ 📂 bot/ # Управление ботами
┃ ┃ ┃ ┣ 📂 broadcast/ # Рассылки
┃ ┃ ┃ ┣ 📂 canvas/ # Холст редактора (drag & drop)
┃ ┃ ┃ ┣ 📂 code/ # Вкладка «Код бота»
┃ ┃ ┃ ┣ 📂 dialogs/ # Диалоги с пользователями
┃ ┃ ┃ ┣ 📂 properties/ # Панель свойств блоков
┃ ┃ ┃ ┣ 📂 sidebar/ # Панель компонентов
┃ ┃ ┃ ┗ 📂 users/ # Вкладка «Пользователи»
┃ ┃ ┣ 📂 ui/ # Базовые UI элементы
┃ ┃ ┗ 📂 media/ # Медиа компоненты
┃ ┣ 📂 hooks/ # React хуки
┃ ┣ 📂 pages/ # Страницы приложения
┃ ┣ 📂 storage/ # Локальное хранилище
┃ ┣ 📂 types/ # TypeScript типы
┃ ┣ 📂 utils/ # Утилиты
┃ ┗ 📄 App.tsx # Главный компонент
┣ 📂 server/ # 🖥️ Express Backend
┃ ┣ 📂 auth/ # Аутентификация
┃ ┣ 📂 bots/ # Запуск/остановка ботов
┃ ┣ 📂 database/ # Работа с PostgreSQL
┃ ┣ 📂 files/ # Работа с файлами
┃ ┣ 📂 handlers/ # Обработчики запросов
┃ ┣ 📂 middleware/ # Middleware
┃ ┣ 📂 migrations/ # Миграции БД
┃ ┣ 📂 redis/ # Redis (события, кэш)
┃ ┣ 📂 routes/ # API маршруты
┃ ┣ 📂 services/ # Бизнес-логика
┃ ┣ 📂 storages/ # Хранилища данных
┃ ┣ 📂 telegram/ # Telegram API клиент
┃ ┣ 📂 templates/ # Шаблоны генерации
┃ ┣ 📂 terminal/ # Терминал ботов
┃ ┣ 📂 utils/ # Утилиты сервера
┃ ┗ 📄 index.ts # Точка входа сервера
┣ 📂 shared/ # 🔗 Общие модули (схемы, типы)
┣ 📂 bots/ # 🤖 Сгенерированные Python-боты
┣ 📂 docs/ # 📚 Документация
┃ ┣ 📂 analysis/ # Анализ архитектуры
┃ ┣ 📂 deployment/ # Инструкции по деплою
┃ ┣ 📂 development/ # Для разработчиков
┃ ┣ 📂 features/ # Описание фич
┃ ┣ 📂 futures/ # Планы развития
┃ ┗ 📂 releases/ # Заметки к релизам
┣ 📂 migrations/ # 🗄️ Миграции Drizzle ORM
┣ 📂 uploads/ # 📁 Загруженные медиафайлы
┣ 📂 scripts/ # 📜 Вспомогательные скрипты
┣ 📄 package.json # 📦 Зависимости Node.js
┣ 📄 tsconfig.json # ⚙️ Настройки TypeScript
┣ 📄 vite.config.ts # ⚡ Конфигурация Vite
┣ 📄 drizzle.config.ts # 🗄️ Настройки Drizzle ORM
┣ 📄 docker-compose.yml # 🐳 Docker конфигурация
┗ 📄 .env.example # 🔐 Пример переменных окружения
📡 API
⚠️ Безопасность: На данный момент многие эндпоинты открыты и не требуют аутентификации. Проект находится в стадии активной разработки — авторизация и изоляция данных между пользователями планируются в будущих релизах. Следите за обновлениями в нашем Telegram-канале и чате.
API маршруты находятся в директории server/routes/:
| Директория | Что содержит |
|---|---|
server/routes/projectRoutes/ |
CRUD проектов, обновление схемы |
server/routes/botManagement/ |
Запуск, остановка, перезапуск ботов |
server/routes/tables/ |
Работа с таблицами данных |
server/routes/setup/ |
Setup Wizard (первоначальная настройка) |
server/routes/setupWebhookRoutes.ts |
Приём webhook-апдейтов от Telegram |
server/routes/routes.ts |
Главный файл регистрации всех маршрутов |
🎯 Основные возможности
🎨 Визуальный редактор
- Drag & Drop — перетаскивайте блоки на холст, соединяйте стрелками
- Набор блоков постоянно растёт — новые ноды добавляются с каждым обновлением
- Светлая и тёмная темы — удобно работать днём и ночью
- Адаптивный интерфейс — работает на десктопе, планшете и смартфоне
💬 Сообщения и триггеры
- Команды — /start, /help и любые пользовательские команды
- Текстовые триггеры — реакция на конкретные слова или любое сообщение
- Исходящие сообщения — триггер на отправку сообщений ботом
- Медиафайлы — фото, видео, аудио, документы
- Сбор данных — сохранение ответов пользователей в переменные
- Редактирование и пересылка — изменение отправленных сообщений, пересылка в другие чаты
⌨️ Клавиатуры
- Inline-кнопки — с callback-данными и обработкой нажатий
- Reply-клавиатуры — обычные кнопки под полем ввода
- Answer callback query — ответ на нажатие inline-кнопки
👥 Группы и форумы
- Триггеры на сообщения в группах — бот реагирует на сообщения участников
- Создание тем в форумах — автоматическое создание топиков
🔌 Интеграции
- HTTP-запросы — обращение к любым внешним API
- PostgreSQL — прямые SQL-запросы к базе данных из бота
- Условная логика — ветвления "если... то..."
- Переменные — хранение и использование данных между шагами
- Конвертация файлов — преобразование форматов
🖥️ Вкладки конструктора
- 🎨 Редактор — визуальный холст с нодами, drag & drop построение сценария
- 📋 Код — просмотр, копирование и скачивание сгенерированного Python-кода
- 🤖 Бот — управление токенами, запуск/остановка, статус, настройки
- 👥 Пользователи — база всех, кто писал боту
- 💬 Диалоги — переписки бота с пользователями в реальном времени
- 📢 Рассылки — массовая отправка сообщений по базе
- 📊 Аналитика — статистика использования бота
- 📑 Таблицы — таблицы данных проекта (контент, настройки)
💡 Вкладки и блоки постоянно обновляются и дополняются с каждым релизом.
☁️ Запуск и деплой бота
▶️ Вариант 1: Запуск из конструктора (кнопка «Запустить»)
Бот запускается прямо из интерфейса конструктора:
- На официальном сайте — пока работает нестабильно, актуальную ссылку можно получить в чате @bot_builder_chat. Скоро выпускаем глобально!
- Self-hosted (рекомендуется) — разверните конструктор у себя и запускайте ботов из своей инфраструктуры
📦 Вариант 2: Скачать код и запустить где угодно
Из конструктора (официальный сайт или self-hosted):
- Откройте вкладку «Код бота»
- Скачайте сгенерированный
.pyфайл - Отредактируйте под свои нужды (код полностью ваш, никакого чёрного ящика)
- Запустите на любом сервере, VPS или домашнем компьютере — независимо от конструктора
🖥️ Вариант 3: Self-hosted конструктор
Разверните Bot Builder на своём сервере — и создавайте/запускайте ботов в своей инфраструктуре:
Railway (рекомендуется)
- Зарегистрируйтесь на Railway.app
- Создайте новый проект
- Подключите репозиторий с кодом
- Добавьте переменные окружения (см. docs/deployment/RAILWAY_QUICK_DEPLOY.md)
- Создайте PostgreSQL базу данных
- Запустите миграции базы данных
Подробные инструкции: docs/deployment/RAILWAY_QUICK_DEPLOY.md
Docker
git clone https://github.com/fedorabakumets/telegram-bot-builder.git
cd telegram-bot-builder
docker compose up -d
Ручная установка (любая ОС)
См. пошаговую инструкцию ниже.
📜 Пошаговая инструкция
Подробное руководство по установке для Windows, macOS и Linux (Git, Node.js, PostgreSQL, Redis, Python, настройка БД, клонирование, запуск):
👉 docs/development/INSTALLATION.md
🐳 Быстрый старт:
docker compose up -d— и всё работает без ручной настройки.
💡 Нужно обновить проект? См. 🔄 Как обновить проект с GitHub
🎓 Как создать своего первого бота?
Пошаговое руководство (нажми для раскрытия)
Шаг 1: Получите токен для бота
- Откройте Telegram и найдите @BotFather
- Напишите
/newbotи следуйте инструкциям - Вы получите токен вроде:
123456789:ABCdef...
Шаг 2: Откройте редактор
- При первом запуске у вас уже есть проект по умолчанию с узлом "Старт"
- Если нужен новый проект, откройте вкладку "Проекты" (слева) и нажмите кнопку "+ Новый"
Шаг 3: Добавьте токен бота
- В правой части нажмите кнопку "Бот"
- Вставьте токен, который вы получили от BotFather
- Токен сохранится автоматически
Шаг 4: Постройте сценарий бота
- Перетащите блок "Сообщение" на холст рядом с узлом "Старт"
- Напишите текст, который бот должен отправить
- В настройках блока укажите, что будет дальше:
- Кнопки - для выбора вариантов ответа
- Автопереход - перейти к другому блоку автоматически
- Ожидание ввода - дождаться сообщения от пользователя
- Добавьте еще блоки и настройте переходы между ними
Шаг 5: Запустите бота
- Откройте вкладку "Бот" (справа внизу)
- Нажмите кнопку "Запустить"
- Откройте своего бота в Telegram
- Тестируйте и улучшайте!
🧩 Типы блоков
Полный список доступных блоков (нажми для раскрытия)
📨 Сообщения и триггеры
| Блок | Что он делает |
|---|---|
| 🔔 Триггер команды | Срабатывает при вводе команды (/start, /help, любая своя) |
| 💬 Триггер текста | Срабатывает на конкретное текстовое сообщение |
| 📩 Триггер входящего сообщения | Срабатывает на каждое входящее сообщение |
| 📤 Триггер исходящего сообщения | Срабатывает когда бот отправляет сообщение |
| 💬 Текстовое сообщение | Отправляет текст пользователю (поддержка Markdown) |
| 📁 Медиафайл | Отправляет фото, видео, аудио или документ |
| 💾 Сохранить ответ в переменную | Сохраняет ответ пользователя для дальнейшего использования |
| ✏️ Редактировать сообщение | Редактирует текст или кнопки уже отправленного сообщения |
| ↗️ Переслать сообщение | Пересылка сообщения в другой чат |
⌨️ Клавиатуры
| Блок | Что он делает |
|---|---|
| 🔘 Триггер inline-кнопки | Срабатывает когда пользователь нажимает inline-кнопку |
| 🔔 Триггер нажатия кнопки | Срабатывает на каждое нажатие callback-кнопки |
| ⌨️ Клавиатура | Отправляет сообщение с reply-клавиатурой |
| ✅ Answer callback query | Отвечает на нажатие inline-кнопки (уведомление/alert) |
👥 Группы
| Блок | Что он делает |
|---|---|
| 👥 Триггер сообщений в группе | Срабатывает на сообщения в групповых чатах |
| 📋 Создать тему форума | Создаёт новый топик в форум-группе |
🔌 Интеграции и логика
| Блок | Что он делает |
|---|---|
| 🌐 HTTP-запрос | Отправляет запрос к любому внешнему API |
| 🗄️ PostgreSQL запрос | Выполняет SQL-запрос к базе данных |
| 🔀 Условие | Ветвление логики: "если... то... иначе..." |
| 📝 Установить переменную | Сохраняет значение в переменную для использования в других блоках |
| 📄 Конвертация файлов | Преобразование файлов между форматами |
📦 Медиафайлы в сообщениях
В свойствах текстового сообщения можно прикрепить:
- 📸 Фотографии — JPG, PNG
- 🎬 Видео — видеоролики
- 🎵 Аудио — музыка и записи
- 📄 Документы — PDF, Word, Excel и другие
🔄 Логика переходов
Настраивается в свойствах каждого блока:
- Кнопки — пользователь выбирает вариант, бот переходит на нужное сообщение
- Ожидание ввода — бот ждёт ответ, затем переходит дальше
- Автопереход — переход к следующему блоку автоматически
- Условные переходы — ветвление по значению переменных
💡 Список блоков постоянно пополняется. Следите за обновлениями!
📚 Пример: Простой бот для пиццерии
🍕 Пошаговый пример создания бота (нажми для раскрытия)
🎯 Что мы создадим:
Полнофункциональный бот для приема заказов пиццы с меню, выбором и подтверждением
🎨 Визуальная схема бота
🚀 СТАРТКоманда /start |
|
⬇️
|
💬 ПРИВЕТСТВИЕ"Добро пожаловать! Выберите пиццу 🍕" |
|
⬇️
|
🍕 ВЫБОР ПИЦЦЫ
🍕 Маргарита
🍕 Пепперони
🥬 Вегетарианская
|
|
⬇️
|
📝 АДРЕС ДОСТАВКИ"Введите ваш адрес доставки" |
|
⬇️
|
✅ ПОДТВЕРЖДЕНИЕПроверка заказа |
|
⬇️
|
🚗 ГОТОВО!"Спасибо за заказ! Ожидайте доставку" |
🛠️ Пошаговое создание
📋 Подробная инструкция (нажми для раскрытия)
🎯 Шаг 1: Создание проекта
- Откройте Telegram Bot Builder
- Создайте новый проект "Пиццерия"
- Получите токен от @BotFather
🧩 Шаг 2: Добавление блоков
- Стартовое сообщение → "Добро пожаловать! Выберите пиццу 🍕"
- Кнопки выбора → ["🍕 Маргарита", "🍕 Пепперони", "🥬 Вегетарианская"]
- Сообщение с ожиданием → "Введите ваш адрес доставки"
- Финальное сообщение → "Спасибо за заказ! Ожидайте доставку 🚗"
⚙️ Шаг 3: Настройка переходов
- Старт → Приветствие (автопереход)
- Приветствие → Выбор пиццы (кнопки)
- Выбор пиццы → Адрес (любая кнопка)
- Адрес → Подтверждение (ожидание ввода)
🚀 Шаг 4: Запуск и тестирование
- Нажмите "Сгенерировать код"
- Скачайте готовый Python файл
- Запустите бота и протестируйте
💻 Сгенерированный код
🐍 Посмотреть автоматически созданный Python код (нажми чтобы раскрыть)
# 🤖 Автоматически сгенерированный бот для пиццерии
import asyncio
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
# 🔑 Токен бота (замените на свой)
bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher()
def get_pizza_keyboard():
"""🍕 Клавиатура с выбором пиццы"""
keyboard = ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text="🍕 Маргарита")],
[KeyboardButton(text="🍕 Пепперони")],
[KeyboardButton(text="🥬 Вегетарианская")]
],
resize_keyboard=True,
one_time_keyboard=True
)
return keyboard
@dp.message(Command("start"))
async def start_handler(message: types.Message):
"""🚀 Обработчик команды /start"""
await message.answer(
"🍕 Добро пожаловать в пиццерию!\n"
"Выберите пиццу из меню:",
reply_markup=get_pizza_keyboard()
)
@dp.message(lambda message: "🍕" in message.text or "🥬" in message.text)
async def pizza_selected(message: types.Message):
"""🍕 Обработчик выбора пиццы"""
pizza_type = message.text
await message.answer(
f"✅ Отличный выбор: {pizza_type}!\n"
f"📍 Введите ваш адрес доставки:",
reply_markup=types.ReplyKeyboardRemove()
)
@dp.message()
async def address_handler(message: types.Message):
"""📍 Обработчик адреса доставки"""
address = message.text
await message.answer(
f"🎉 Спасибо за заказ!\n"
f"📍 Адрес: {address}\n"
f"🚗 Ожидайте доставку в течение 30-40 минут!\n"
f"📞 Мы свяжемся с вами для подтверждения."
)
# 🚀 Запуск бота
async def main():
print("🤖 Бот пиццерии запущен!")
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
🎯 Результат
⚡ Быстро10 минут от идеи |
🎯 ПростоБез единой строки |
🚀 ГотовоБот готов принимать |
📚 Документация
Вся документация проекта организована в папке docs/ и разделена по категориям для удобного поиска
🛠️ Разработчикам📋 Настройка проекта 🔧 Устранение неполадок 🤝 Для контрибьюторов 📄 JSDoc стандарты 🧩 Добавление нового узла |
🚀 Деплой🚂 Railway 🐳 Docker ☁️ VPS ⚙️ CI/CD |
🧩 Возможности🏗️ Типы узлов 🔧 Триггеры и действия 📈 Производительность 🧪 Тестирование |
🔒 Безопасность🛡️ Обновление проекта 🔐 Аутентификация 🚨 Мониторинг 📋 Аудит |
🗂️ Полная структура документации (нажми для раскрытия)
📂 docs/
├── 📁 development/ # 🛠️ Документация для разработчиков
│ ├── 📄 INSTALLATION.md # Настройка окружения разработки
│ ├── 📄 TROUBLESHOOTING_RU.md # Устранение неполадок
│ ├── 📄 CONTRIBUTING.md # Руководство для контрибьюторов
│ ├── 📄 adding-new-trigger.md # Добавление новой ноды
│ └── 📄 HOW_TO_UPDATE.md # Как обновить проект
│
├── 📁 deployment/ # 🚀 Руководства по развертыванию
│ ├── 📄 RAILWAY_QUICK_DEPLOY.md # Быстрый деплой на Railway
│ ├── 📄 RAILWAY_TROUBLESHOOTING.md # Устранение проблем
│ └── 📄 VERCEL_DEPLOY.md # Развертывание на Vercel
│
├── 📁 features/ # 🧩 Описание возможностей
│ ├── 📄 NODE_TYPES.md # Типы узлов
│ └── 📄 POSSIBLE_TRIGGERS_AND_ACTIONS.md # Триггеры
│
├── 📁 futures/ # 🔮 Планы развития
│
├── 📁 releases/ # 📝 Release notes
│
├── 📄 home.md # 📚 Главная страница документации
├── 📄 JSDOC_STANDARDS.md # 📋 Стандарты JSDoc
└── 📄 bot-json-prompt.md # 🤖 Промт для ИИ
📋 Системные требования
Технические требования (нажми для раскрытия)
| 💻 Компонент | ⚡ Минимум | 🚀 Рекомендуемо |
|---|---|---|
| Node.js | 18.0 | 22.0+ LTS |
| PostgreSQL | 17 | 17.10+ |
| Redis | 7.0 | 7.2+ (Memurai на Windows) |
| Python | 3.10 | 3.13+ |
| RAM | 1 GB | 2+ GB |
| Диск | 500 MB | 1+ GB SSD |
🖥️ Поддерживаемые ОС
🚀 Развертывание готового бота
▶️ Запуск из конструктора (основной способ)
Бот запускается прямо из интерфейса — нажмите кнопку «Запустить» во вкладке «Бот». Сервер автоматически:
- Генерирует Python-код из вашей схемы
- Запускает бот как Python-процесс (через Worker Pool)
- Показывает логи и статус в реальном времени
⚠️ Важно: Python-зависимости устанавливаются один раз на сервере командой
pip install -r requirements.txt. Все боты используют общее окружение.
📦 Скачать код и запустить отдельно
Из вкладки «Код бота» можно скачать сгенерированный .py файл и запустить независимо от конструктора:
Вкладка «Код проекта» — просмотр, копирование и скачивание сгенерированного Python-кода
pip install -r requirements.txt # один раз
python bot.py # запуск бота
Код полностью ваш — можно редактировать, дополнять, деплоить куда угодно.
☁️ Деплой на хостинг
| Платформа | Подходит для | Документация |
|---|---|---|
| Railway | Быстрый деплой, автоскейлинг | RAILWAY_QUICK_DEPLOY.md |
| VPS (DigitalOcean, Linode) | Полный контроль | Стандартный запуск Python |
| Docker | Изоляция, воспроизводимость | docker compose up -d |
📄 Лицензия
MIT License - используйте свободно для личных и коммерческих целей.