MRUT_book
@MRUT_book
ара ара

Чтобы продолжить требуется написать значение 2 раза, как исправить?

Привет, делаю анкету в боте и возникла такая проблема, что чтобы продолжить(перейти на следующий вопрос) значение надо написать 2 раза, а не 1, как исправить?

@bot.message_handler(content_types=['text'])
         def ans4(message):
             bot.send_message(message.chat.id, '4.Какой у вас опыт работы? \nПримерное количество контрактов!')
             bot.register_next_step_handler(message, ansk)
         @bot.message_handler(content_types=['text'])
         def ansk(message):
             if not message.text.isdigit():
                 bot.send_message(message.chat.id, 'Ошибка! Напишите значение в цифрах! \nКакой у вас опыт работы?')
                 bot.register_next_step_handler(message, ansk)
             else:
                global salary
                salary = message.text.strip()
                bot.register_next_step_handler(message, ans5)
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
mlt_melt
@mlt_melt
У вас идет вложенность хэндлеров. Да и вообщем, для фунции ansk не нужен декоратор, так как вы используете register_next_step_handler
@bot.message_handler(content_types=['text'])
def ans4(message):
    bot.send_message(message.chat.id, '4.Какой у вас опыт работы? \nПримерное количество контрактов!')
    bot.register_next_step_handler(message, ansk)

def ansk(message):
    if not message.text.isdigit():
        bot.send_message(message.chat.id, 'Ошибка! Напишите значение в цифрах! \nКакой у вас опыт работы?')
        bot.register_next_step_handler(message, ansk)
    else:
        global salary
        salary = message.text.strip()
        bot.register_next_step_handler(message, ans5)


И еще один совет: не используйте global. Это плохая практика. Например, если вы попробуете параллельно использовать бота с нескольких аккаунтов, то глобальные переменные будут переопределяться каждый раз для всех юзеров. Это может (99%) вызвать ошибки
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы