Telegram REST API,在消息文本中发送换行符?

时间:2018-04-25 09:34:47

标签: php telegram telegram-bot

我想通过Telegram API在template<typename T> MyClass (const T& t, int count) : MyClass(t->getId(), count) {} 块或<pre>中发送消息(HTML或降价解析模式,我没有偏好)。

文本是一个包含一些换行符的长字符串。为了便于阅读,我想将其作为代码发送。新行采用```格式,因此Telegram API可以处理。

但是在代码块中我看不到换行符。我已经使用了其他机器人可以在代码块中向我发送一些行,所以我确定它是可能的。

有人可以帮我吗?

这是我目前正在使用的代码:

\n

消息是这样的:

$url = "https://api.telegram.org/$telegram_apikey/sendMessage?chat_id=$telegram_chatid&parse_mode=Markdown&text=```" . $message ."```";
        $telegramResult = file_get_contents($url
);

3 个答案:

答案 0 :(得分:5)

我明白了。

您需要发送\n,而不是将%0A发送到Telegram。

答案 1 :(得分:2)

我发现您已找到解决方案,但最好使用urlencode$message进行编码。

这应该将您的换行符转换为%0A,以及转换任何其他非法或潜在危险的字符,如&#?,如果它们出现在您的邮件中。

答案 2 :(得分:0)

@Azquilt是绝对正确的,您必须使用urlencode

$telegram_apikey = 'API_KEY';
$telegram_chatid = 777;

$product_count = 12345;
$created = 1234;
$total_time = 200;

$message = <<<TEXT
--------------------------------------------
------------ IMPORT RESULTS ----------------
--------------------------------------------
Product count: $product_count
Created: $created
Total time:  $total_time
--------------------------------------------
TEXT;

$message = urlencode("```$message```");

$url = "https://api.telegram.org/$telegram_apikey/sendMessage?chat_id=$telegram_chatid&parse_mode=Markdown&text=$message";
$telegramResult = file_get_contents($url);