For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

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

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

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

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

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

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

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

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

Если бот работает через 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, большинство библиотек имеют возможности для смены этого адреса.

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

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

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

  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

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

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

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

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

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

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