Визуальный конструктор с drag-and-drop интерфейсом, где вы просто перетаскиваете блоки на холст, а готовый бот появляется сам.
💡 Идеально подходит для малого бизнеса, фрилансеров и тех, кто хочет быстро запустить бота, не изучая программирование.
📋 Подробное описание потока (нажми для раскрытия)
- 👤 Пользователь создает схему бота в визуальном редакторе
- 🎨 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 # 🔐 Пример переменных окружения
⚠️ Безопасность: На данный момент многие эндпоинты открыты и не требуют аутентификации. Проект находится в стадии активной разработки — авторизация и изоляция данных между пользователями планируются в будущих релизах. Следите за обновлениями в нашем 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-кода
- 🤖 Бот — управление токенами, запуск/остановка, статус, настройки
- 👥 Пользователи — база всех, кто писал боту
- 💬 Диалоги — переписки бота с пользователями в реальном времени
- 📢 Рассылки — массовая отправка сообщений по базе
- 📊 Аналитика — статистика использования бота
- 📑 Таблицы — таблицы данных проекта (контент, настройки)
💡 Вкладки и блоки постоянно обновляются и дополняются с каждым релизом.
Бот запускается прямо из интерфейса конструктора:
- На официальном сайте — пока работает нестабильно, актуальную ссылку можно получить в чате @bot_builder_chat. Скоро выпускаем глобально!
- Self-hosted (рекомендуется) — разверните конструктор у себя и запускайте ботов из своей инфраструктуры
Из конструктора (официальный сайт или self-hosted):
- Откройте вкладку «Код бота»
- Скачайте сгенерированный
.pyфайл - Отредактируйте под свои нужды (код полностью ваш, никакого чёрного ящика)
- Запустите на любом сервере, VPS или домашнем компьютере — независимо от конструктора
Разверните Bot Builder на своём сервере — и создавайте/запускайте ботов в своей инфраструктуре:
- Зарегистрируйтесь на Railway.app
- Создайте новый проект
- Подключите репозиторий с кодом
- Добавьте переменные окружения (см. docs/deployment/RAILWAY_QUICK_DEPLOY.md)
- Создайте PostgreSQL базу данных
- Запустите миграции базы данных
Подробные инструкции: docs/deployment/RAILWAY_QUICK_DEPLOY.md
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
Пошаговое руководство (нажми для раскрытия)
- Откройте Telegram и найдите @BotFather
- Напишите
/newbotи следуйте инструкциям - Вы получите токен вроде:
123456789:ABCdef...
- При первом запуске у вас уже есть проект по умолчанию с узлом "Старт"
- Если нужен новый проект, откройте вкладку "Проекты" (слева) и нажмите кнопку "+ Новый"
- В правой части нажмите кнопку "Бот"
- Вставьте токен, который вы получили от BotFather
- Токен сохранится автоматически
- Перетащите блок "Сообщение" на холст рядом с узлом "Старт"
- Напишите текст, который бот должен отправить
- В настройках блока укажите, что будет дальше:
- Кнопки - для выбора вариантов ответа
- Автопереход - перейти к другому блоку автоматически
- Ожидание ввода - дождаться сообщения от пользователя
- Добавьте еще блоки и настройте переходы между ними
- Откройте вкладку "Бот" (справа внизу)
- Нажмите кнопку "Запустить"
- Откройте своего бота в Telegram
- Тестируйте и улучшайте!
Полный список доступных блоков (нажми для раскрытия)
| Блок | Что он делает |
|---|---|
| 🔔 Триггер команды | Срабатывает при вводе команды (/start, /help, любая своя) |
| 💬 Триггер текста | Срабатывает на конкретное текстовое сообщение |
| 📩 Триггер входящего сообщения | Срабатывает на каждое входящее сообщение |
| 📤 Триггер исходящего сообщения | Срабатывает когда бот отправляет сообщение |
| 💬 Текстовое сообщение | Отправляет текст пользователю (поддержка Markdown) |
| 📁 Медиафайл | Отправляет фото, видео, аудио или документ |
| 💾 Сохранить ответ в переменную | Сохраняет ответ пользователя для дальнейшего использования |
| ✏️ Редактировать сообщение | Редактирует текст или кнопки уже отправленного сообщения |
| Пересылка сообщения в другой чат |
| Блок | Что он делает |
|---|---|
| 🔘 Триггер inline-кнопки | Срабатывает когда пользователь нажимает inline-кнопку |
| 🔔 Триггер нажатия кнопки | Срабатывает на каждое нажатие callback-кнопки |
| ⌨️ Клавиатура | Отправляет сообщение с reply-клавиатурой |
| ✅ Answer callback query | Отвечает на нажатие inline-кнопки (уведомление/alert) |
| Блок | Что он делает |
|---|---|
| 👥 Триггер сообщений в группе | Срабатывает на сообщения в групповых чатах |
| 📋 Создать тему форума | Создаёт новый топик в форум-группе |
| Блок | Что он делает |
|---|---|
| 🌐 HTTP-запрос | Отправляет запрос к любому внешнему API |
| 🗄️ PostgreSQL запрос | Выполняет SQL-запрос к базе данных |
| 🔀 Условие | Ветвление логики: "если... то... иначе..." |
| 📝 Установить переменную | Сохраняет значение в переменную для использования в других блоках |
| 📄 Конвертация файлов | Преобразование файлов между форматами |
В свойствах текстового сообщения можно прикрепить:
- 📸 Фотографии — JPG, PNG
- 🎬 Видео — видеоролики
- 🎵 Аудио — музыка и записи
- 📄 Документы — PDF, Word, Excel и другие
Настраивается в свойствах каждого блока:
- Кнопки — пользователь выбирает вариант, бот переходит на нужное сообщение
- Ожидание ввода — бот ждёт ответ, затем переходит дальше
- Автопереход — переход к следующему блоку автоматически
- Условные переходы — ветвление по значению переменных
💡 Список блоков постоянно пополняется. Следите за обновлениями!
🍕 Пошаговый пример создания бота (нажми для раскрытия)
Полнофункциональный бот для приема заказов пиццы с меню, выбором и подтверждением
|
⬇️
|
|
⬇️
|
|
⬇️
|
|
⬇️
|
|
⬇️
|
📋 Подробная инструкция (нажми для раскрытия)
- Откройте Telegram Bot Builder
- Создайте новый проект "Пиццерия"
- Получите токен от @BotFather
- Стартовое сообщение → "Добро пожаловать! Выберите пиццу 🍕"
- Кнопки выбора → ["🍕 Маргарита", "🍕 Пепперони", "🥬 Вегетарианская"]
- Сообщение с ожиданием → "Введите ваш адрес доставки"
- Финальное сообщение → "Спасибо за заказ! Ожидайте доставку 🚗"
- Старт → Приветствие (автопереход)
- Приветствие → Выбор пиццы (кнопки)
- Выбор пиццы → Адрес (любая кнопка)
- Адрес → Подтверждение (ожидание ввода)
- Нажмите "Сгенерировать код"
- Скачайте готовый 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())Вся документация проекта организована в папке 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 # 🤖 Промт для ИИ
Технические требования (нажми для раскрытия)
Бот запускается прямо из интерфейса — нажмите кнопку «Запустить» во вкладке «Бот». Сервер автоматически:
- Генерирует Python-код из вашей схемы
- Запускает бот как Python-процесс (через Worker Pool)
- Показывает логи и статус в реальном времени
⚠️ Важно: Python-зависимости устанавливаются один раз на сервере командойpip install -r requirements.txt. Все боты используют общее окружение.
Из вкладки «Код бота» можно скачать сгенерированный .py файл и запустить независимо от конструктора:
pip install -r requirements.txt # один раз
python bot.py # запуск ботаКод полностью ваш — можно редактировать, дополнять, деплоить куда угодно.
| Платформа | Подходит для | Документация |
|---|---|---|
| Railway | Быстрый деплой, автоскейлинг | RAILWAY_QUICK_DEPLOY.md |
| VPS (DigitalOcean, Linode) | Полный контроль | Стандартный запуск Python |
| Docker | Изоляция, воспроизводимость | docker compose up -d |
MIT License - используйте свободно для личных и коммерческих целей.
