У меня возникла проблема с while loop. Что делает этот блок кода: когда пользователь вводит 'Course registration' программа запрашивает ввод пользователем названия. После ввода у пользователя спрашивается, правильно ли он все ввел. И идея проста, просто зациклить этот момент, позволив пользователю уточнять название сколько угодно. Когда я запускаю этот код у меня while loop доходит до bot.send_message - write your course name и постоянно выводит это в чат пользователя. Я попытался решить эту проблему через next step handler, но это не помогло до этого делал через message handler, тоже не работает. По ощущениям он до ходит до отправки вопроса о названии курса и потом снова начинает сначала, не проходя функцию и next step handler. Вопрос в том, как это исправить? Я уже видел, что можно решить через зацикливание функцией, но хотелось бы разобраться с while.
Пояснения: строка с markup просто убирает кнопки из предыдущей жизнедеятельности бота
Пояснения: строка с markup просто убирает кнопки из предыдущей жизнедеятельности бота
Python:
course_name = 0
undef_name = True
@bot.message_handler(regexp = 'Course registration')
def coursereg(message):
while undef_name:
markup = types.ReplyKeyboardRemove(selective=False)
msg = bot.send_message(message.chat.id, 'Write your course name:',
reply_markup=markup)
def name(message):
global course_name
course_name = message.text
bot.send_message(message.chat.id,
f'Is *\{course_name}* yours course actual name?',
parse_mode='MarkdownV2')
markup = types.ReplyKeyboardMarkup(row_width=2)
yes_button = types.KeyboardButton('Yes')
no_button = types.KeyboardButton('No')
markup.add(yes_button, no_button)
bot.send_message(message.chat.id, 'Hi manager!', reply_markup=markup)
@bot.message_handler(func=lambda message: True)
def repeat(message):
if message == 'Yes':
undef_name = False
elif message == 'No':
pass
else:
bot.send_message(message.chat.id,
'choose one of the suggested options')
bot.register_next_step_handler(msg, name)