Для того чтобы бот продолжал слушать новые сообщения после запроса "Введите стоимость", можно использовать следующий исправленный код:
```python
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:
message = event.text.lower()
id = event.user_id
if message == 'расчет стоимости':
send_message(id, 'Введите сумму в юанях')
price = 0
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
price = event.text # Получить значение из нового сообщения
print(price)
if int(price) > 0:
calculate()
break # Прервать цикл после получения значения
else:
send_message(id, 'Я вас не понимаю! Попробуйте заново')
else:
send_message(id, 'Я вас не понимаю! :(')
```
Внесенные изменения:
1. Убрана строка `msg_text = event.message`, так как она не нужна.
2. Заменена строка `price = 0` на `price = event.text` для получения значения из нового сообщения.
3. Добавлен оператор `break` после вызова функции `calculate()` для прерывания цикла после получения значения из нового сообщения. Если значение не введено или не является положительным числом, то программа продолжит ожидать новых сообщений.
4. В блок `else` добавлена отправка сообщения `"Я вас не понимаю! Попробуйте заново"`, которое будет выведено, если не будет введено новое сообщение или введено некорректное значение стоимости.