🧭 tg-flowmap
Unified Telegram Bot Analysis & Benchmarking Suite: Static Code AST (SAST) + Dynamic Userbot Crawler (DAST) + AI UX Benchmarking.
tg-flowmap — комплексный инженерный инструмент для аудита, визуализации и сравнения Telegram-ботов:
- SAST (Static AST): сканирует исходный код вашего бота без запуска, находит тупики, битые коллбеки, забытые команды меню и нарушения спецификации Telegram Bot API за 50 мс без единой зависимости.
- DAST (Telethon Crawler): аккуратно обходит интерфейс чужого бота-конкурента юзерботом по графу Дейкстры (без лишних
/start, со стилями кнопок Telethon 1.44 и защитой от бана). - AI UX Benchmarker: сопоставляет вашего бота с ботом оппонента и формирует готовый промпт для ChatGPT / Claude («Сравни моего бота с конкурентом и дай 5 жестких UX-советов по воронке продаж»).
⚡ Быстрый старт (Zero-Boilerplate)
Никаких сложных флагов. Все отчёты и данные автоматически сохраняются в output/.
1. Установка
# Базовый легковесный режим (SAST, 0 зависимостей):
pip install tg-flowmap
# Режим краулера (с Telethon для обхода внешних ботов):
pip install "tg-flowmap[dast]"
# Полный комплект (DAST + интерактивный терминальный интерфейс Rich/Questionary):
pip install "tg-flowmap[full]"
2. Анализ своего бота (SAST)
tg-flowmap sast path/to/my_bot
Выводит аудит в консоль и автоматически сохраняет Markdown-отчёт:
output/my_bot_report.md.
Хотите интерактивный холст? Просто добавьте флаг--html.
3. Исследование чужого бота (DAST)
tg-flowmap dast @competitor_bot
Обходит интерфейс конкурента, сохраняет структуру меню, карточки и отчёт в
output/@competitor_bot/.
4. Ультимативное сравнение с конкурентом (AI Benchmark)
tg-flowmap compare path/to/my_bot @competitor_bot
Генерирует сравнительную матрицу
output/comparison.mdи готовый к отправке в ИИ файлoutput/llm_prompt.md!
💡 Быстрый интерактивный запуск на Windows (1-Click)
Дважды кликните run.bat (или перетащите файл/папку бота прямо на иконку run.bat):
- Откроется удобное меню с выбором режима и встроенным мастером настройки Telegram API (
config.json). - Пункт
[4]сразу же строит карту для встроенного демо-ботаexamples/sample_bot.pyи открывает её в браузере.
🔍 Интеллектуальный линтинг SAST v2
Статический анализатор проверяет десятки потенциальных дефектов архитектуры Telegram-интерфейса:
- ⚠️
[ORPHAN_COMMAND]: команда есть в коде (/help,/settings), но не зарегистрирована в системном меню черезset_my_commands(пользователи о ней не узнают из autocomplete-подсказки). - ⚠️
[GHOST_COMMAND]: пункт зарегистрирован вset_my_commands, но в кодовой базе нет обработчика (нажатие приведёт к тишине). - ⚠️
[MISSING_BACK]: на вложенном экране отсутствует кнопка возврата («Назад» / «В меню»). - ⚠️
[DEAD_END]: кнопка или переход ведут в тупик без последующих действий. - ⚠️
[DANGLING_HANDLER]: обработчик существует, но ни одна кнопка или команда на него не ссылается. - 🎨 Telegram Premium Emojis: автоматическое извлечение и валидация
icon_custom_emoji_idс локальным кэшированием. - 🐍 Современный синтаксис: полная поддержка Python 3.10+
match / case, aiogram 3 magic-фильтров (F.data == ...), Telebot и процедурных билдеров.
📊 Пример терминального вывода (SAST)
============================================================
🧭 TG-FLOWMAP — Telegram Bot Analyzer (SAST)
============================================================
Цель: C:\Projects\my_shop_bot
Всего экранов: 54
Всего связей: 35
Клавиатур найдено: 31
Тупиков (Dead-end):0
Ошибок эмодзи: 0
Без кнопки Назад: 2
------------------------------------------------------------
🔍 НАЙДЕННЫЕ ДЕФЕКТЫ И ПРЕДУПРЕЖДЕНИЯ:
1. ⚠️ [ORPHAN_COMMAND] Команда '/promo' объявлена в хэндлере, но отсутствует в 'set_my_commands'.
2. ⚠️ [MISSING_BACK] В экране 'catalog:filter' нет кнопки возврата (« Назад / В меню »).
3. ℹ️ [DANGLING_HANDLER] Обработчик 'admin_dump' определён в коде, но ни одна кнопка на него не ссылается.
📄 Отчёт сохранён: output/my_shop_bot_report.md
📦 JSON-структура сохранена: output/my_shop_bot_data.json
🤖 Пример сгенерированного AI-промпта (llm_prompt.md)
# Telegram Bot UX Benchmark: my_bot vs @competitor_bot
| Метрика | my_bot (Мой бот) | @competitor_bot (Конкурент) |
|---|---|---|
| Всего экранов | 14 | 32 |
| Всего кнопок | 28 | 64 |
| Тупиковые кнопки | 0 | 0 |
| Экраны без кнопки «Назад» | 0 | 2 |
[Структура экранов и кнопок обоих ботов...]
### Запрос для нейросети:
"Ты — ведущий UX/CPO архитектор Telegram-ботов. На основе структуры выше проведи
глубокий аудит: где мой бот проигрывает конкуренту по скорости оформления заказа
и какие 5 конкретных правок меню поднимут конверсию?"
🛠️ Архитектура модулей
tg_flowmap/core/: единая модель графа (BotMap), движок сравнения (comparator.py) и генератор промптов (llm_exporter.py).tg_flowmap/sast/: статический двухпроходный AST-парсер, вычисление выражений безeval(), двусторонний линтер Bot API.tg_flowmap/dast/: Telethon-краулер, навигация по Дейкстре, контекстный фильтр безопасностиsafety.py, SQLite state.tg_flowmap/visualizer/: компилятор автономных HTML5/SVG интерактивных карт (ForceAtlas2, ClearType DirectWrite).tg_flowmap/cli.py: единый CLI-интерфейс с поддержкой командsast,dast,compare.
🧪 Тестирование
pytest tests -v
258 passing tests (SAST, DAST, Safety, State, Regression) с полным контролем бюджета памяти и производительности.
Metadata
Release files for tg-flowmap 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tg_flowmap-0.1.0.tar.gz | 137.7 kB | Without provenance | Details for tg_flowmap-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tg_flowmap-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for tg_flowmap-0.1.0-py3-none-any.whl |
Total release size: 285.9 kB
Release files / tg_flowmap-0.1.0.tar.gz
| Download URL | tg_flowmap-0.1.0.tar.gz |
|---|---|
| Size | 137.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9580eed64afd0714010e41457b768dff6727ef78fa220b9700297f7073c99fe4
|
|
BLAKE2b-256 checksum How to use checksums |
106a5489a401a9ccdce8aca68dc513aafe066fe169b55f34998f629b91b1c0a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Release files / tg_flowmap-0.1.0-py3-none-any.whl
| Download URL | tg_flowmap-0.1.0-py3-none-any.whl |
|---|---|
| Size | 148.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e71ef5c0301f913426fb79722ba63af813ee0a7fe7507f2ed868d6f9e714651e
|
|
BLAKE2b-256 checksum How to use checksums |
be742b238afd8a197058e7a2325c7f4b7cef6c8c5d3dd5324eabe98e6cd55ca6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Security for tg-flowmap 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.