如何在电报中使用内联键盘创建分页

时间:2017-03-18 12:15:04

标签: node.js pagination telegram telegram-bot

我正在使用Node.js创建一个Telegram bot,我正在使用node-telegram-bot-api模块。

我目前的问题是:
使用内联键盘创建分页。
在文档here中,有一个我需要的有趣例子。

对于外观,我必须使用方法 editMessageText 但是对于更新内联键盘,我需要传输参数 inline_message_id 。不幸的是我无法理解如何做到这一点。

我将非常感谢您更新内联键盘及其在this example中的发布方式。

1 个答案:

答案 0 :(得分:8)

您需要通过editMessageText

传递更新的分页
var bookPages = 100;

function getPagination( current, maxpage ) {
  var keys = [];
  if (current>1) keys.push({ text: `«1`, callback_data: '1' });
  if (current>2) keys.push({ text: `‹${current-1}`, callback_data: (current-1).toString() });
  keys.push({ text: `-${current}-`, callback_data: current.toString() });
  if (current<maxpage-1) keys.push({ text: `${current+1}›`, callback_data: (current+1).toString() })
  if (current<maxpage) keys.push({ text: `${maxpage}»`, callback_data: maxpage.toString() });

  return {
    reply_markup: JSON.stringify({
      inline_keyboard: [ keys ]
    })
  };
}

bot.onText(/\/book/, function(msg) {
  bot.sendMessage(msg.chat.id, 'Page: 25', getPagination(25,bookPages));
});

bot.on('callback_query', function (message) {
    var msg = message.message;
    var editOptions = Object.assign({}, getPagination(parseInt(message.data), bookPages), { chat_id: msg.chat.id, message_id: msg.message_id});
    bot.editMessageText('Page: ' + message.data, editOptions);
});