2017-03-18 34 views
1

我正在创建一个电报机器人Node.js,并且正在使用节点电报-object-api模块。
如何使用电报中的内嵌键盘创建分页

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

对于出场,我必须使用方法editMessageText但对于更新内嵌键盘我需要转移PARAM inline_message_id。不幸的是我无法理解如何去做。

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

+0

你有** ** inline_message_id只有当你的机器人在在线模式下使用(当用户键入@yourBotNickname到消息字段)。如果您知道** inline_message_id ** _or_ ** chat_id ** + ** message_id **,则可以编辑这些按钮。在该示例中,消息是由bot发送的,因此您应该使用** editMessageText **以及一对聊天和消息ID。 – mymedia

+0

非常感谢! 通过试验和错误,我仍然管理! –

回答

6

你需要通过更新分页与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); 
}); 
+0

非常感谢这个例子! 我可以编辑这个内联键盘! –