2017-09-06 66 views
0

我试图用电报bot 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功能,通过菜单数组一个阵列。

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

您可以尝试使用过一个简单的for循环:

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'}] 
    ] 
*/