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

Documentation Index

Fetch the complete documentation index at: https://botmux-dependabot-go-modules-modernc-org-sqlite-1-50-0.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

BotMux берёт на себя long polling для каждого управляемого бота. Только один клиент может опрашивать токен бота одновременно (ограничение Telegram).

Поток обновлений

Telegram ──getUpdates──> BotMux (polling loop per bot)

                            ├── Management: trackChat() / saveMessage() → SQLite
                            ├── Proxy (push): POST update → Backend URL
                            │                    └── webhook reply → Telegram API
                            ├── Long Poll: enqueue → UpdateQueue (ring buffer)
                            │                  Backend ──getUpdates──> /tgapi/ → dequeue
                            ├── Routing: match rules → send via Target Bot → Telegram
                            │                └── save mapping → route_mappings (SQLite)
                            └── Reverse Route: check mappings → reply via Source Bot
                                                                   (Source-NAT return)

Режимы интеграции

Боты с опросом

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

Боты с вебхуками

Если ваш бот уже использует вебхуки — BotMux переключит его на опрос и будет проксировать обновления обратно на вебхук-эндпоинт. На стороне бэкенда изменения не нужны.

Перехват исходящих сообщений

getUpdates в Telegram возвращает только входящие сообщения. Чтобы перехватывать сообщения, отправленные ботом, направьте бэкенд на прокси API BotMux (/tgapi/) вместо api.telegram.org. Прокси прозрачно пересылает запросы и сохраняет исходящие сообщения в базу данных.
# До (напрямую)
https://api.telegram.org/bot{TOKEN}/sendMessage

# После (через прокси BotMux)
http://localhost:8080/tgapi/bot{TOKEN}/sendMessage