Неправильный вывод сообщений ботом Telegram
@bot.message_handler(commands=['calc1'])
def text(chat_data: Message):
bot.send_message(chat_data.chat.id, 'Вычисление N с помощью <b>Pyrocalc</b>: \nВведите в чат: «поиск n», чтобы начать', parse_mode='html')
@bot.message_handler(func=lambda chat_data: chat_data.text.lower() == 'поиск n')
def handle_search_n(chat_data: Message):
if chat_data.text == 'поиск n' or 'Поиск n':
bot.send_message(chat_data.chat.id, 'Пожалуйста, введите известное значение <b>i</b> в следующем сообщении.', parse_mode='html')
Calculator.calcsave = 'поиск n'
elif chat_data.text != 'поиск n' or 'Поиск n':
bot.send_message(chat_data.chat.id, f'Ошибка! \n<b>i</b> Введите указанную в сообщении бота фразу!', parse_mode='html')
@bot.message_handler(func=lambda chat_data: Calculator.calcsave == 'поиск n')
def handle_i_value(chat_data: Message):
try:
i = int(chat_data.text)
if i > 0:
n = 2 ** i
bot.send_message(chat_data.chat.id, f'<b>N</b> = {n}', parse_mode='html')
else:
bot.send_message(chat_data.chat.id, f'Ошибка! \n<b>i</b> должна быть больше нуля!')
except ValueError:
bot.send_message(chat_data.chat.id, 'Пожалуйста, введите целое число для значения <b>i</b>.', parse_mode='html')
После вывода значения N, бот не должен повторно отправлять сообщение с просьбой "ввести число i", а бездействовать пока команда не будет введена снова. Пытался это реализовать, но безуспешно, надеюсь на помощь!
Ответы (1 шт):
Автор решения: Medvedev
→ Ссылка
После вывода N условие Calculator.calcsave == 'поиск n' сохраняется.
Как пример можно передать значение None:
i = int(chat_data.text)
if i > 0:
n = 2 ** i
Calculator.calcsave = None
return bot.send_message(chat_data.chat.id, f'<b>N</b> = {n}', parse_mode='html')
И добавил return, что б полностью завершить функцию и вывести сообщение в качестве результата.