Кейс: Театральный Радар — бот для мониторинга билетов
Задача клиента
Попасть на популярные спектакли в ведущих театрах Москвы сложно: билеты на аншлаговые постановки раскупают за минуты, а ручная проверка сайтов занимает много времени и не гарантирует результата. Нужно было создать сервис, который круглосуточно следит за афишами и мгновенно уведомляет пользователя о появлении билетов.
Решение от Flowcore
Мы разработали Telegram-бота "Театральный Радар", который автоматически отслеживает афиши 15+ московских театров, включая РАМТ, МХТ, Ленком, Сатирикон и другие площадки. Пользователь выбирает конкретные спектакли или целые театры, а бот сообщает о старте продаж, новых датах и появлении билетов.
Проект построен как полноценный подписочный сервис: с бесплатным лимитом отслеживаний, премиум-пакетами, оплатой через Telegram Payments и административными инструментами для промокодов, отчетов и статистики.
Ключевые реализованные возможности:
- Мульти-театральный парсинг: Асинхронный сбор данных с 15+ сайтов театров с учетом разных структур, API и динамического контента.
- Гибридный сбор данных: Для сайтов с открытым API используются прямые aiohttp-запросы, а для сложных JS-сайтов и защит — Playwright с браузерной эмуляцией.
- Гибкие подписки на события: Пользователь может отслеживать конкретный спектакль или все постановки выбранного театра.
- Уведомления о билетах и новых датах: Бот сообщает не только о появлении билетов, но и о расширении горизонта афиши, когда театр добавляет новые показы.
- Монетизация через ЮKassa: Реализованы премиум-подписки на 1, 3 и 12 месяцев через Telegram Payments с запросом email и автоматической отправкой чеков.
- Промокоды и администрирование: Администраторы могут создавать промокоды, смотреть статистику подписок и выгружать отчеты прямо через команды в боте.
- Аналитика источников: Детальное логирование действий пользователей и deep linking помогают отслеживать источники трафика и популярность спектаклей.
Технические детали
Проект построен на asyncio и aiogram 3, что позволяет боту оставаться отзывчивым во время регулярного мониторинга афиш. Каждый парсер вынесен в отдельный модуль: добавление нового театра сводится к созданию нового файла-парсера и подключению его в конфигурации.
APScheduler запускает проверки по расписанию. Для тяжелых парсеров, требующих длительных задержек и браузерной автоматизации, предусмотрен отдельный сервис, чтобы они не блокировали мониторинг остальных театров. SQLite хранит пользователей, театры, спектакли, подписки, промокоды и историю действий; для обновления структуры базы реализован механизм миграций.
Результат
Пользователи получили сервис, который берет на себя ежедневную рутину проверки театральных сайтов и сообщает о билетах быстрее ручного мониторинга. Проект готов к монетизации: есть freemium-модель, премиум-подписки, промокоды, отчеты и статистика для управления ростом сервиса.
Стек технологий
Python 3.10, aiogram 3, FSM, Playwright, aiohttp, BeautifulSoup4, SQLite, APScheduler, Telegram Payments, ЮKassa, Xvfb.