Проксирование
Подключение ботов через метод проксирование.
Проксирование
Telegram Bot API имеет две схемы работы:
webhook - когда пользователь пишет боту, сервер телеграм автоматически отправляет https запрос на адрес вашего бота
getUpdates (long polling) - ваш бот самостоятельно запрашивает обновления у сервера телеграм

Чтобы сделать подключение к платформе простым и быстрым мы разработали специальный проксирующий сервер, который встраивается между сервером Телеграм и вашим ботом.

Если бот работает через Webhook
Вы можете подключить бота вручную (не вводя токен), для этого при добавлении бота необходимо выбрать соответствующий пункт и следовать инструкциям. Вам будет нужно заменить ваш webhook на наш.
Если бот работает через getUpdate
Подключить бота работающего через метод getUpdate можно двумя способами, через API (см. раздел "Подключение бота через API") или заменой адрса api.telegram.org.
Боты такого типа самостоятельно запрашивают обновления у Telegram, с помощью HTTPS запросов используя метод getUpdate. Чтобы подключить бота к аналитике нужно изменить адрес api.telegram.org на адрес который выдаст вам система при подключении.
После смены адреса наша платформа будет проксировать все запросы на адрес api.telegram.org и собирать для вас статистику. На этот адресс можно слать не только запросы типа getUpdate но и все остальные типы запросов (отправка сообщений, файлов и т.д.) все запросы проксируются на сервера Telegram в неизменном виде.
Как изменить адрес подключение в боте
Изменение адреса api.telegram.org предусмотренно Telegram Bot API, большинство библиотек имеют возможности для смены этого адреса.
Важно. В примерах используется адрес "https://tgrasp.co", вы можете использовать этот адрес только в случае если в личном кабинете был указан токен бота. В иных случаях используйте только тот адрес который вы получили в личном кабинете на этапе настройки бота.
Если в личном кабинете вы задали токен для бота, система выдаст вам адрес "https://tgrasp.co" иначе адрес будет "https://кодбота.tgrasp.co"
Инструкции для различных библиотек
Если вы не нашли инструкцию для своей библиотеки или у вас возникли проблемы с подключением обратитесь к нам в техническую поддержку или заполните форму в конце этой страницы.
Python
aiogram/aiogram v3
Репозиторий - https://github.com/aiogram/aiogram
Информация как сменить хост в документации https://docs.aiogram.dev/en/dev-3.x/api/session/custom_server.html
Чтобы изменить адрес подключения, необходимо добавить код:
И необходимо изменить вызов функции Bot добавив параметр session=session
Полный листинг кода
Обратите внимание на строки 11 и 12, в них импортируются объекты. В строках 51-53 задается адрес. В строке 56 добавляется атрибут , session=session
aiogram/aiogram v2
Информация как сменить хост в официальной документации
Чтобы изменить адрес подключения, необходимо добавить код:
И необходимо изменить вызов функции Bot добавив параметр server=server
Полный листинг кода
Обратите внимание на строки 3, в ней импортируются объект. В строке 12 задается адрес. В строке 15 добавляется атрибут , server=server
eternnoir/pyTelegramBotAPI
Репозиторий - https://github.com/eternnoir/pyTelegramBotAPI
Чтобы изменить хост нужно импортировать apihelper и задать параметр API_URL. О том как изменить хост можно прочитать в официальной документации
Полный листинг кода
Для полноценного примера мы использовали пример из официального репозитория по адресу https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/echo_bot.py
Обратите внимание на строки 7 и 11. В них импортируется объект и изменяется адрес
python-telegram-bot/python-telegram-bot
Репозиторий - https://github.com/python-telegram-bot/python-telegram-bot
Информация как сменить хост в документации https://github.com/python-telegram-bot/python-telegram-bot/wiki/Local-Bot-API-Server
Вы можете изменить хост с помощью метода base_url, Для наглядности мы использовали базовый пример из документации. Обратите на строку 16 в ней изменяется адрес .base_url('https://tgrasp.co/bot')
PHP
telegram-bot-sdk/telegram-bot-sdk
Репозиторий - https://github.com/telegram-bot-sdk/telegram-bot-sdk
Библиотека поддерживает работу с несколькими ботами, поэтому ниже представлено два варианта подключения
Если у вас один бот
Если у вас несколько ботов
php-telegram-bot/core
Информация как сменить хост в документации https://github.com/php-telegram-bot/core#using-a-custom-bot-api-server
TelegramBot/Api
Информация как сменить хост в документации https://github.com/TelegramBot/Api?tab=readme-ov-file#local-bot-api-server
На момент написание этой документации возможность смены адреса присутствует только в dev версии 2.6. По умолчанию устанавливается версия 2.5
Обновите вашу версию библиотеки до версии 2.6
Измените в composer.json на"^2.6" и добавьте параметры "minimum-stability": "dev", "prefer-stable": true
Изменение адреса
При создании объекта BotApi передайте четвертым параметром наш адрес
defstudio/telegraph
Репозиторий - https://github.com/defstudio/telegraph
Изменить адрес подключения вы можете в конфигурации defstudio/telegraph. Замените значение в параметре telegram_api_url на нужный адрес (https://tgrasp.co)
Подробней про файл конфигурации в документации
JavaScript
yagop/node-telegram-bot-api
Для того чтобы изменить хост нужно передать параметр baseApiUrl: 'https://tgrasp.co' в атрибут options при создании обьекта new TelegramBot(token, [options])
Полный листинг кода
Для полноценного примера мы использовали пример из официального репозитория по адресу https://github.com/yagop/node-telegram-bot-api/blob/master/examples/polling.js
Обратите внимание на строку 12, в ней изменяется адрес
grammyjs/grammY
Инструкция как изменить адрес в официальной документации - https://grammy.dev/guide/api#configuring-grammy-to-use-the-local-bot-api-server
Для подключения измените создание объекта Bot
Пример
В качестве примера мы использовали базовый пример из официальной документации. Обратите внимание на 4-7 строки в них изменяется адрес
telegraf/telegraf
Репозиторий - https://github.com/telegraf/telegraf
Для подключения измените создание объекта Telegraf.
Ниже пример простого бота с измененным адресом. Обратите внимание на строки 5-8, в них изменяется адрес. Замените адрес на тот который вы получили в личном кабинете. После внесения изменений перезапустите бот.
Go
go-telegram-bot-api/telegram-bot-api
Репозиторий - https://github.com/go-telegram-bot-api/telegram-bot-api
Используйте метод SetAPIEndpoint чтобы изменить хост подключения
Полноценный пример
Обратите внимание на строку 17, в ней изменяется адрес
tucnak/telebot
Репозиторий - https://github.com/tucnak/telebot
Чтобы изменить хост подключения, передайте нужный адрес в параметр URL
Полноценный пример
Обратите внимание на строку 13, в ней изменяется адрес
Java
rubenlagus/TelegramBots
Репозиторий - https://github.com/rubenlagus/TelegramBots
В качестве примера мы использовали репозиторий https://github.com/rubenlagus/TelegramBotsExample
Для подключения входящего трафика нужно передать объект TelegramUrl в функцию TelegramBotsLongPollingApplication.registerBot()
Обратите внимание на строку 8 это стандартный метод подключение к TG Bot API. В следующей строке мы добавили 2 параметра в эту функцию, в том числе передаем новые адрес для подключения. Замените его на адрес который выдала вам система.
Распространенные ошибки
Все ошибки связанные с работой бота попадают в раздел ошибки бота в личном кабинете.
403,404
Убедитесь что используете верный адрес для подключения. Сверьте его с адресом который вам выдала система. Адрес tgrasp.co можно использовать только если был передан токен.
Если вы используете tgrasp.co, убедитесь что ID бота (с него начинается токен) совпадает с тем что вы передавали в graspil. Текущий ID бота в graspil отображается под полем с адресом подключения.
409
Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
Ошибка возникает когда сервера телеграм фиксируют два одновременных запроса getUpdates. Убедитесь что у вас запущен только один поток получения данных
502
502 Bad Gateway
Убедитесь что вы отправляете запрос верной структуры. Иногда на серверах телеграм случаются проблемы и они могут отвечать этой ошибкой.
Нет соединения с сервером
Укажите верный регион вашего бота. Нужно выбрать тот регион где физически находится ваш сервер бота.
Используйте адрес, который выдала вам систем.
Если вы не нашли нужную вам инструкцию напишите нам в чат на сайте или заполните форму ниже, мы пишем новые инструкции по запросу.
Последнее обновление