Как сделать игру в боте: 6 шагов
Создайте бота
В @BotFather отправьте
/newbot, задайте имя и юзернейм с окончанием bot. Если бот уже есть, переходите к следующему шагу.Зарегистрируйте игру
Отправьте @BotFather команду
/newgameи выберите бота. BotFather попросит описание и картинку. По желанию добавьте GIF с игровым процессом: с ним сообщение с игрой заметнее.Сделайте страницу игры
Игра это HTML5-страница по ссылке. Она должна подстраиваться под экран и работать во всех приложениях Telegram. Если какая-то платформа не поддерживается, покажите игроку предупреждение.
Отправьте игру в чат
Код бота присылает игру методом sendGame или через инлайн-режим. Под сообщением всегда есть кнопка Play с названием игры.
Открывайте игру по кнопке
Когда игрок нажимает Play, бот получает запрос с коротким именем игры (game_short_name) и отвечает методом answerCallbackQuery со ссылкой на страницу. Telegram откроет её во встроенном браузере.
Подключите рекорды
Метод setGameScore записывает результат: таблица рекордов в сообщении с игрой обновится сама. Метод getGameHighScores отдаёт рекорды, чтобы показать таблицу внутри игры.
Команды @BotFather для игр
| Команда | Что делает | Когда нужна |
|---|---|---|
| /newgame | Создаёт игру: описание, картинка, GIF по желанию | В самом начале |
| /listgames | Показывает список ваших игр | Чтобы найти нужную игру |
| /editgame | Правит игру | Сменить описание или картинку |
| /deletegame | Удаляет игру | Игра больше не нужна |
Пример: кнопки под сообщением с игрой
Сообщение: картинка игры «Пингвин на льдине», описание «Прыгай по льдинам и не упади в воду» и рекорды этого чата.
Кнопка 1, первая в первом ряду: Играть в «Пингвин на льдине». Первая кнопка всегда запускает игру.
Кнопка 2: Правила.
Кнопка 3: Сообщество игры.
Внутри игры кнопка «Поделиться счётом» вызывает TelegramGameProxy.shareScore() и отправляет игру с рекордом игрока в выбранный чат. Вызывать её можно только по нажатию самого игрока.
Как сделать игру в чате телеграм
Игру присылают в личный чат или в группу, и в группе игроки соревнуются между собой. Сообщение с игрой показывает рекорды этого чата. Когда кто-то ставит новый рекорд, в чат приходит служебное сообщение, а таблица обновляется.
Поделиться игрой можно стандартной кнопкой в правом верхнем углу. Ещё одну кнопку «Поделиться» делают на странице игры через скрипт telegram.org/js/games.js.
Игра на Gaming Platform или в мини-приложении
С апреля 2022 года игры можно делать и мини-приложением на JavaScript. С версии Bot API 8.0 мини-приложение умеет переходить в полноэкранный режим в портретной и альбомной ориентации, а это удобно для игр.
Gaming Platform проще для игр с рекордами в чате: таблица и служебные сообщения о рекордах работают сразу, без своего кода.
Где посмотреть примеры
В документации Telegram примерами игровых ботов названы @gamebot и @gamee.
Боты из каталога для этой задачи
Частые вопросы
Как сделать игру в телеграм боте?
Отправьте @BotFather команду /newgame, добавьте описание и картинку, сделайте HTML5-страницу игры. Бот присылает игру методом sendGame, а по кнопке Play открывает страницу через answerCallbackQuery.
Как сделать игру в чате телеграм для друзей?
Отправьте игру в группу: каждый играет у себя, а рекорды чата видны в сообщении с игрой. О новом рекорде Telegram пишет в чат служебным сообщением.
Можно ли поменять кнопки под игрой?
Можно добавить свои кнопки, например с правилами. Первая кнопка в первом ряду всегда должна запускать игру.
Почему изменения игры не видны сразу?
BotFather предупреждает, что изменения вступают в силу через несколько минут.
Источники
- Telegram HTML5 Games, открыто
- Telegram Bot Features: HTML5 Games и команды BotFather, открыто
- Telegram Mini Apps: полноэкранный режим, открыто
Обновлено
