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

Подключение кода

Берите любую библиотеку для Telegram и укажите адрес Лизы https://bot.tech.liza.ru. Больше ничего менять не нужно: обработчики команд, кнопок и файлов работают как обычно.

Совместимость проверена на python-telegram-bot 21.6: команды, кнопки, правка сообщений, файлы, голосовые, long polling и вебхук.

from telegram.ext import Application, CommandHandler

BOT = "https://bot.tech.liza.ru"

app = (Application.builder()
.token("<ТОКЕН>")
.base_url(f"{BOT}/bot") # ← единственное отличие от Telegram
.base_file_url(f"{BOT}/file/bot") # чтобы get_file() скачивал с Лизы
.build())

async def start(update, context):
await update.message.reply_text("Привет из Лизы!")

app.add_handler(CommandHandler("start", start))
app.run_polling() # long polling — как в Telegram

base_file_url нужен, чтобы get_file() скачивал файлы с Лизы. Прокси и другие доработки не нужны.

Получение обновлений: getUpdates​

getUpdates работает как в Telegram, поэтому готовые библиотеки подключаются без доработок:

  • Long polling. timeout (до 50 секунд; больше — урезается до 50) держит запрос открытым до первого обновления — пауза между запросами не нужна.
  • Подтверждение через offset. Выдача не помечает обновление обработанным. Следующий запрос с offset = последний update_id + 1 подтверждает всё, что раньше. Если бот упал во время обработки, он получит то же обновление снова. offset меньше нуля возвращает последние обновления и подтверждает остальные.
  • Неподтверждённые обновления хранятся 24 часа.
  • Один опрашивающий. На один токен действует один запрос getUpdates: новый вытесняет предыдущий (тот получает ошибку 409). Пока задан вебхук, getUpdates тоже отвечает 409 — снимите его через deleteWebhook.
  • Параметр allowed_updates игнорируется.

Вебхук: setWebhook​

После setWebhook Лиза отправляет каждый Update JSON-запросом (POST) на указанный URL.

  • Если при установке указан secret_token, он передаётся в заголовках X-Telegram-Bot-Api-Secret-Token (стандарт Telegram — его проверяют python-telegram-bot и aiogram) и X-Liza-Bot-Api-Secret-Token.
  • Если ваш сервер ответил не 2xx, обновление остаётся в очереди и отправляется повторно по порядку — дедуплицируйте по update_id.
  • На 4xx (кроме 408 и 429) — не больше 3 повторов, затем обновление снимается.
  • На 5xx и сетевые ошибки — повторы с паузой 30 с · 2ⁿ (не больше часа), пока обновление не старше 24 часов.

Файлы​

getFile отдаёт относительный file_path; скачивайте файл по адресу https://bot.tech.liza.ru/file/bot<ТОКЕН>/<file_path>. Библиотеки делают это сами (в python-telegram-bot задайте base_file_url, как в примере выше). Не сохраняйте прямые ссылки на сервер, которые выдавали версии до 1.2.