Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Не работает код на питон

Здравствуйте, я только начал учиться и решил написать телеграмм бота, он должен при команде "Привет" предложить найти корень из числа, если ответ верный, то он пишет "верно", ты справился, если нет, то "не понимаю тебя, напиши привет". Проблема в том что, что когда я пишу привет и бот предлагает найти корень от рандомного числа, и когда я его ввожу бот пишет что я тебя не понимаю, то есть он не переходит ко второй функции, а работает с первой, подскажите, как это можно исправить и в чём ошибка

InkedDesktop 08-01-2021 19-01-31-177_LI.jpg
Петр Сапрыкин
  · 126
Лучший
Программирование, Python, математика. Выпускник Яндекс.Лицея 2020.  · 8 янв 2021  · cdarr.ru

Ваша ошибка в том, что вы думаете, что если реализуете ещё одну фунцию get_text_message внутри первой, то у вас следующее сообщение обработается в ней.

На самом деле будет не так. Кстати, обратим внимание, что всё, что написано после return x, вообще никогда не выполнится, потому что return автоматически выходит из функции.

Соответственно, у вас обработчик

if message == "Привет":
    ...
else:
    print("Не понимаю")

при вводе абсолютно любого сообщения, кроме "привет" будет отвечать, что ответ не понят.

Вот, как это решить. Вам нужно завести некоторую переменную state, в которой вы будете хранить, например, числом, текущее состояние. Они могут быть такими: "пользователь начал диалог", "ждём ответа", "получили ответ". Соответственно, при каждом новом сообщении в функции get_text_message и проверяете текущее состояние, и на основании этого выбираете сценарий (который может сам изменить текущее состояние, например, если пользователь ввёл ответ, то больше ответа от него ждать не нужно).

Обратите внимание, что хранить состояние в одной переменной нельзя, потому что тогда оно будет одинаковым для всех пользователей. Заведите словарь.

случайно нажал "отправить экспертам" вместо "узнать мнение эксперта об ответе", простите