День: 18.07.2016

  • Пилим бота в телеграмме (для общего развития)

    Телеграм имеет большой мануал как делать ботов https://core.telegram.org/bots/api

    Но пример на PHP у них какой то излишне академический для php, решил немного исправить это недоразумение. PHP язык без понтов, и писать на нем надо как хочешь, а не по учебнику. Итак, как создать бота telegram на php:

    1 Для начала стучимся к @BotFather пишем ему имя бота которого хотим сделать и если имя не занято получаем key вида 241451777:ВВE69UDm9bo3vgM7pbВВВВaCFyLEWаbSk
    2 у ся на хостинге создаем файл bot.php и прописываем там вот такое

    <?php $botkey = '241451777:ВВE69UDm9bo3vgM7pbВВВВaCFyLEWаbSk'; //key полученный от botfather
    $webhook = "https://".$_SERVER['HTTP_HOST']."/".$_SERVER['REQUEST_URI'];
    $sendto = "https://api.telegram.org/bot$botkey/setWebhook?url=".urlencode($webhook);
    echo file_get_contents($sendto); 

    Запускаем скрипт, видим что то типа «Webhook was set»

    3 стираем этот код и пишем другой

    <?php $botkey = '241451777:ВВE69UDm9bo3vgM7pbВВВВaCFyLEWаbSk'; //key полученный от botfather
    
    $content = file_get_contents("php://input");
    $update = json_decode($content, true);
    $chatID = $update["message"]["chat"]["id"];
    
    if (!$chatID) die("no");
    
    $msg = "Нажмите на ссылку";
    $replyMarkup['keyboard'][] = array("Ссылка раз","Ссылка два"); 
    $replyMarkup['keyboard'][] = array("Ссылка три"); 
    $replyMarkup['keyboard'][] = array("Все взорвать 😅"); 
    
    if (substr_count($update["message"]["text"],'Ссылка раз')) {
    $msg = "Тут текст который видит юзер если нажмет кнопку 1";
    }
    
    if (substr_count($update["message"]["text"],'Ссылка раз')) {
    $msg = "Тут текст который видит юзер если нажмет кнопку 1";
    }
    
    $sendto ="https://api.telegram.org/bot$botkey/sendmessage?parse_mode=HTML&chat_id=".$chatID."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkup);
    file_get_contents($sendto);
    ?>
    

    Теперь пишем нашему боту в телеге и видим

    Красота! Если нажать на «Ссылка раз» то сработает условие «if (substr_count($update[«message»][«text»],’Ссылка раз’))» ну в целом понятно.

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