2017-09-06 1 views
0

電報ボットAPIを使用して私の電報ボットにボタンを送信しようとしています。今のところ、ボタンを作成するには、フィールドの値をハードコードする必要がありますが、配列を通して動的にインラインキーボードボタンを作成し、配列インデックスと配列値をパラメータとして渡したいとします。それについてどうすればいいですか? これはこれまで私が試したことです。インラインキーボードボタンテレグラムAPIを動的に作成しますか?

var menu =["Nightclub","Parks","Restaurants","Telecom","Internet"]; 
    var options = { 
        reply_markup: JSON.stringify({ 
         inline_keyboard: [ 
          [{ text: 'Some button text 1', callback_data: '1' }], 
          [{ text: 'Some button text 2', callback_data: '2' }], 
          [{ text: 'Some button text 3', callback_data: '3' }] 
         ] 
        }) 
       }; 

私はオプションで動的にメニュー配列内のデータを渡したいとします。どのように私はそれについて行くのですか?

答えて

3

もし私があなたをよく理解すれば。

ここでは、Array.map関数を使用して、メニュー配列を使用して1つの配列を作成します。

var menu = ["Nightclub", "Parks", "Restaurants", "Telecom", "Internet"]; 


    var options = { 
     reply_markup: JSON.stringify({ 
      inline_keyboard: menu.map((x, xi) => ([{ 
       text: x, 
       callback_data: String(xi + 1), 
      }])), 
     }), 
    }; 

ゴナ結果に:

{ 
     reply_markup: JSON.stringify({ 
     inline_keyboard: [ 
      [{ 
      text: 'Nightclub', 
      callback_data: '1' 
      }], 
      [{ 
      text: 'Parks', 
      callback_data: '2' 
      }], 
      [{ 
      text: 'Restaurants', 
      callback_data: '3' 
      }], 
      [{ 
      text: 'Telecom', 
      callback_data: '4' 
      }], 
      [{ 
      text: 'Internet', 
      callback_data: '5' 
      }], 
     ], 
     }), 
    } 
1

あなたもループするための単純なを使用して試すことができます:

var keyboard = []; 
var menu = ['Nightclub', 'Parks', 'Restaurants', 'Telecom', 'Internet']; 

for (var i = 0; i < menu.length; i++) { 
    keyboard.push([{'text': menu[i], 'callback_data': (i + 1)}]); 
} 

{ 
    'reply_markup': JSON.stringify({ 
    inline_keyboard: keyboard 
    }) 
} 


/* The result will be: 
{ 
    'reply_markup': JSON.stringify({ 
    inline_keyboard: [ 
     [{'text': 'Nightclub', 'callback_data': '1'}], 
     [{'text': 'Parks', 'callback_data': '2'}], 
     [{'text': 'Restaurants', 'callback_data': '3'}], 
     [{'text': 'Telecom', 'callback_data': '4'}], 
     [{'text': 'Internet', 'callback_data': '5'}] 
    ] 
*/ 
関連する問題