March 16

Эффект живой печати в Telegram ✍️

Как добавить в своего бота функцию "живой печати" как у ChatGPT

Хотите, чтобы ваш бот не просто выдавал готовый текст, а печатал его на глазах у пользователя? Это создаёт эффект живого общения и удерживает внимание. Ниже — полная инструкция по интеграции этой функции в PuzzleBot.

🚀 Пошаговая инструкция

Шаг 1. Первый запрос — черновик с эффектом печати

Добавляем в команду действие HTTP-запрос.

Ссылка: https://api.telegram.org/botТОКЕН_БОТА/sendMessageDraft

Тип запроса: POST

Вид запроса: Произвольный

Тело запроса:

{

"chat_id": " USER_ID_TEXT ",

"draft_id": 777,

"text": " 🔍 Ищу информацию по вашему запросу...\n\n 🔎 Сканирую открытые источники...\n 📊 Анализирую базы данных... ⏳ \n 🔄 Сверяю полученные данные...\n ⚡ Формирую предварительный ответ...\n\nПожалуйста, подождите немного — я обрабатываю ваш запрос." }

Объяснение параметров:

  • chat_id — ID пользователя в Telegram (подставляется автоматически)
  • draft_id — уникальный идентификатор черновика. Одинаковый ID в нескольких запросах заставляет Telegram обновлять одно и то же сообщение, создавая анимацию печати
  • text — текст, который увидит пользователь

Заголовки:

Ключ: Content-Type

Значение: application/json

Дополнительные настройки:

  • Последовательность выполнения: До

Шаг 2. Искусственная задержка (таймаут)

Этот запрос нужен, чтобы пользователь успел увидеть первый черновик до того, как появится финальное сообщение.

Ссылка: https://24applab.ru/tools/timer/timeout.php?timesecond=5

Тип запроса: GET

Дополнительные настройки:

  • Последовательность выполнения: После

Объяснение:
Второй запрос создаёт искусственную паузу. Без неё третий запрос выполнится мгновенно, и пользователь не увидит анимацию печати.
👉 Подберите время (timesecond=5) под длину вашего текста. Для текста выше достаточно 4–5 секунд.

Шаг 3. Финальное сообщение (с кнопкой и сохранением в чате)

Теперь отправляем обычное сообщение, которое останется в истории чата навсегда.

Ссылка: https://api.telegram.org/botТОКЕН_БОТА/sendMessage

Тип запроса: POST

Вид запроса: Произвольный

Тело запроса:

{

"chat_id": " USER_ID_TEXT ",

"draft_id": 777,

"text": " 🔍 Ищу информацию по вашему запросу...\n\n 🔎 Сканирую открытые источники...\n 📊 Анализирую базы данных... ⏳ \n 🔄 Сверяю полученные данные...\n ⚡ Формирую предварительный ответ...\n\nПожалуйста, подождите немного — я обрабатываю ваш запрос.",

"reply_markup": {

"inline_keyboard": [

[

{

"text": "Название кнопки",

"callback_data": "Название команды"

}

]

]

}

}

Объяснение параметров:

  • chat_id — ID пользователя
  • text — финальный текст (можно изменить, добавив ✅ вместо ⏳)
  • reply_markup — объект, отвечающий за кнопки под сообщением
  • inline_keyboard — массив кнопок (можно добавить несколько рядов)
  • text (внутри кнопки) — надпись на кнопке
  • callback_data — данные, которые бот получит при нажатии (используйте для создания обработчика)

Заголовки:

Ключ: Content-Type

Значение: application/json

Дополнительные настройки:

  • Последовательность выполнения: После

⚠️ ВАЖНО: Почему текст в первом и третьем запросе должен быть одинаковым?

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

Если текст будет разным — анимация будет дёрганой, и пользователь заметит "склейку".

👉 Совет: в финальном сообщении можно заменить ⏳ на ✅, чтобы показать завершение процесса, но основную структуру текста лучше сохранить.

✅ Результат

Ваш бот теперь:

  1. Выводит текст с эффектом набора (благодаря sendMessageDraft)
  2. В конце оставляет в чате готовое сообщение с кнопкой (благодаря sendMessage)

Это выглядит максимально естественно и современно!

📌 Примечания

  • Не забудьте заменить ТОКЕН_БОТА на реальный токен вашего бота
  • draft_id должен быть уникальным для каждой цепочки сообщений (используйте 777, 778, 779...)
  • Метод sendMessageDraft работает только в личных чатах
  • Если нужно отправить файл — используйте sendDocument, sendPhoto и т.д. (через обычный sendMessage это не работает)

Нужна помощь в настройке?

Подписывайтесь на наш Telegram-канал @ecodetechinfo, где мы регулярно публикуем новые руководства, обновления и лучшие практики по созданию и монетизации Telegram-ботов.