@9StarRu

Как в Telegram бота передать кнопки?

Нашел готовый код работающий с библиотекой telegram-bot-sdk

Задача стояла отказаться от использования библиотеки, ниже привожу переделанный мною код с закомментированным оригинальным кодом.

Проблема встала с созданием кнопок, все работает но кнопки при запуске бота /start не появляются. Отображается только приветственное сообщение: Имя, спасибо, что запустили меня!

Пожалуйста, помогите исправить ошибку.

Спасибо!

<?php
//include('vendor/autoload.php'); //Подключаем библиотеку
//use Telegram\Bot\Api; 

//$telegram = new Api('375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s'); //Устанавливаем токен, полученный у BotFather
//$result = $telegram -> getWebhookUpdates(); //Передаем в переменную $result полную информацию о сообщении пользователя



//определим константы
define('BOT_TOKEN','...');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');


//получаем информацию от бота
$content = file_get_contents("php://input");

//расшифровываем её
$update = json_decode($content, true);


$text = $update["message"]["text"]; //Текст сообщения
$chat_id = $update["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
$name = $update["message"]["from"]["first_name"];

$keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура

if($text){
     if ($text == "/start") {
        $reply = $name.", спасибо, что запустили меня! ";

        //$reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false ]);
        $reply_markup = API_URL . "replyKeyboardMarkup?keyboard=" . $keyboard . "&resize_keyboard=true&one_time_keyboard=false";

        //$telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
        $telegram = API_URL . "sendmessage?chat_id=" . $chat_id . "&text=" . $reply . "&reply_markup:" . $reply_markup;

    }elseif ($text == "/help") {
        $reply = "Информация с помощью.";
        //$telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply ]);
        $telegram = API_URL . "sendmessage?chat_id=" . $chat_id . "&text=" . $reply;

    }elseif ($text == "Картинка") {
        $url = "https://68.media.tumblr.com/6d830b4f2c455f9cb6cd4ebe5011d2b8/tumblr_oj49kevkUz1v4bb1no1_500.jpg";
        //$telegram->sendPhoto([ 'chat_id' => $chat_id, 'photo' => $url, 'caption' => "Описание." ]);
        $telegram = API_URL . "sendPhoto?chat_id=" . $chat_id . "&photo=" . $url . "&caption=Описание.";

    }elseif ($text == "Гифка") {
        $url = "https://68.media.tumblr.com/bd08f2aa85a6eb8b7a9f4b07c0807d71/tumblr_ofrc94sG1e1sjmm5ao1_400.gif";
        //$telegram->sendDocument([ 'chat_id' => $chat_id, 'document' => $url, 'caption' => "Описание." ]);
        $telegram = API_URL . "sendPhoto?chat_id=" . $chat_id . "&photo=" . $url . "&caption=Описание.";

    }elseif ($text == "Последние статьи") {
        $html=simplexml_load_file('https://eda.show/rss/');
        foreach ($html->channel->item as $item) {
     $reply .= " <a href='".$item->link."'>".$item->title."</a>";
        }
        //$telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true, 'text' => $reply ]);
        $telegram = API_URL . "sendmessage?chat_id=" . $chat_id . "&text=" . $reply . "&parse_mode=HTML";

    }else{
        $reply = "По запросу \"<b>".$text."</b>\" ничего не найдено.";
        //$telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode'=> 'HTML', 'text' => $reply ]);
        $telegram = API_URL . "sendmessage?chat_id=" . $chat_id . "&text=" . $reply . "&parse_mode=HTML";

    }
}else{
    //$telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Отправьте текстовое сообщение." ]);
    $telegram = API_URL . "sendmessage?chat_id=" . $chat_id . "&text=Отправьте текстовое сообщение.";

}

file_get_contents($telegram);
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ar2rsoft
PHP-developer
вы же в переменную $reply_markup вставляете массив $keyboard, надо его при вставке обработать json_encode()
Ответ написан
Ваш ответ на вопрос

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

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