电报内联键盘出错

时间:2017-09-03 17:02:26

标签: php keyboard inline telegram telegram-bot

在网址中使用html标记时,我遇到了尝试使用电报内联键盘的问题。

$var = urlencode("https://api.telegram.org/bot/sendMessage?chat_id=@channel&parse_mode=html&text=\xF0\x9F\x8C\x8D+<b>Hello</b>");
$text = "Hi";
   $keyboard = [
      'inline_keyboard'=>[
       [
           ['text'=>'Click','url'=>$var]
       ]
   ]
];
$keyboard = json_encode($keyboard);
$url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=MY_ID&parse_mode=html&reply_markup=".$keyboard."&text=".$text;

我收到BUTTON_URL_INVALID错误。 但删除<b>Hello</b>

后一切正常

2 个答案:

答案 0 :(得分:0)

不完全确定这背后的原因是什么,但在这种情况下似乎html不能用作parse_mode

尝试使用Markdown,然后将<b>Hello</b>更改为*Hello*

所以你的第一行将改为:

$var = urlencode("https://api.telegram.org/bot/sendMessage?chat_id=@channel&parse_mode=Markdown&text=\xF0\x9F\x8C\x8D+*Hello*");

答案 1 :(得分:0)

您需要发送URL编码的JSON,因此只需使用"....&reply_markup=" . json_encode($keyboard) . "&text=..."

即可

您可以var_dump($keyboard)var_dump("to string: $keyboard")自己证明这一点。