downloadПроксирование

Подключение ботов через метод проксирование.

circle-exclamation

Проксирование

Telegram Bot API имеет две схемы работы:

  1. webhook - когда пользователь пишет боту, сервер телеграм автоматически отправляет https запрос на адрес вашего бота

  2. getUpdates (long polling) - ваш бот самостоятельно запрашивает обновления у сервера телеграм

На схеме выше изображена стандартная схема обмена данными бота с Telegram серверами.

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

Так выглядит схема работы после подключения graspi.

Если бот работает через Webhook

Вы можете подключить бота вручную (не вводя токен), для этого при добавлении бота необходимо выбрать соответствующий пункт и следовать инструкциям. Вам будет нужно заменить ваш webhook на наш.

Если бот работает через getUpdate

Подключить бота работающего через метод getUpdate можно двумя способами, через API (см. раздел "Подключение бота через APIarrow-up-right") или заменой адрса api.telegram.org.

Боты такого типа самостоятельно запрашивают обновления у Telegram, с помощью HTTPS запросов используя метод getUpdate. Чтобы подключить бота к аналитике нужно изменить адрес api.telegram.org на адрес который выдаст вам система при подключении.

После смены адреса наша платформа будет проксировать все запросы на адрес api.telegram.org и собирать для вас статистику. На этот адресс можно слать не только запросы типа getUpdate но и все остальные типы запросов (отправка сообщений, файлов и т.д.) все запросы проксируются на сервера Telegram в неизменном виде.

Как изменить адрес подключение в боте

Изменение адреса api.telegram.org предусмотренно Telegram Bot API, большинство библиотек имеют возможности для смены этого адреса.

triangle-exclamation

Инструкции для различных библиотек

circle-info

Если вы не нашли инструкцию для своей библиотеки или у вас возникли проблемы с подключением обратитесь к нам в техническую поддержкуarrow-up-right или заполните форму в конце этой страницы.

Python

chevron-rightaiogram/aiogram v3hashtag

Репозиторий - https://github.com/aiogram/aiogramarrow-up-right

Информация как сменить хост в документации https://docs.aiogram.dev/en/dev-3.x/api/session/custom_server.htmlarrow-up-right

Чтобы изменить адрес подключения, необходимо добавить код:

И необходимо изменить вызов функции Bot добавив параметр session=session

Полный листинг кода

Обратите внимание на строки 11 и 12, в них импортируются объекты. В строках 51-53 задается адрес. В строке 56 добавляется атрибут , session=session

chevron-rightaiogram/aiogram v2hashtag

Информация как сменить хост в официальной документации arrow-up-right

Чтобы изменить адрес подключения, необходимо добавить код:

И необходимо изменить вызов функции Bot добавив параметр server=server

Полный листинг кода

Обратите внимание на строки 3, в ней импортируются объект. В строке 12 задается адрес. В строке 15 добавляется атрибут , server=server

chevron-righteternnoir/pyTelegramBotAPIhashtag

Репозиторий - https://github.com/eternnoir/pyTelegramBotAPIarrow-up-right

Чтобы изменить хост нужно импортировать apihelper и задать параметр API_URL. О том как изменить хост можно прочитать в официальной документацииarrow-up-right

Полный листинг кода

Для полноценного примера мы использовали пример из официального репозитория по адресу https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/echo_bot.pyarrow-up-right

Обратите внимание на строки 7 и 11. В них импортируется объект и изменяется адрес

chevron-rightpython-telegram-bot/python-telegram-bothashtag

Репозиторий - https://github.com/python-telegram-bot/python-telegram-botarrow-up-right

Информация как сменить хост в документации https://github.com/python-telegram-bot/python-telegram-bot/wiki/Local-Bot-API-Serverarrow-up-right

Вы можете изменить хост с помощью метода base_url, Для наглядности мы использовали базовый пример из документации. Обратите на строку 16 в ней изменяется адрес .base_url('https://tgrasp.co/bot')

PHP

chevron-righttelegram-bot-sdk/telegram-bot-sdkhashtag

Репозиторий - https://github.com/telegram-bot-sdk/telegram-bot-sdkarrow-up-right

Библиотека поддерживает работу с несколькими ботами, поэтому ниже представлено два варианта подключения

Если у вас один бот

Если у вас несколько ботов

chevron-rightphp-telegram-bot/corehashtag

Информация как сменить хост в документации https://github.com/php-telegram-bot/core#using-a-custom-bot-api-serverarrow-up-right

chevron-rightTelegramBot/Apihashtag

Информация как сменить хост в документации https://github.com/TelegramBot/Api?tab=readme-ov-file#local-bot-api-serverarrow-up-right

На момент написание этой документации возможность смены адреса присутствует только в dev версии 2.6. По умолчанию устанавливается версия 2.5

Обновите вашу версию библиотеки до версии 2.6

Измените в composer.json на"^2.6" и добавьте параметры "minimum-stability": "dev", "prefer-stable": true

Изменение адреса

При создании объекта BotApi передайте четвертым параметром наш адрес

chevron-rightdefstudio/telegraphhashtag

Репозиторий - https://github.com/defstudio/telegrapharrow-up-right

Изменить адрес подключения вы можете в конфигурации defstudio/telegraph. Замените значение в параметре telegram_api_url на нужный адрес (https://tgrasp.co)

Подробней про файл конфигурации в документацииarrow-up-right

JavaScript

chevron-rightyagop/node-telegram-bot-apihashtag

Для того чтобы изменить хост нужно передать параметр baseApiUrl: 'https://tgrasp.co' в атрибут options при создании обьекта new TelegramBot(token, [options])

Полный листинг кода

Для полноценного примера мы использовали пример из официального репозитория по адресу https://github.com/yagop/node-telegram-bot-api/blob/master/examples/polling.jsarrow-up-right

Обратите внимание на строку 12, в ней изменяется адрес

chevron-rightgrammyjs/grammYhashtag

Инструкция как изменить адрес в официальной документации - https://grammy.dev/guide/api#configuring-grammy-to-use-the-local-bot-api-serverarrow-up-right

Для подключения измените создание объекта Bot

Пример

В качестве примера мы использовали базовый пример из официальной документации. Обратите внимание на 4-7 строки в них изменяется адрес

chevron-righttelegraf/telegrafhashtag

Репозиторий - https://github.com/telegraf/telegrafarrow-up-right

Для подключения измените создание объекта Telegraf.

Ниже пример простого бота с измененным адресом. Обратите внимание на строки 5-8, в них изменяется адрес. Замените адрес на тот который вы получили в личном кабинете. После внесения изменений перезапустите бот.

Go

chevron-rightgo-telegram-bot-api/telegram-bot-apihashtag

Репозиторий - https://github.com/go-telegram-bot-api/telegram-bot-apiarrow-up-right

Используйте метод SetAPIEndpoint чтобы изменить хост подключения

Полноценный пример

Обратите внимание на строку 17, в ней изменяется адрес

chevron-righttucnak/telebothashtag

Репозиторий - https://github.com/tucnak/telebotarrow-up-right

Чтобы изменить хост подключения, передайте нужный адрес в параметр URL

Полноценный пример

Обратите внимание на строку 13, в ней изменяется адрес

Java

chevron-rightrubenlagus/TelegramBotshashtag

Репозиторий - https://github.com/rubenlagus/TelegramBotsarrow-up-right

В качестве примера мы использовали репозиторий https://github.com/rubenlagus/TelegramBotsExamplearrow-up-right

Для подключения входящего трафика нужно передать объект TelegramUrl в функцию TelegramBotsLongPollingApplication.registerBot()

Обратите внимание на строку 8 это стандартный метод подключение к TG Bot API. В следующей строке мы добавили 2 параметра в эту функцию, в том числе передаем новые адрес для подключения. Замените его на адрес который выдала вам система.

Распространенные ошибки

Все ошибки связанные с работой бота попадают в раздел ошибки ботаarrow-up-right в личном кабинете.

Код
Описание
Решение

403,404

  1. Убедитесь что используете верный адрес для подключения. Сверьте его с адресом который вам выдала система. Адрес tgrasp.co можно использовать только если был передан токен.

  2. Если вы используете 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

Убедитесь что вы отправляете запрос верной структуры. Иногда на серверах телеграм случаются проблемы и они могут отвечать этой ошибкой.

Нет соединения с сервером

Укажите верный регион вашего бота. Нужно выбрать тот регион где физически находится ваш сервер бота.

Используйте адрес, который выдала вам систем.

circle-info

Если вы не нашли нужную вам инструкцию напишите нам в чат на сайте или заполните форму ниже, мы пишем новые инструкции по запросу.

Последнее обновление