我想通过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
);
答案 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);