Сделать инлайн-выдачу и игры
Что это
Инлайн-режим позволяет в любом чате набрать `@your_bot` и запрос, а потом отправить один из результатов бота. Игры — это HTML5-страницы: бот присылает их сообщением с кнопкой запуска, и в нём видны рекорды этого чата.
Как сделать
- В @BotFather: /setinline с подсказкой для поля ввода, /setinlinegeo — чтобы… В @BotFather: /setinline с подсказкой для поля ввода, /setinlinegeo — чтобы запрашивать геопозицию, /setinlinefeedback — чтобы получать `chosen_inline_result`.
- На каждый `inline_query` отвечай через `answerInlineQuery`: до 50 результатов… На каждый `inline_query` отвечай через `answerInlineQuery`: до 50 результатов 20 типов. Следующие страницы отдавай через `next_offset`, а кнопка `button` над выдачей ведёт в чат с ботом (`start_parameter`) или в мини-приложение (`web_app`).
- Игра: отправь @BotFather /newgame, пришли описание, картинку и, если хочешь,… Игра: отправь @BotFather /newgame, пришли описание, картинку и, если хочешь, GIF, прими условия и задай короткое имя игры.
- Отправляй игру через `sendGame` с `game_short_name` или как `InlineQueryResultGame`.
- Нажатие кнопки запуска приходит как `callback_query` с `game_short_name`:… Нажатие кнопки запуска приходит как `callback_query` с `game_short_name`: ответь `answerCallbackQuery` и передай в `url` адрес игры для этого игрока.
- Очки записывай через `setGameScore`; `getGameHighScores` вернёт игрока, по два соседа с каждой стороны и первую тройку.
Осторожно
- `query` — до 256 символов, `next_offset` — до 64 байт. По умолчанию выдача кешируется на 300 секунд и достаётся всем, кто наберёт тот же запрос, если не поставить `is_personal`.
- Обратная связь может завалить популярного бота: Telegram советует получать лишь 1/10, 1/100 или 1/1000 выбранных результатов.
- Первая кнопка в первом ряду всегда запускает игру (`callback_game`), и `url` игры работает только с неё.
- В каналы игры отправлять нельзя.
- `setGameScore` вернёт ошибку, если новый счёт не выше прежнего и не передан `force`.
С Gem
Gem не делает для твоего бота ни инлайн-выдачи, ни игр Bot API. Рядом другое: /newapp в @gembot собирает по описанию небольшое мини-приложение со своей ссылкой `t.me/gembot?startapp=<slug>`, хранилищем, таблицами лидеров и комнатами для совместной игры.
Источники
- https://core.telegram.org/bots/api#inline-mode
- https://core.telegram.org/bots/inline
- https://core.telegram.org/bots/api#games
- https://core.telegram.org/bots/features#html5-games