Не отправляет ли телеграм-бот запрос webhook на сервер, если используется inline_keyboard?

  • 20 августа 2023 г. 6:16
Ответы на вопрос 2
Телеграм-боты могут использовать inline_keyboard, и это не должно повлиять на отправку запросов на сервер webhook. Проблема, скорее всего, кроется в другом месте.

В вашем случае, проблема может быть связана с неправильным форматированием inline_keyboard. Вам нужно поместить каждую кнопку в отдельный массив, а также включить эти массивы внутрь еще одного массива. 

Попробуйте изменить ваш код следующим образом:

```php
$telegram->sendMessage([
    'chat_id' => $telegram->input->message->chat->id,
    'text' => 'Вы находитесь в главном меню',
    'reply_markup' => json_encode([
        'inline_keyboard' => [
            [
                ['text' => 'refresh', 'callback_data' => 'LALALALA']
            ],
            [
                ['text' => 'LALALALA', 'callback_data' => 'LALALALA']
            ]
        ]
    ])
]);
```

Обратите внимание, что я удалил лишние квадратные скобки, чтобы каждая кнопка была отдельным элементом массива.

Если проблема все еще не решена, вам может потребоваться проверить другие аспекты вашего кода или настроек сервера webhook.
На чистом PHP, если закрыть все скобки в этом кусочке кода, вся информация отображается и отправляется:

```php
$resp = [
    'chat_id' => $chat_id,
    'text' => 'Вы находитесь в главном меню',
    'reply_markup' => json_encode([
        'inline_keyboard' => [
            [
                [
                    'text' => 'refresh',
                    'callback_data' => 'LALALALA'
                ]
            ],
            [
                [
                    'text' => 'LALALALA',
                    'callback_data' => 'LALALALA'
                ]
            ]
        ]
    ])
];
$url = "https://api.telegram.org/bot$bot_token/sendMessage?" . http_build_query($resp);
file_get_contents($url);
```

Это предполагает, что передается правильный `chat_id`. Если будет неправильный `chat_id`, то клавиатура не будет отображаться, и проблема будет именно в этом, а не в вебхуке. Перед тем, чтобы сделать вывод о том, что "не отправляется запрос вебхука на сервер", необходимо сначала сформулировать, из какого источника вы получили это сообщение об ошибке. Впрочем, главной проблемой является отсутствие логирования. Не представляю, как можно писать ботов без базового логирования, которое включает следующие детали:

1. Входные данные, полученные через вебхук.
2. Запрос, отправленный в Telegram.
3. Все ошибки PHP.
4. Дополнительное отладочное логирование и другие подробности.
Похожие вопросы