Русская документация. For English version see README.en.md.
- Назначение
- Возможности
- Архитектура
- Требования
- Установка
- Переменные окружения
- Docker
- Тесты и линтинг
- Команды и меню
- Логи
- Вклад
- Дорожная карта
- Лицензия и контакты
Telegram‑бот для показа спектаклей/событий из Profticket и оперативной аналитики продаж. Поддерживает персональные фильтры пользователей (по артистам) и админ‑панель с метриками.
- Главное меню: выбор месяца, персональный фильтр «👤Выбрать актёра/актрису», переход в «📊 Аналитика».
- Персональные показы: расписание только с участием выбранного артиста.
- Аналитика:
- 🏆 Топ продаж (спектакли) — валовые/чистые продажи;
- ⚡️ Топ скорости (спектакли) — текущий темп продаж;
- ⏳ Прогноз Sold Out — ближайшие sold out;
- 🎭 Топ продаж (артисты);
- 📅 Календарь продаж — по датам;
- 🔄 Топ по возвратам и 📉 Топ по % возвратов.
- Длинные ответы разбиваются на части («чанки») — не упираются в лимиты Telegram.
- Админ‑панель (🛠 Админка):
- 📈 Статистика — сводка/топы, выбранный артист у пользователей;
- 👥 Пользователи — активность, роли, топы по запросам/троттлингу;
- 🎭 Предпочтения — топ выбранных артистов, примеры пользователей, список без выбора;
- 🗄 База (шоу) — метрики по shows/истории мест, свежесть данных.
Админка доступна ADMIN_ID
и пользователям с User.admin=True
.
main.py
— запуск, middlewares, фоновое обновление данных.telegram/
— хендлеры, клавиатуры, фильтры, middlewares, утилиты.services/profticket/
— клиент и аналитика Profticket.alembic/
— миграции БД;alembic.ini
— конфиг Alembic.tests/
— pytest‑тесты для аналитики и утилит.
- Python 3.11
- PostgreSQL 14+
- Создайте окружение и установите зависимости:
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
- Скопируйте
.env.example
в.env
и заполните:
cp .env.example .env
- (Опционально) Примените миграции:
alembic upgrade head
- Запустите бота:
python main.py
См. .env.example
. Минимально нужны: BOT_TOKEN
/TEST_BOT_TOKEN
, ADMIN_ID
,
DB_URL
, COM_ID
, DEFAULT_TIMEZONE
. Для запуска в Docker установите
IN_DOCKER=true
— тогда используется BOT_TOKEN
.
Быстрый старт:
docker-compose up -d
Поднимет Postgres и бот. Проверьте переменные окружения.
pytest -q
ruff format . && ruff check --fix .
Тесты быстрые, сетевые вызовы замоканы.
- Нативное меню (см.
telegram/keyboards/native_menu.py
):/start
,/help
,/set_actor
,/analytics
. - Тексты кнопок —
telegram/lexicon/lexicon_ru.py
.
Настраиваются в telegram/utils/startup.py
(setup_logging
), выводятся в
stdout через coloredlogs
на уровне INFO.
Перед PR проверьте локально:
ruff format . && ruff check --fix .
pytest -q
- Соблюдайте Conventional Commits (например:
feat(telegram): ...
). - Не включайте секреты в коммиты; используйте
.env
.
- Пагинация в админ‑отчётах и аналитике.
- Экспорт CSV для предпочтений/топов.
- Поиск пользователя (id/username) и быстрая карточка.
- Управление ролями/баном из админ‑меню.
Лицензия — MIT (см. LICENSE
). Вопросы: см. ADMIN_USERNAME
в .env
.