Как я могу сделать встроенную клавиатуру с множественным выбором в боте Telegram с node js -Telegraf? - PullRequest
0 голосов
/ 05 мая 2020

Мне нужно, чтобы пользователь выбрал более одного варианта и сохранил его в сеансе

Я искал разные ресурсы, но не нашел способа сделать это

Я просто выяснил, как выбрать один элемент, сопоставив с клавиатуры и заменив соответствующий обратный вызов и текст нажатой кнопки btn текстом и обратным вызовом, которые я хочу

# Вот мой код

это функция



function ke(clickedbtn) {
    let keypad = [];
    let keys = [
      [
        {
          text: 'windows',
          callback_data: 'btn-1',
        },
      ],
      [
        {
          text: 'mac',
          callback_data: 'btn-2',
        },
      ],
      [
        {
          text: 'linux',
          callback_data: 'btn-3',
        },
      ],
      [
        {
          text: 'Delete',
          callback_data: 'delete',
        },
      ],
    ];
    keys.map((arr) => {
      let h = [];
      let btn = {};
      let cb = arr[0].callback_data;
      let tx = arr[0].text;
      if (cb == clickedbtn) {
        (btn.text = tx + ' ✅'), (btn.callback_data = cb + 'selected');
      } else {
        (btn.text = tx), (btn.callback_data = cb);
      }
      h.push(btn);
      keypad.push(hi);
    });
    return keypad;
  }

А это действие

 bot.action(/btn-[0-4]/, (ctx) => {
    let clicked = ctx.match[0];
    ctx.editMessageReplyMarkup({
      inline_keyboard: ke(clicked),
    });
    ctx.answerCbQuery();
  });

...