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.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With