2017-02-20 23 views
-2

Я пытаюсь редактировать сообщения в телеграмме бота. Я использую следующий код. Я могу отправлять сообщения без проблем, но часть сообщения редактирования не работает. Он просто ничего не делает !!Использование сообщения редактирования в телеграмме bot

<?php 

if ($_SERVER['HTTPS'] != "on") { 
$url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
header("Location: $url"); 
exit; 
} 

$botToken="XXXX..."; 
$website="https://api.telegram.org/bot".$botToken; 

$content = file_get_contents("php://input"); 
$update = json_decode($content, true); 
$chatId = $update["message"]["chat"]["id"]; 
$message = $update["message"]["text"]; 

switch($message) { 
    case("action"): 
       sendMessage($chatId, "What should I do?"); 
    break; 

    case("add"): 
     editMessageText($chatId, "should I add?"); 

    break; 

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

function sendMessage($chatId, $message) { 

$url = $GLOBALS[website]."/sendMessage? chat_id=".$chatId."&text=".urlencode($message)."&reply_markup".$reply1; 
file_get_contents($url); 
} 

function editMessageText($chatId, $messageId, $message) { 

$url = $GLOBALS[website]."/editMessageText?chat_id=".$chatId."&message_id=".$messageId."&text=".urlencode($message); 
file_get_contents($url); 

} 

function file_get_contents_curl($url) { 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  

$data = curl_exec($ch); 
curl_close($ch); 

return $data; 
} 


?> 

Любое представление о том, что может быть неправильным с ним? Благодаря

+1

этот вопрос слишком общий характер, нет никакого способа узнать причину проблемы. Проверьте, используете ли вы все переменные, что возвращает '' file_get_contents '', проверьте, используете ли вы полный '' $ url''. Также вы можете проверить Если вы открываете URI со специальными символами, например пробелами, вам нужно кодировать URI с помощью urlencode(). –

+0

При разработке следует включить 'error_reporting (-1)'. '$ GLOBALS [сайт]' должен предупредить вас о чем-то .. Это, если вы не противоречите всем стандартам при определении констант в нижнем регистре. – Xorifelse

+0

Спасибо за комментарии. Я добавил весь код! – Sorena

ответ

0

Проблемы в этой части кода

case("add"): 
    editMessageText($chatId, "should I add?"); 

Вы не передаете параметры правильно. editMessageText требуется параметр message_id, который должен быть «Integer».

Это должен быть рабочим код

<?php 

    if ($_SERVER['HTTPS'] != "on") { 
    $url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
    header("Location: $url"); 
    exit; 
    } 

    $botToken="XXXX..."; 
    $website="https://api.telegram.org/bot".$botToken; 

    $content = file_get_contents("php://input"); 
    $update = json_decode($content, true); 
    $chatId = $update["message"]["chat"]["id"]; 
    $message = $update["message"]["text"]; 
    // get message_id 
    $messageId = $update["message"]["message_id"]; 
    switch($message) { 
     case("action"): 
        sendMessage($chatId, "What should I do?"); 
     break; 

     case("add"): 
     // add the 2nd parameter 
      editMessageText($chatId, $messageId, "should I add?"); 

     break; 

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

    function sendMessage($chatId, $message) { 

    $url = $GLOBALS[website]."/sendMessage? chat_id=".$chatId."&text=".urlencode($message)."&reply_markup".$reply1; 
    file_get_contents($url); 
    } 

    function editMessageText($chatId, $messageId, $message) { 

    $url = $GLOBALS[website]."/editMessageText?chat_id=".$chatId."&message_id=".$messageId."&text=".urlencode($message); 
    file_get_contents($url); 

    } 

    function file_get_contents_curl($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  

    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
    } 


    ?> 
+0

Спасибо. Но это не сработало. – Sorena

 Смежные вопросы

  • Нет связанных вопросов^_^