Алгоритмическая ошибка в Python ,telebot
Помогите пожалуйста с решением ошибки в коде бота Бот сделан для подсчёта цены товара из другой страны Цена складывается так - изначальная цена товара умножается на курс + доставка . Код почему то выводит 0 всегда . Помогите пожалуйста решить ошибку Вот код:
import telebot
from telebot import types
bot = telebot.TeleBot('*')
OurCourse = 11.6
OrderCost = 0
@bot.message_handler(commands=['start'])
def Cost(message):
global OrderCost
bot.send_message(message.chat.id, 'Здравствуйте!')
OrderCost = bot.send_message(message.chat.id, 'Ввидите цену заказ на * в юанях (¥):')
bot.register_next_step_handler(OrderCost, Delivery)
def Delivery(message):
global OrderCost
global TotalCost
TotalCost = 0
Msc = 'Москва'
MscKrd = 'Москва -> Сочи'
DeliveryWHERE = bot.send_message(message.chat.id, 'Если вам нужна доставка в Москву
ввидите Msc. Если вам нужна доставка в Москва -> сочи ввидите MscKrd')
if message.text == Msc:
bot.send_message(message.chat.id, 'Вы выбрали доставку в город Москва')
DeliveryCost = 2500
DelOrd = float(OrderCost.text) * OurCourse
DelOrd2 = DelOrd + DeliveryCost
elif message.text == MscKrd:
bot.send_message(message.chat.id, 'Вы выбрали доставку Москва -> Сочи')
DeliveryCost = 3500
DelOrd = float(OrderCost.text) * OurCourse
DelOrd2 = DelOrd + DeliveryCost
TotalCost = DelOrd2
bot.register_next_step_handler(message,TotalCost1)
def TotalCost1(message):
global TotalCost
[![введите сюда описание изображения][1]][1]bot.send_message(message.chat.id, f'Цена с доставкой : {TotalCost}')
bot.polling()
Ответы (1 шт):
Проблема в том, что в функции TotalCost1 нет кода для преобразования текста сообщения пользователя в число. Поэтому переменная TotalCost не обновляется и выводится нулевое значение.
Чтобы исправить эту ошибку, замените bot.register_next_step_handler(message,TotalCost1) на следующий код:
bot.register_next_step_handler(message, calculate_total_cost)
def calculate_total_cost(message):
global TotalCost
TotalCost = float(TotalCost)
bot.send_message(message.chat.id, f'Цена с доставкой: {TotalCost}')
Здесь мы определяем новую функцию calculate_total_cost, которая сначала преобразует значение переменной TotalCost в число типа float, а затем выводит сообщение с итоговой ценой. Затем мы регистрируем эту функцию в качестве обработчика следующего сообщения пользователя, используя метод bot.register_next_step_handler.