Мы устали от зоопарка сервисов для Telegram и собрали свой SMM-комбайн на Python и микросервисах. Рассказываю, что под капотом
Введение
Привет, VC! Меня зовут Александр Лебедев. Около года назад я погрузился в мир ведения каналов в Telegram. Платформа зацепила сразу — живая аудитория, крутые форматы, почти безграничные возможности. Но довольно быстро я столкнулся с суровой реальностью SMM-щика.
Мой рабочий процесс превратился в хаос из десятка инструментов: один бот для отложенного постинга, Google Таблицы для аналитики на затраты и прибыль, еще один сервис для приема заявок в закрытый канал, и все это приходилось как-то связывать вручную. Это было неудобно, отнимало кучу времени и, честно говоря, просто бесило.
Я посмотрел на рынок и понял: да, есть много хороших, узкоспециализированных инструментов. Но нет ни одного, который бы закрывал все потребности администратора в одном окне. Так родилась идея создать свой продукт — не очередной "автопостер", а полноценный SMM-центр в Telegram. Мы назвали его Butler.
Сегодня я хочу рассказать не только о его функциях, но и о том, как мы его строили, с какими техническими вызовами столкнулись и почему выбрали именно микросервисную архитектуру.
Немного о том, что под капотом
С самого начала мы понимали, что проект будет сложным. Парсинг, работа с AI, постинг по расписанию, аналитика, конструктор ботов — все это создает большую нагрузку. Монолитное приложение здесь быстро бы уперлось в потолок производительности и стало бы кошмаром в поддержке.Поэтому мы сразу сделали ставку на микросервисную архитектуру, оркестрируемую через Docker Compose.
Основной стек: Язык — Python. Для взаимодействия с Telegram мы используем связку из Telethon (для сложных задач вроде парсинга от лица пользователя) и pyTelegramBotAPI (для классических ботов). Веб-часть, принимающая вебхуки, написана на Flask и работает под управлением Gunicorn.
Масштабирование и отказоустойчивость: Главная проблема — тяжелые операции. Парсинг сотен постов, генерация текста через AI или экспорт больших отчетов могут заблокировать бота на несколько секунд, а то и минут. Мы решили это классическим способом — через асинхронные задачи и очереди. Когда пользователь запускает тяжелую задачу, основной бот не выполняет ее сам. Он создает задачу и кладет ее в очередь на Redis.
Отдельные сервисы-воркеры, работающие в своих Docker-контейнерах, постоянно слушают эту очередь. Свободный воркер забирает задачу, выполняет ее в фоне и сообщает о результате. При увеличении нагрузки на бота нагрузка распределяется по отдельным инстансам, что позволяет не перегружать 1 бота на одновременную обработку множества запросов
Что это дает?
Основной интерфейс бота всегда остается отзывчивым. Падение сервиса парсинга (например, из-за изменений в Telegram) не затронет постинг или прием заявок. Система получается гораздо более живучей.
Базы данных: Мы используем MySQL для основных данных, PostgreSQL для нужд конструктора ботов и несколько инстансов Redis для кэширования, хранения сессий и организации очередей. Такое разделение позволяет изолировать данные разных подсистем.
Инфраструктура и мониторинг: Вся система разворачивается в Docker. В качестве единой точки входа и реверс-прокси выступает Traefik, который автоматически управляет SSL-сертификатами от Let's Encrypt. Для наблюдения за здоровьем системы мы развернули полноценный стек мониторинга: Prometheus + Grafana с агентами cAdvisor и Node Exporter. Мы в любой момент видим нагрузку на каждый сервис, потребление ресурсов и можем проактивно реагировать на проблемы.Такой подход позволил нам создать гибкую и масштабируемую платформу. Но главная цель была не просто написать код, а собрать все эти функции в одном удобном интерфейсе.
Уникальность — в интеграции. Что получилось в итоге?
Да, на рынке есть отдельные автопостеры и конструкторы ботов для автоприема и рассылок. Наша сила — в том, что мы объединили все это в единый, бесшовный процесс.
1. Умный AI-Ассистент: Контент без головной боли Вы подключаете каналы-источники, бот собирает оттуда посты. Затем в один клик наш AI, работающий через отдельный сервис-генератор, создает на их основе несколько уникальных версий текста по вашим промптам. Вы просто выбираете лучшую.
2. Визуальный календарь и гибкий постинг Все запланированные, опубликованные и отмененные посты видны в интерактивном календаре. Планировщик не даст вам выбрать прошедшее время и работает с точностью до минуты. Есть все нужные фичи: любые форматы, кнопки, автоподпись, таймеры удаления и дублирование постов в сетку каналов.
3. Конструктор ботов:
Автоматизация работы с аудиторией Это наша недавняя большая фича. Прямо в Butler вы можете создать своего бота-помощника для канала, который будет: Автоматически принимать заявки 24/7. Отправлять кастомные приветственные сообщения (текст, фото, кнопки). Делать массовые рассылки по базе подписчиков. Технически, когда вы создаете такого бота, наш основной сервис динамически запускает для вас новый Docker-контейнер с образом по заранее собранному шаблону. Это обеспечивает полную изоляцию и стабильность.
4. Аналитика и командная работа Бот умеет формировать отчеты по доходам от рекламы и выгружать аналитику по подписчикам в Excel. А для команд есть гибкая система ролей (Владелец, Админ, Контенщик), чтобы каждый сотрудник имел доступ только к нужным ему функциям.
Что дальше?
Мы создали инструмент, который закрыл нашу собственную боль. Вместо хаоса из пяти сервисов — один SMM-центр. Но мы не останавливаемся.
В планах — углубленная аналитика вовлеченности (ER), интеграция с Google Sheets и сервисами оплаты.Если вам, как и мне год назад, надоело прыгать между десятком вкладок и хочется системного подхода к ведению каналов — попробуйте.
Буду рад, если наш опыт и наш инструмент окажутся вам полезны.👉
Попробовать бота и автоматизировать свой канал можно здесь
Спасибо, что дочитали! Готов ответить на любые вопросы о продукте и технических решениях в комментариях.