const TelegramBot = require('node-telegram-bot-api');
const token = '';
const bot = new TelegramBot(token, { polling: true });
const keyboard = [
[
{
text: 'Ввести имя',
callback_data: 'userKeyboard',
}
],
[
{
text: 'Ввести число',
callback_data: 'numberKeyboard',
}
],
];
const userKeyboard = [
[ // в этом месте конечно можно сделать свою виртуальную клавиатуру и апдейтить оригинальный мессэдж в зависимости от нажатий на виртуальную клаву, но я так не хочу
// вообще есть возможность вводить в стандартное телеграммовское текстовое поле, и чтобы это сообщение аттачилось к текущему выбранному кейсу
{
text: 'кнопока 1',
callback_data: 'ready'
},
]
];
const numberKeyboard = [
[
{
text: 'кнопока 2',
callback_data: 'ready'
},
]
]
bot.on('message', (msg) => { // предположим это можно переписать на bot.onText(/start/)...
const chatId = msg.chat.id;
bot.sendMessage(chatId, 'Привет', {
reply_markup: {
inline_keyboard: keyboard
}
});
});
bot.on('callback_query', (query) => {
const chatId = query.message.chat.id;
if (query.data === 'userKeyboard') {
bot.editMessageReplyMarkup({ inline_keyboard: userKeyboard }, { chat_id: chatId, message_id: query.message.message_id })
} else if (query.data === 'numberKeyboard') {
bot.editMessageReplyMarkup({ inline_keyboard: numberKeyboard }, { chat_id: chatId, message_id: query.message.message_id })
} else {
bot.editMessageReplyMarkup({ inline_keyboard: keyboard }, { chat_id: chatId, message_id: query.message.message_id })
}
});
то есть
1) пользователь заходит и видит "Привет" и две кнопки "Ввести имя" и "Ввести число"
2) жмет на "Ввести имя"
3) Результат ввода в стандартное телеграммовское поле для ввода, жмет отправить
4) и как понять что он ввел имя, потому что (см.п.2)
или это надо какую-то внутреннюю сессию для пользователя делать? (что в данный момент видит то-то, потому что нажал то-то...)