【问题标题】:Get error for telegram inline keyboard获取电报内联键盘错误
【发布时间】:2017-09-03 17:02:26
【问题描述】:

在 url 中使用 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 错误。 但是删除&lt;b&gt;Hello&lt;/b&gt;后一切正常

【问题讨论】:

    标签: php keyboard inline telegram telegram-bot


    【解决方案1】:

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

    尝试改用Markdown 并将&lt;b&gt;Hello&lt;/b&gt; 更改为*Hello*

    所以你的第一行会变成:

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

    【讨论】:

    • 非常感谢您的帮助。有效。但我真的需要 html。我对 Markdown 不熟悉。例如,我不知道如何插入新行和不间断空格   ;.
    【解决方案2】:

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

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

    【讨论】:

    • @Ali 对不起,我的错误是json_encode,而不是urlencode。更新到我的帖子:P
    猜你喜欢
    • 2017-06-04
    • 2022-06-11
    • 1970-01-01
    • 2018-04-05
    • 2017-12-10
    • 2020-11-02
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多