Skip to content

Апдейты, приходящие Телеграм-ботам

Что такое апдейты

Апдейты (они же updates, то есть обновления) — это события, о которых сервер уведомляет бота. Это может быть апдейт о входящем сообщении, апдейт о вступлении участника в группу и так далее.

Я ещё много раз буду использовать это слово на страницах хендбука.

Главная сложность разработки ботов

Апдейты — почти единственный способ для вашей программы узнать что-то о чатах и сообщениях.

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

Если пользователь отправил боту сообщение, и вам нужно будет использовать текст сообщения позже, сохраните его.

Если вам понадобится иметь список пользователей бота, полученных сообщений и так далее — вам следует хранить эти данные. Скорее всего, для этого будет нужна база данных.

Если вы потеряете эту информацию, больше вы никак её не получите.

Telegram API

Некоторую информацию всё-таки можно запросить, используя Telegram API в обход Bot API: например, так можно получить сообщение по ID или полную информацию о пользователе. Полный список можно посмотреть на странице хендбука про API.

Получение апдейтов несколько раз

Ограничения Bot API не позволяют получать одни и те же апдейты несколько раз. Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.

В Telegram API такого ограничения нет. Всё потому, что Telegram API в основном предназначен для приложений: пользователь может пользоваться мессенджером через несколько приложений, каждое из которых должен получать новые сообщения. То же работает и для ботов. Если запустить несколько программ бота на Telegram API, каждая из них будет получать все апдейты. Кроме того, есть трюк, позволяющий получить старые апдейты второй раз.