电报bot嵌套的前一个button,node.js

如何从第三级节点返回到第一级节点之后的第三级节点? 我的问题是Back名称,因为这是相同,,, 这是我的代码:

  bot.onText(/\/start/, function onLoveText(msg) { const opts = { reply_to_message_id: msg.message_id, reply_markup: JSON.stringify({ keyboard: StartKeyboard, resize_keyboard:true, one_time_keyboard: true }) }; bot.sendMessage(msg.chat.id, 'Hello', opts); }); bot.onText(/\Back/, function onLoveText(msg) { const opts = { reply_to_message_id: msg.message_id, reply_markup: JSON.stringify({ keyboard: StartKeyboard, resize_keyboard:true, one_time_keyboard: true }) }; bot.sendMessage(msg.chat.id, 'Hello', opts); }); bot.onText(/\Back/, function onLoveText(msg) { // I Can't Use Backkk const opts = { reply_to_message_id: msg.message_id, reply_markup: JSON.stringify({ keyboard: BackKeyboard, resize_keyboard:true, one_time_keyboard: true }) }; bot.sendMessage(msg.chat.id, 'Hello', opts); }); 

在这里输入图像说明

你可能应该做的是保存状态,用户正在使用他的唯一ID。

我没有使用nodejs进行电报机器人的经验,所以下面的代码是伪的。

 userStateMap = {}; switch ($chat.text) { case "/start": sendWelcomeMessage($chat); userStateMap[$chat.id] = 0; // save the state break; case "1": $chat.text = "you clicked 1"; $chat.reply_markup = getCustomKeyboard(); return sendMessage($chat); userStateMap[$chat.id] = 1; // save the state break; case "about": $chat.text = "you clicked about"; $chat.reply_markup = getCustomKeyboard(); return sendMessage($chat); userStateMap[$chat.id] = 4; // save the state break; case "2": $chat.text = "you clicked 2"; $chat.reply_markup = getCustomKeyboard2(); return sendMessage($chat); userStateMap[$chat.id] = 2; // save the state break; case "previous": $chat.text = "you clicked previous"; $chat.reply_markup = getCustomKeyboard(userStateMap[$chat.id]); // use the saved state return sendMessage($chat); break; case "3": $chat.text = "you clicked 3"; $chat.reply_markup = getCustomKeyboard3(); return sendMessage($chat); userStateMap[$chat.id] = 3; // save the state break; } //customize getCustomKeyboard to receive the state and use it to calculate the next keyboard 

所以你会在每次请求之后更新状态,对于像previous那样的请求,你将根据最后保存的状态来计算所需的键盘。

通过callback_queryInline Keyboards解决

 const helpKeyboard = [[{ text: `back`, callback_data: `back3` }]] bot.on('callback_query', msg => { if (msg.data == `back3`) { } }