【问题标题】:Telegram bot API: Can I mix a custom keyboard and a force_reply?Telegram bot API:我可以混合使用自定义键盘和 force_reply 吗?
【发布时间】:2015-10-08 08:13:44
【问题描述】:

我有一个自定义键盘,但要处理答案,我需要强制回复,所以我会在下一条消息中回复问题。我已经这样做了:

var opts = {
    reply_markup: JSON.stringify({ 
        keyboard: [['OK','Cancel']],
        one_time_keyboard: true,
        resize_keyboard: true,
        force_reply: true
    })
};

键盘有效,但 force_reply 无效。 强行回复自己的作品?我不能将它与自定义键盘结合使用吗?

【问题讨论】:

标签: telegram-bot


【解决方案1】:

帮助您可能为时已晚,但它就在这里。

目前只允许一个reply_markup 字段,并且该字段只能包含以下类型之一:ReplyKeyboardMarkupReplyKeyboardHideForceReply(请参阅docs

无论如何,您都可以使用ReplyKeyboardMarkup,它会直接在用户应用中弹出一个自定义键盘,并对您的机器人进行编码,使其只接受您自己的自定义键盘中的一个答案。

此外,如果您真的想强制用户回复,您可以在每个用户的无效回答之后继续发送相同的ReplyKeyboardMarkup

【讨论】:

    【解决方案2】:

    您需要像这样指定您的标记:

    $replyMarkup = array(
      'force_reply' => true,
      'selective' => true
    );
    

    如果你需要custom keyboard,你可以按照这个:

    $keyboradsValue = array(
       array("button 1","button 2"),
       array("button 3","button 4"),
    );
    $replyMarkup = array(
      'keyboard' => $keyboradsValue,
      'force_reply' => true,
      'selective' => true
    );
    

    之后,您需要使用json_encode 对您的对象进行编码

    $encodedMarkup = json_encode($replyMarkup, true);
    

    最后,您只需将上述代码放在查询字符串的其余部分sendMessage

    【讨论】:

    • 你真的试过这个吗?
    • 如果你想做一些事情,你必须调用一个函数。用户点击键盘后,该函数应该被调用,然后,结果通过另一个键盘返回给用户,或者通过 Telegram 给你的 URL 查询向用户显示一些东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2016-04-26
    • 2020-03-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多