无法使用Telegram Bot发送带有俄语符号的消息

时间:2017-01-22 16:25:55

标签: php bots telegram

我为电报制作了一个简单的php 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当我使用第一次尝试机器人的确切单词时没有做任何事情。
  5. Keith Hughitt

    请向我解释它是如何可能的。以及如何解决它。

    更新。我的脚本以UTF-8编码

1 个答案:

答案 0 :(得分:3)

感谢您的建议。 我通过正确的URL编码解决了这个问题。我只是添加了urlencode函数:

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

    $message = urlencode($message);

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