Telegram bot API:我可以混合自定义键盘和force_reply吗?

时间:2015-07-18 21:08:36

标签: telegram-bot

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

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

键盘工作但不是force_reply。 强制回复自己的作品?我可以不将它与自定义键盘结合使用吗?

2 个答案:

答案 0 :(得分:5)

帮助你可能会迟到,但现在就这样了。

目前只允许一个std::regex regex_number("((\\b[0-9]+)?\\.)?[0-9]+\\b"); 字段,且此字段必须只包含以下类型之一:reply_markupReplyKeyboardMarkupReplyKeyboardHide(请参阅docs

在任何情况下,您都可以使用ForceReply直接在用户应用中弹出自定义键盘并对机器人进行编码,以便它只接受您自定义键盘中的一个答案。

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

答案 1 :(得分:2)

您需要指定这样的标记:

Sub XSLTransformAndImport()
On Error GoTo ErrHandle
    ' SELECT Microsoft XML, v6 AS VBA REFERENCE
    Dim xmldoc As New MSXML2.DOMDocument60, xslDoc As New MSXML2.DOMDocument60, newDoc As New MSXML2.DOMDocument60

    ' LOAD XML AND XSL FILES
    xslDoc.async = False
    xmldoc.Load "C:\Path\To\Input.xml"
    xslDoc.async = False
    xslDoc.Load "C:\Path\To\XSLTScript.xsl"

    ' TRANSFORM XML
    xmldoc.transformNodeToObject xslDoc, newDoc
    newDoc.Save "C:\Path\To\Output.xml"

    ' IMPORT INTO WORKBOOK AS TABLE
    Workbooks.OpenXML "C:\Path\To\Output.xml", , xlXmlLoadImportToList

ExitHandle
    ' RELEASE RESOURCES
    Set xmldoc = Nothing: Set xslDoc = Nothing: Set newDoc = Nothing
    Exit Sub

ErrHandle:
    MsgBox Err.Number & " - " & Err.Description, vbCritical
    Err.Raise xslDoc.parseError.ErrorCode, , xslDoc.parseError.reason
    Resume ExitHandle    
End Sub

如果您需要$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); 的其余部分的查询字符串处。