node.js - 如何在 Telegram 中使用内联键盘创建分页

标签 node.js pagination telegram telegram-bot

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

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

对于外观,我必须使用方法editMessageText,但对于更新内联键盘,我需要传输参数inline_message_id。不幸的是我不明白该怎么做。

我将非常感谢任何更新内联键盘的示例以及它如何在this example中发布.

最佳答案

您需要使用 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);
});

关于node.js - 如何在 Telegram 中使用内联键盘创建分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42874286/

相关文章:

node.js - 指定草稿订单货币 Shopify

css - 分页器(在 BackGrid 中)- 左页和右页的 css/图像?

redis - 如何在毫秒级查询HBase表中的数据?

android - Telegram 发送未保存的联系人

javascript - 如何在浏览器中使用podio-js(没有Node.js)?

javascript - 测试时变量可能尚未初始化

java - 任何可以调用Java代码的 Node 模块

javascript - Backbone - 通过 Controller 中的一次获取调用填充多个模型

python - Telegram Bot : customise buttons position on keyboard

python - 如何在 Ubuntu 中分离进程