@olololollloo

Как прикрутить кнопки к методу sendGame в telegram bot API?

Вызываю https://api.telegram.org/bot_token/sendGame с параметрами в ПОСТ:

$option = ['chat_id' => '12345689', 'game_short_name' => 'name_game'];

так все норм работает, он сам приделывает инлайн кнопку "ИГРАТЬ В name_game" и присылает сообщение с игрой, но если сам дополняю кнопки то не работает:

$keyboard = json_encode(["inline_keyboard" => [
            [["text" => "Игра", "callback_data" => "name_game"]],
            [["text" => "Правила ", "url" => "https://www.youtube.com/1111"]]
        ]]);
$option = ['chat_id' => '12345689', 'game_short_name' => 'name_game', 'reply_markup' => $keyboard];

приходит ответ: Bad Request: REPLY_MARKUP_GAME_EMPTY

*сам inline_keyboard составлен верно и работает отлично с методом SendMessage, но с sendGame не рабоатет так как есть правило, что первая кнопка у sendGame должна быть кнопка игры, и как ее сделать не понятно
*буду рад решению данного вопроса на любом языке
  • Вопрос задан
  • 373 просмотра
Пригласить эксперта
Ответы на вопрос 2
Клавиатуру надо в json сериализовать
https://core.telegram.org/bots/api#sendgame
Ответ написан
Комментировать
@dan_daniels
# запуск игры проходит в 2 этапа
# 1 - отправить в чат месcедж с игрой(кнопка + гифка)):

import requests
HOOKURL = 'https://api.telegram.org/bot' + TOKEN + '/'

def sendgame(chat_id, user_id):
    URL = HOOKURL + 'sendGame'
    answer = {'chat_id': chat_id, 'game_short_name': game_short_name, 'cache_time': 20}
# cache_time' нужно увеличить если хостишь через ngrok и подобные 
# если не выставлять то квери будут просрачиваться и не успевать срабатывать 
    requests.post(URL, json=answer)
# этот код отправляет хук на сервер тг. 
# тг в ответ на него отправляет юзеру игру(гифку с кнопкой, но кнопка не активная),
# а на наш сервер квери
# достаем из нее callback_query_id = json['callback_query']['id'] и юзер айди 
# 2 - этап активировать кнопку, чтобы она запустила игру
# для этого на отправить запрос:
def sendGameUrl(callback_query_id, user_id):
    URL = HOOKURL + 'answerCallbackQuery'
    answer = {'callback_query_id': callback_query_id, 'url': GAME_URL}
    requests.post(URL, json=answer)
# вуаля
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы