Алгоритмическая ошибка в Python ,telebot

Рейтинг: -2Ответов: 1Опубликовано: 24.03.2023

Помогите пожалуйста с решением ошибки в коде бота Бот сделан для подсчёта цены товара из другой страны Цена складывается так - изначальная цена товара умножается на курс + доставка . Код почему то выводит 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()

Ответы

▲ 0

Проблема в том, что в функции 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.