【问题标题】:Dynamically creating inline keyboard buttons telegram api?动态创建内联键盘按钮电报api?
【发布时间】:2018-07-24 22:53:00
【问题描述】:

我正在尝试使用电报机器人 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' }]
                        ]
                    })
                };

假设我想在我的选项中动态传递菜单数组中的数据。我该怎么办?

【问题讨论】:

    标签: javascript node.js telegram-bot


    【解决方案1】:

    如果我理解你的话。

    我们将在这里使用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'
              }],
            ],
          }),
        }
    

    【讨论】:

      【解决方案2】:

      您也可以尝试使用简单的 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'}]
          ]
      */
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-09
        • 2020-11-02
        • 2020-02-03
        • 2017-06-04
        • 1970-01-01
        • 1970-01-01
        • 2017-02-14
        • 2017-08-10
        相关资源
        最近更新 更多