sending message in telegram bot using curl
20,527
In curl method you should NOT use any data in url. as you see your url that get error has spaces that is not valid. This is a working curl code:
$website="https://api.telegram.org/bot".$botToken;
$chatId=1234567; //Receiver Chat Id
$params=[
'chat_id'=>$chatID,
'text'=>'MoonLight',
];
$ch = curl_init($website . '/sendMessage');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
Comments
-
Moonlight almost 4 years
I want to get my bot message from database and send to the user, It worked when my text was only 1 word,but now it doesn't work and shows the HTTP BAD REQUEST 400. I think I should use curl, but I didn't find any document useful for sending a long message from telegram bot.(actually because I'm a beginner in php)
here is my code
$botToken="something"; $website="https://api.telegram.org/bot".$botToken; $update = file_get_contents("php://input"); $update = json_decode($update, true); $chatID = $update["message"]["chat"]["id"]; $message = $update["message"]["text"]; define("dbhost", "localhost:3306"); define("dbuser", "sm"); define("dbpass", "sm"); define("database", "sm"); switch ($message){ case "/get": connected($chatID); break; } function sendMessage($chatID,$message){ $url =$GLOBALS[website]."/sendMessage?chat_id=".$chatID."&text=".$message; //file_get_contents($url); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); //checkJSON($chatID,$update); } function connected($chatID){ $conn = mysql_connect(dbhost,dbuser,dbpass); if(! $conn ) { die('Could not connect: ' . mysqli_error()); } mysql_select_db( database ); $strSQL = "SELECT text FROM bott WHERE id= '1' "; $result = mysql_query($strSQL) or die('SQL Error :: '.mysql_error()); $row = mysql_fetch_assoc($result); $message=$row['text']; sendMessage($chatID,$message); mysql_close($conn); } function checkJSON($chatID,$update){ $myFile = "log.txt"; $updateArray = print_r($update,TRUE); $fh = fopen($myFile, 'w') or die("can't open file"); fwrite($fh, $chatID ."\n\n"); fwrite($fh, $updateArray."\n\n"); fclose($fh); } ?>
this is the error when I use file_get_contents
[08-Jul-2016 12:27:35 America/Chicago] PHP Warning: file_get_contents(https://api.telegram.org/bot218048829:AAF7baKISagQfALp4OIPh- yU_hMOnpFGU0A/sendMessage? chat_id=98506693&text=Introduction%0D%0AA+COMPUTER+PROCESSOR+such+as+Intel%92s+i486+used+to+cost+around+the+same+as+a+small+car.+Nowadays+a+chip+with+similar+power+is+the+price+of+a+chocolate+bar.%0D%0A): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/sfduiir1/public_html/php.php on line 29
This code doesn't send anything to the user.