2017-03-18 16 views
1

私はTelegramをNode.jsで作成していますが、node-telegram-bot-apiモジュールを使用しています。
テレグラムでインラインキーボードを使用してページを作成する方法

私の現在の問題は次のとおりです。
インラインキーボードでページネーションを作成するには:
ドキュメント​​には、私が必要とする興味深い例があります。出演のために

、私はeditMessageText方法を使用する必要がありますが、更新インラインキーボードのために私は inline_message_idのparam を転送する必要があります。残念ながら、私はそれを行う方法を理解できませんでした。

インラインキーボードを更新する例と、それがthis exampleでどのようにリリースされるのか非常に感謝します。

+0

あなたは**あなたのボットは、インラインモード(ユーザーがメッセージ欄に@yourBotNicknameを入力している)で使用されている**ときにのみinline_message_idています。 ** inline_message_id ** _or_ ** chat_id ** + ** message_id **を知っている場合は、これらのボタンを編集できます。そのサンプルではボットからメッセージが送信されたので、** editMessageText **をチャットIDとメッセージ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

この例をありがとうございました! このインラインキーボードを編集できます。 –

関連する問題