2017-01-22 80 views
1

我爲電報發送了一個簡單的php bot,它回覆了我的留言。 代碼:無法用電報Bot發送帶有俄羅斯符號的訊息

<?php 
set_time_limit(0); 

function SendMessage($message){ 
    global $website, $chatId; 
    file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$message); 
} 

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

$content = file_get_contents("php://input"); 
$update = json_decode($content, TRUE); 
$message = $update["message"]; 

$chatId = $message["chat"]["id"]; 
$text = $message["text"]; 

if ($text == "/start") { 
    SendMessage("welcome, it's nice to meet you"); 
} else { 
    SendMessage("сори"); 
} 

,一切都是正常的,但在某些時候我的機器人停止工作。我開始通過刪除所有可用的工具來進行調試。我發現有趣的結果。

  1. 在我第一次嘗試機器人並沒有發送任何東西。消息得到了俄文和英文符號。
  2. 在第二我刪除俄羅斯符號,它的工作。
  3. 但在第三我把一個俄語單詞,它也工作。
  4. BUTx2當我從第一次嘗試機器人使用確切的單詞沒有做任何事情。

images of results to make it clear

它是如何可能請給我解釋一下。以及如何解決它。

UPDATE。我的腳本使用UTF-8編碼

+1

什麼是您的腳本的編碼? –

+0

編碼是UTF-8 –

+1

歡迎使用PHP Unicode支持 – SeinopSys

回答

1

感謝您的建議。 我通過正確的URL編碼解決了這個問題。我只是增加了urlencode功能:

function SendMessage($message){ 
    global $website, $chatId; 

    $message = urlencode($message); 

    file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$message); 
}