Перейти к основному содержанию

BotMux

Веб-панель управления Telegram-группами и каналами через Bot API со встроенным обратным прокси для устаревших вебхук-ботов. Укажите токен бота — и BotMux определит, в каких чатах состоит бот, есть ли у него права администратора, и предоставит полнофункциональную веб-панель для мониторинга, аналитики и администрирования. Управляйте несколькими ботами из одного экземпляра.

Ключевые возможности

  • Управление несколькими ботами — запуск нескольких ботов в одном экземпляре с индивидуальной настройкой
  • Обратный прокси — опрос Telegram и пересылка обновлений как вебхук POST-запросов на устаревшие бэкенды
  • Long Polling — Telegram-совместимый эндпоинт getUpdates для pull-интеграций
  • Прокси API — прозрачный прокси к api.telegram.org с перехватом исходящих сообщений бота
  • Мониторинг сообщений — сбор в реальном времени с полнотекстовым поиском и поддержкой ответов
  • Маршрутизация между ботами — пересылка сообщений между ботами с обратным путём Source-NAT
  • LLM-маршрутизация — интеллектуальная маршрутизация на основе ИИ через любой OpenAI-совместимый API
  • Мосты протоколов — связь Slack, вебхуков и других протоколов с Telegram
  • Аналитика — статистика сообщений, почасовая активность, топ участников
  • Действия администратора — отправка, закрепление, удаление сообщений; блокировка/разблокировка пользователей; управление администраторами
  • Аутентификация — сессионная авторизация с ролями, API-ключами и контролем доступа к ботам
  • i18n — интерфейс на английском и русском языках

Как это работает

BotMux берёт на себя long polling для каждого управляемого бота. Только один клиент может опрашивать токен бота одновременно (ограничение Telegram), поэтому:
  • Если ваш бот сейчас использует опрос (getUpdates) — у вас два варианта:
    1. Режим Long Polling (рекомендуется, без изменений кода) — включите “Long Poll” в настройках бота, затем направьте базовый URL API вашего бэкенда на BotMux (http://botmux:8080/tgapi/). Ваш бот продолжает вызывать getUpdates как раньше, но получает обновления от BotMux вместо Telegram.
    2. Режим Push — переключите бэкенд на приём вебхук-подобных HTTP POST-запросов. BotMux будет опрашивать Telegram и пересылать обновления на URL вашего бэкенда.
  • Если ваш бот уже использует вебхуки — BotMux переключит его на опрос и будет проксировать обновления обратно на вебхук-эндпоинт. Изменения не требуются.

Архитектура

Единый бинарный файл на Go, без внешних зависимостей кроме SQLite (чистый Go-драйвер). Веб-интерфейс встроен на этапе компиляции.
Telegram ──getUpdates──> BotMux (polling loop per bot)

                            ├── Management: tracks chats/messages in DB
                            ├── Proxy (push): POST update → Backend URL
                            ├── Long Poll: buffer in UpdateQueue → clients poll
                            ├── Routing: match rules → send via Target Bot
                            └── Bridges: translate external protocols → Telegram