Loading

Telegram webhook 设置自动获取发送的消息php

最近在搞telegram的自动回复消息功能:

首先设置webhook:

https://api.telegram.org/bot<token>/setwebhook?url=https://www.example.com/bot/bot.php

请求结果是:

{"ok":true,"result":true,"description":"Webhook is set"}

设置获取信息的监听脚本:

$botToken = <token >;
$website = "https://api.telegram.org/bot" . $botToken;

$request = file_get_contents('php://input');
$request = json_decode($request, true);

if (!$request) {
    // Some Error output (request is not valid JSON)
} elseif (!isset($request['update_id']) || !isset($request['message'])) {
    // Some Error output (request has not message)
} else {
    $chatId = $request["message"]["chat"]["id"];
    $message = $request["message"]["text"];


    switch ($message) {

        case "/test":
            sendMessage($chatId, "test");

            break;

        case "/hi":
            sendMessage($chatId, "hi there!");

            break;

        default:
            sendMessage($chatId, "default");
    }

    function sendMessage($chatId, $message)
    {
        $url = $GLOBALS[website] . "/sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message);
        url_get_contents($url);

    }


    function url_get_contents($Url)
    {

        if (!function_exists('curl_init')) {

            die('CURL is not installed!');
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $Url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }
}

基本都设置完成了!

posted @ 2022-08-27 16:24  Carver大脸猫  阅读(3392)  评论(0)    收藏  举报