Posted on

By

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

Телеграм имеет большой мануал как делать ботов 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”],’Ссылка раз’))” ну в целом понятно.

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