我正在开发一种电报机器人,该机器人可以在导航场景中询问不同的问题,并且希望用户能够随时返回到宝贵的一步。我想出一个位置值,它是一个简单的变量。但这没有用,我没有其他想法,可能有人可以查看我的代码并弄清楚我做错了什么,或者有其他解决方案吗?

先感谢您!

import telebot

bot = telebot.TeleBot("Token")

@bot.message_handler(commands=['start'])
def handle_start(message):
   menu = telebot.types.ReplyKeyboardMarkup(True, False)
   menu.row('Chat')
   menu.row('Not today')

   bot.send_message(message.from_user.id, 'Hi there!', reply_markup=menu)
   position = 0
   return (position)

@bot.message_handler(content_types=['text'])
def handle_text(message):
   if message.text == 'Chat':
      main_menu_1 = telebot.types.ReplyKeyboardMarkup(True, False)
      main_menu_1.row('Good')
      main_menu_1.row('Bad')

      bot.send_message(message.from_user.id, 'How are you today?', reply_markup=main_menu_1)
      position = 1.1
      return (position)

   elif message.text == 'Good':
      sub_menu_1_1 = telebot.types.ReplyKeyboardMarkup(True, False)
      sub_menu_1_1.row('How are you?')
      sub_menu_1_1.row('Bye')

      bot.send_message(message.from_user.id, 'I am glad for you', reply_markup=sub_menu_1_1)
      position = 2.1
      return (position)

   elif message.text == 'Bad':
      sub_menu_1_2 = telebot.types.ReplyKeyboardMarkup(True, False)
      sub_menu_1_2.row('Alright')
      sub_menu_1_2.row('Why?')

      bot.send_message(message.from_user.id, 'I dont care)', reply_markup=sub_menu_1_2)
      position = 2.2
      return (position)

   elif message.text == 'Not today':
      main_menu_2 = telebot.types.ReplyKeyboardMarkup(True, False)
      main_menu_2.row('Not in a mood')
      main_menu_2.row('You are just a machine')

      bot.send_message(message.from_user.id, 'Why not?', reply_markup=main_menu_2)
      position = 1.2
      return (position)

   elif message.text == 'Not in a mood':
      sub_menu_2_1 = telebot.types.ReplyKeyboardMarkup(True, False)
      sub_menu_2_1.row('Its all good')
      sub_menu_2_1.row('See you')

      bot.send_message(message.from_user.id, 'Sorry to hear that(', reply_markup=sub_menu_2_1)
      position = 2.4
      return (position)

   elif message.text == 'You are just a machine':
      sub_menu_2_2 = telebot.types.ReplyKeyboardMarkup(True, False)
      sub_menu_2_2.row('Not funny')
      sub_menu_2_2.row('Funny')

      bot.send_message(message.from_user.id, 'You are just a human', reply_markup=sub_menu_2_2)
      position = 2.5
      return (position)

@bot.message_handler(commands=['back'])
def handle_back(message):
   if position.handle_text == 0:
      bot.send_message(message.from_user.id, 'You are in the main menu already', reply_markup=main_menu)
   elif 1 >= position < 2:
    bot.send_message(message.from_user.id, 'You have returned to the main menu',reply_markup=main_menu)
   elif 2 >= position < 3:
    bot.send_message(message.from_user.id, 'You have returned to a submenu', reply_markup=main_flavor_menu)

bot.polling(none_stop=True)

最佳答案

代替使用back命令,您必须使用back按钮并以这种方式重写代码逻辑

关于python - 如何编写/back命令Python电报Bot?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48594379/

10-12 04:11