Перейти к основному содержанию
Прокси Telegram API по адресу /tgapi/bot{TOKEN}/{method} прозрачно перенаправляет все запросы на api.telegram.org.

Использование

Замените базовый URL Telegram API в вашем бэкенде:
# До
https://api.telegram.org/bot{TOKEN}/{method}

# После
http://localhost:8080/tgapi/bot{TOKEN}/{method}

Загрузка файлов

Отдельный эндпоинт для загрузки файлов доступен по адресу /tgapi/file/bot{TOKEN}/{file_path}. Это делает BotMux полной заменой URL загрузки файлов Telegram, позволяя настроить его как base_file_url в вашей библиотеке ботов:
# До
https://api.telegram.org/file/bot{TOKEN}/{file_path}

# После
http://localhost:8080/tgapi/file/bot{TOKEN}/{file_path}
Файлы WebP (стикеры) автоматически конвертируются в PNG. Типы контента определяются по расширению файла с fallback на определение по содержимому. Ответы включают заголовок Cache-Control: public, max-age=86400.

Аутентификация

Дополнительная аутентификация не требуется — токен бота в URL является авторизацией (аналогично Telegram API).

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

Для методов отправки прокси извлекает отправленное сообщение из ответа Telegram и сохраняет его в базу данных.

Перехватываемые методы

Ряд методов Telegram Bot API перехватывается и обрабатывается BotMux вместо пересылки в Telegram:
МетодПоведение
setWebhookНастраивает URL бэкенда бота в BotMux и включает режим прокси. Автоматически регистрирует неизвестных ботов через getMe. Поддерживает параметры url и drop_pending_updates.
deleteWebhookОчищает URL бэкенда и отключает режим прокси. Поддерживает drop_pending_updates.
getWebhookInfoВозвращает внутреннее состояние вебхука BotMux (url, pending_update_count, has_custom_certificate, max_connections, ip_address).
getUpdatesКогда включён long polling, обслуживается из внутренней очереди BotMux вместо пересылки в Telegram. Когда бот управляется BotMux, но long polling не включён, возвращает пустой результат для предотвращения конфликтов.
logOutВозвращает {"ok": true, "result": true} без пересылки. Предотвращает отключение токена на 10 минут.
closeВозвращает {"ok": true, "result": true} без пересылки. Предотвращает остановку экземпляра бота на стороне Telegram.