Помогите пофиксить цикл в TelegramAPI
Цикл выполняется не по порядку, а до первой функции и как-только выполнится до функции цыкл решает завершится.
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id, 'Введите число:')
@bot.message_handler(content_types=['text'])
def handle_text(message):
try:
number = int(message.text)
bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number))
except ValueError:
bot.send_message(message.chat.id, 'Вы ввели некорректное число!')
while number!=0:
bot.send_message(message.chat.id, 'Введите число:')
@bot.message_handler(content_types=['text'])
def handle_text(message):
try:
number1 = int(message.text)
bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number))
except ValueError:
bot.send_message(message.chat.id, 'Вы ввели некорректное число!')
bot.send_message(message.chat.id, f'ввёл: {number1}')
number -= 1
Ответы (1 шт):
Автор решения: Ben Puls
→ Ссылка
Откажитесь от циклов в таком решении, используйте метод bot.register_next_step_chandler для вызова функции.
@bot.message_handler(commands=['start'])
def start_message(message):
enter_number = bot.send_message(message.chat.id, 'Введите число:')
bot.register_next_step_handler(enter_number, attempt1)
def attempt1(message):
number = int(message.text)
try:
bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number))
while number != 0:
enter_number = bot.send_message(message.chat.id, 'Введите число:')
bot.register_next_step_handler(enter_number, attempt2)
number -= 1
except ValueError:
bot.send_message(message.chat.id, 'Вы ввели некорректное число!')
def attempt2(message):
number1 = int(message.text)
try:
bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number1))
except ValueError:
bot.send_message(message.chat.id, 'Вы ввели некорректное число!')
bot.send_message(message.chat.id, f'ввёл: {number1}')
Насколько я понял, если пользователь вводит отличное от нуля число, то мы просим ещё раз ввести его число.
Сообщите, ту ли задачу выполняет мой код.