@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);
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ar2rsoft
PHP-developer
вы же в переменную $reply_markup вставляете массив $keyboard, надо его при вставке обработать json_encode()
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 50 000 руб.
Vigrom Челябинск
До 150 000 руб.
Vigrom Саратов
До 150 000 руб.