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. Он позволяет ботам предоставлять пользователям текстовую информацию в удобном и наглядном виде, что делает его незаменимым инструментом для реализации широкого спектра функций — от простого поиска до сложных генеративных систем.
Источники
- Документация Telegram Bot API: раздел «InlineQueryResultArticle».
- Официальный репозиторий библиотеки
python-telegram-botна GitHub. - Руководство по разработке ботов для Telegram на официальном сайте Telegram.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →