我正在处理telegram bot api,并将ReplayKeyboard
我的消息文本发送给用户。当用户单击按钮时,电报会将具有以下结构的帖子发送到我的webhook。这是帖子的json结构:
{
"update_id": *******,
"message": {
"message_id": ***,
"from": {
"id": *****,
"is_bot": false,
"first_name": "*****",
"username": "******",
"language_code": "en-US"
},
"chat": {
"id": *****,
"first_name": "******",
"username": "*****",
"type": "private"
},
"date": 1518716587,
"text": "Button Text"
}
}
我的问题是电报不接受重播键盘按钮的任何其他数据。所以,我必须使用字符串检查message.text
,这不是良好的做法。例如,如果按钮具有表情符号,则表情符号代码必须在检查中。此外,我有不同的菜单类型,我需要找出点击按钮的类型,但我只有按钮的文字。所以我需要为每个按钮分配 id 和类型。但我不知道我该怎么做。
以下是我的机器人发送给用户的帖子数据:
$keyboard = array(
'resize_keyboard' => true,
'keyboard' => array(
array(
array(
"text" => "Button Text"
//There is not any `id` or `type`,...
)
)
)
);
$post_fields = array(
'chat_id' => **********
'text' => ************,
'reply_markup' => json_encode($keyboard)
);
注意:我不想 InlineKeyboard ,我需要使用 RelplayKeyboard 。
如果不可能,还有其他方法吗?例如,在按钮文本中添加其他数据并将其隐藏在用户之外。
答案 0 :(得分:0)
您似乎需要保存每个用户 stat ,这样您就可以对类似的按钮文本做出适当的反应。
另请注意表情符号并不可怕!而且你不需要表情符号代码! 您只需将包含表情符号的文本与预定义字符串进行比较:
if('راهنما '===$receivedText)
doSomeMagic();