Skip to main content

🧭 tg-flowmap

Unified Telegram Bot Analysis & Benchmarking Suite: Static Code AST (SAST) + Dynamic Userbot Crawler (DAST) + AI UX Benchmarking.

License: MIT Python: 3.10+ Code style: black Tests: 259 passed

tg-flowmap — комплексный инженерный инструмент для аудита, визуализации и сравнения Telegram-ботов:

  1. SAST (Static AST): сканирует исходный код вашего бота без запуска, находит тупики, битые коллбеки, забытые команды меню и нарушения спецификации Telegram Bot API за 50 мс без единой зависимости.
  2. DAST (Telethon Crawler): аккуратно обходит интерфейс чужого бота-конкурента юзерботом по графу Дейкстры (без лишних /start, со стилями кнопок Telethon 1.44 и защитой от бана).
  3. 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)

Source distribution for tg-flowmap 0.1.0
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)

Table of built distributions (wheels) for tg-flowmap 0.1.0
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page