Кнопка обратного вызова Node Telegraf - PullRequest
0 голосов
/ 13 апреля 2020

Для чего нам нужно передать данные на кнопку обратного вызова на простой клавиатуре (не в строке), если это не имеет значения?

Пример:

const mainMenuKeyboard = Markup.InlineKeyboard([
  Markup.callbackButton('Add', 'addAction),
  ]).resize().extra();

Теперь, если я хочу поймать действие "addAddress", я могу просто сделать это:

bot.action('addAction',(ctx) => <WHATEVER>);

Все работает просто отлично, но, когда я хочу использовать простую клавиатуру (не встроенную) в моем проекте, я не могу поймать это действие, используя " bot.action ("addAction") "Мне нужно использовать" bot.hears ("Add") ":

const mainMenuKeyboard = Markup.keyboard([
  Markup.callbackButton('Add', 'addAction),
  ]).resize().extra();

Не работает

bot.action('addAction',(ctx) => <WHATEVER>);

Работа

bot.hears('Add',(ctx) => <WHATEVER>);

1 Ответ

1 голос
/ 13 апреля 2020

Вы не должны использовать Markup.callbackButton (что означает InlineKeyboardButton в API бота) внутри Markup.keyboard ( ReplyKeyboardMarkup ).

Согласно документации API Telegram Bot, Markup.keyboard ( ReplyKeyboardMarkup ) должен содержать Массив массивов (а не просто массив Кстати, исправить это также) KeyboardButton . И Markup.callbackButton (что составляет Inlinekeyboardbutton в API) следует использовать для InlineKeyboard (не ответить на клавиатуре).

Для дополнительных примеров о том, как использовать их на телеграфе, посмотрите этот пример

...