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

Журнал изменений

Что поменялось в Liza Bot API и что это значит для уже работающих ботов. Версия API указана в OpenAPI-спецификации.

1.3.0 — 5 октября 2026​

Кнопки и answerCallbackQuery

  • answerCallbackQuery требует callback_query_id и принимает только выданный этому боту, не старше 15 минут и один раз — иначе 400 query is too old and response timeout expired or query ID is invalid (раньше любой id → true).
  • text — не длиннее 200 символов (иначе 400 MESSAGE_TOO_LONG).
  • Ответ видит только нажавший: всплывающее уведомление, с show_alert=true — диалог, url открывается как url-кнопка (показ — в следующей версии приложения). В чат больше ничего не пишется (раньше show_alert уходил сообщением, которое видели все).
  • Ответ номером кнопки в чате с несколькими ботами получает только бот, чьи кнопки показаны последними.

Ответы, правка, файлы

  • Неизвестный reply_to_message_id / reply_parameters.message_id — отправка без цитаты (раньше 400); 400 только при явном allow_sending_without_reply=false. Ответы send* содержат reply_to_message.
  • editMessage* с тем же содержимым — 400 message is not modified.
  • Повторная отправка по file_id сохраняет имя, mimetype, размер и размеры файла, который бот получил или отправил после 1.3; file_id, выданные раньше, работают как прежде (без метаданных); file_id неверного формата — 400. Ответы send* несут file_size / mime_type / file_name / width / height.
  • chat.type в ответах send* / edit* — private или group, как во входящих.

Ошибки вместо 500 и тихих исправлений

  • 403 bot was blocked by the user — человек ушёл, отклонил приглашение или удалил бота из личного чата (startChat и отправки; снимается, когда человек снова зовёт бота).
  • 403 bot was kicked from the group chat — отправка после исключения бота из группы.
  • startChat несуществующему пользователю — 400 user not found; getChat* без бота в чате — 400 chat not found (раньше 500).
  • setMyCommands с невалидной командой (заглавные буквы, «/», пробелы) — 400 вместо тихого исправления.
  • sendChatAction — только действия Telegram (иначе 400 wrong parameter action in request).
  • getChatMember — kicked для заблокированных, left для вышедших.

Вебхук и хранение

  • Вебхук: на 4xx (кроме 408/429) — до 3 повторов, затем апдейт снимается; на 5xx и сетевые ошибки — повторы с паузой 30 с · 2ⁿ до истечения 24 часов.
  • Очередь обновлений хранится 24 часа; сопоставления сообщений, кнопок и callback — 30 дней (более старые сообщения нельзя править, удалять и отвечать на их кнопки — 400; ответ на них уходит без цитаты).

В приложении (новая версия): кнопки без цифры «1» в чате, меню «/» по командам setMyCommands; команды бота важнее встроенных команд приложения (/leave, /logout в чате с ботом уходят боту). Показ ответа answerCallbackQuery и кнопка меню команд у поля ввода — в следующей версии приложения.

1.2.0 — 2 октября 2026​

  • entities для команд — обработчики команд библиотек срабатывают как в Telegram.
  • chat.type = group в группах (раньше всегда private).
  • from.is_bot для ботов и from.liza_user_id — полный Matrix ID человека.
  • Повторная доставка вебхука и заголовок X-Telegram-Bot-Api-Secret-Token; update_id в вебхуке больше не сбрасывается после рестарта.
  • Обычная клавиатура присылает текст кнопки.
  • Ответ send* для медиа содержит file_id.
  • getFile отдаёт относительный file_path — скачивайте через /file/bot<токен>/<file_path>.

1.1.0 — 1 октября 2026​

  • Long polling и подтверждение через offset.
  • Стабильный message_id (сохранённые раньше значения недействительны).
  • Правка пользователя приходит как edited_message.
  • Входящие голосовые, аудио, файлы и видео приходят без поля text.
  • callback_query.id имеет вид <chat_id>_<n>, а callback_query.message — сообщение бота с кнопкой.