如何为先前发送的消息获取内联键盘?

时间:2018-03-23 20:35:44

标签: bots telegram telegram-bot

考虑以下顺序:

  1. 电报机器人向Message发送InlineKeyboardMarkup User InlineKeyboardMarkup到特定CallbackQuery
  2. 当用户点击message的其中一个按钮时,机器人会收到inline keyboard
  3. 的回复
  4. InlineKeyboardMarkup包含一个reply_markup对象,代表原始邮件,该邮件已在步骤1中发送,但据我在API文档中看到,CallbackQuery不包含任何内容有关InlineKeyboardMarkupMessage
  5. 的信息

    那么有可能获得最初发送的function MYMODULE_form_alter(&$form, &$form_state, $form_id) { global $user; if ($form_id == 'TYPE_node_form') { // or if (strpos($form_id, '_node_form') !== false) { $node = $form_state['build_info']['args'][0] ; if (! check_if_user_can_edit($user, $node)) { drupal_set_message(t('Restricted'), 'error'); drupal_goto('<front>'); } } } 的{​​{1}}吗? 如果无法获得它,在这种情况下是否有任何解决方法?

2 个答案:

答案 0 :(得分:1)

目前无法获取已发送邮件的InlineKeyboardMarkup

您最接近此解决方案的方法是传递callback_data中的相关数据,然后使用此信息构建新的InlineKeyboardMarkup

答案 1 :(得分:0)

更新2019年6月1日

最近向reply_markup对象Telegram Bot API developers added InlineKeyboardMarkup类型的新字段Message

现在,您可以像以前这样发送以前发送过的键盘:Update.CallbackQuery.Message.ReplyMarkup