Не выполняется if когда условие исполнено

Рейтинг: 0Ответов: 1Опубликовано: 18.02.2023

Код:

@bot.message_handler(commands=["start"])
    def start(message):
      markup= types.ReplyKeyboardMarkup(resize_keyboard= True, row_width= 2)
      ygadovat = types.KeyboardButton ('Угадывать число')
      zagadovat = types.KeyboardButton ('Загадывать число')
      markup.add(ygadovat, zagadovat)
      bot.send_message(message.chat.id, "Приветствую! Давай начнем игру", reply_markup= markup)
    
    @bot.message_handler(content_types=["text"])
    def handle_text(message):
      if message.text == "Угадывать число":
        markup= types.ReplyKeyboardMarkup(resize_keyboard= True, row_width= 2)
        itd = types.KeyboardButton ('Это число чётное?')
        itbd = types.KeyboardButton ('Это число имеет 0 на конце?')
        markup.add(itd, itbd)
        bot.send_message(message.chat.id,'Я загадал число от 1 до 100, сможешь ли ты его угадать?',reply_markup= markup)
        y= random.randint(1, 10)
        @bot.message_handler(content_types=["text"])
        def handle_text(message):
          if message.text == "Это число чётное?":
            x= y % 2
            if x == 0:
              bot.send_message(message.chat.id,'Да')

Все работает до части, где говорится о четности числа, пробовал по всякому, подставлял else, все равно

Ответы

▲ 0

Твою задумку лучше всего сделать через

bot.register_next_step_handler(message,имя_функции)

(https://ru.stackoverflow.com/questions/1243528/Как-работает-метод-register-next-step-handler-в-pytelegrambotapi)

не стоит называть функции одним и тем же названием handle_text подправил твой код, должно работать

@bot.message_handler(commands=["start"])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)

    markup.add(types.KeyboardButton('Угадывать число'),
               types.KeyboardButton('Загадывать число'))
    bot.send_message(message.chat.id, "Приветствую! Давай начнем игру", reply_markup=markup)


@bot.message_handler(content_types=["text"])
def handle_text(message):
    if message.text == "Угадывать число":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
        markup.add(types.KeyboardButton('Это число чётное?'),
                   types.KeyboardButton('Это число имеет 0 на конце?'))
        
        bot.send_message(message.chat.id, 'Я загадал число от 1 до 100, сможешь ли ты его угадать?',
                         reply_markup=markup)
        y = random.randint(1, 10)
        bot.register_next_step_handler(message, nohandle_text)


def nohandle_text(message):
    if message.text == "Это число чётное?":
        x = y % 2
        if x == 0:
            bot.send_message(message.chat.id, 'Да')