Открыть сервис

InlineQueryResultArticle

InlineQueryResultArticle — это один из типов результатов, используемых в inline-режиме ботов мессенджера Telegram. Он представляет собой структуру данных, которая позволяет боту отправить пользователю в ответ на inline-запрос ссылку на веб-страницу (статью) с возможностью её предварительного просмотра и последующей отправки в чат.

Описание и назначение

Inline-режим — это функция Telegram, позволяющая пользователю взаимодействовать с ботом непосредственно из поля ввода сообщения, не переходя в диалог с ним. Для этого пользователь вводит имя бота (например, @mybot) и текст запроса. Бот получает этот запрос и должен вернуть список результатов, которые пользователь может выбрать и отправить в чат.

InlineQueryResultArticle является одним из базовых типов таких результатов. Он предназначен для отправки текстового сообщения, которое при выборе пользователем вставляется в поле ввода чата. Фактически, это способ превратить веб-страницу или любой другой текстовый контент в компактную карточку с заголовком, описанием и ссылкой.

Структура и параметры

Согласно документации Telegram Bot API, объект InlineQueryResultArticle имеет следующие основные поля:

  • type (строка, обязательное) — всегда имеет значение "article".
  • id (строка, обязательное) — уникальный идентификатор результата в рамках одного запроса. Должен быть от 1 до 64 байт.
  • title (строка, обязательное) — заголовок результата, который отображается пользователю.
  • input_message_content (объект, обязательное) — содержимое сообщения, которое будет отправлено в чат при выборе результата. Может быть одного из трёх типов: InputTextMessageContent, InputLocationMessageContent или InputVenueMessageContent.
  • reply_markup (объект, необязательное) — встроенная клавиатура, которая будет прикреплена к отправляемому сообщению.
  • url (строка, необязательное) — URL-адрес статьи. Если указан, он отображается в результатах поиска и может быть кликабельным.
  • hide_url (логическое значение, необязательное) — если true, URL не будет отображаться в сообщении после отправки.
  • description (строка, необязательное) — краткое описание результата.
  • thumbnail_url (строка, необязательное) — URL-адрес миниатюры (изображения), которая будет отображаться рядом с результатом.
  • thumbnail_width (целое число, необязательное) — ширина миниатюры в пикселях.
  • thumbnail_height (целое число, необязательное) — высота миниатюры в пикселях.

Пример использования

Рассмотрим простой пример на языке Python с использованием библиотеки python-telegram-bot. Бот, реализующий inline-режим, может вернуть результат типа InlineQueryResultArticle при запросе пользователя.

```python from telegram import InlineQueryResultArticle, InputTextMessageContent from telegram.ext import Application, InlineQueryHandler

async def inline_query(update, context): query = update.inline_query.query results = [] if query == "пример": results.append( InlineQueryResultArticle( id="1", title="Пример статьи", description="Это описание для примера", input_message_content=InputTextMessageContent( message_text="Вы выбрали статью с заголовком 'Пример статьи'." ), url="https://example.com/article";, thumbnail_url="https://example.com/thumb.png"; ) ) await update.inline_query.answer(results)

def main(): application = Application.builder().token("YOUR_TOKEN").build() application.add_handler(InlineQueryHandler(inline_query)) application.run_polling()

if __name__ == "__main__": main() ```

В этом примере при вводе пользователем @mybot пример бот возвращает один результат — карточку с заголовком «Пример статьи», описанием и ссылкой. При выборе этого результата в чат отправляется сообщение «Вы выбрали статью с заголовком 'Пример статьи'.».

Отличия от других типов результатов

InlineQueryResultArticle отличается от других типов результатов, таких как InlineQueryResultPhoto, InlineQueryResultVideo, InlineQueryResultAudio и InlineQueryResultDocument, тем, что он не привязан к медиафайлу. Он работает исключительно с текстовым контентом. Другие типы результатов требуют указания идентификатора файла (file_id) или URL-адреса медиафайла, который будет отправлен. InlineQueryResultArticle же позволяет отправить произвольный текст, который может быть как простым сообщением, так и результатом работы бота (например, сгенерированным текстом, результатом поиска, переводом и т.д.).

Применение в ботах

InlineQueryResultArticle широко используется в ботах для различных целей:

  • Поиск информации: бот может возвращать результаты поиска по базе данных, энциклопедии, справочнику.
  • Перевод текста: бот принимает запрос, переводит его и возвращает результат в виде статьи.
  • Генерация контента: бот может генерировать тексты, стихи, шутки и возвращать их как результат.
  • Справочные системы: бот может предоставлять справку по командам, документации или другим данным.
  • Интеграция с внешними сервисами: бот может запрашивать данные из внешних API (например, погода, курсы валют) и возвращать их в виде статьи.

Ограничения и особенности

  • Размер: содержимое input_message_content (текст сообщения) не должно превышать 4096 символов (лимит Telegram для одного сообщения).
  • Уникальность ID: идентификатор результата (id) должен быть уникальным в пределах одного запроса. Если бот возвращает несколько результатов, каждый из них должен иметь свой уникальный ID.
  • Кэширование: Telegram может кэшировать результаты inline-запросов. Это означает, что если бот возвращает одинаковые результаты для одинаковых запросов, они могут быть показаны без повторного обращения к боту. Для управления кэшированием можно использовать параметр cache_time в методе answerInlineQuery.
  • Поддержка Markdown и HTML: текст сообщения может содержать форматирование с помощью Markdown или HTML, что позволяет делать его более выразительным.

Заключение

InlineQueryResultArticle является фундаментальным строительным блоком для создания inline-ботов в Telegram. Он позволяет ботам предоставлять пользователям текстовую информацию в удобном и наглядном виде, что делает его незаменимым инструментом для реализации широкого спектра функций — от простого поиска до сложных генеративных систем.

Источники

  1. Документация Telegram Bot API: раздел «InlineQueryResultArticle».
  2. Официальный репозиторий библиотеки python-telegram-bot на GitHub.
  3. Руководство по разработке ботов для Telegram на официальном сайте Telegram.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →