Надо исправить код чтобы работало добавление в корзину

import telebot
from telebot import types

# Токен вашего бота (замените на свой)
BOT_TOKEN = "здесь будет мой токен"

# Инициализация бота
bot = telebot.TeleBot(BOT_TOKEN)

# Меню
menu = {
    "бургеры": {
        "Чизбургер": 100,
        "Воппер": 150,
        "Биг Мак": 200
    },
    "напитки": {
        "Кока-Кола": 40,
        "Фанта": 40,
        "Спрайт": 40
    },
    "гарниры": {
        "Картофель фри": 60,
        "Куриные наггетсы": 90
    }
}

# Акции
promotions = ["Скидка 20% на все бургеры", "Куриные наггетсы по цене 2 за 1"]

# Корзина
cart = {}

@bot.message_handler(commands=['start'])
def send_welcome(message):
    markup = types.InlineKeyboardMarkup()
    markup.row(
        types.InlineKeyboardButton(text="Меню", callback_data="show_menu"),
        types.InlineKeyboardButton(text="Акции", callback_data="show_promotions"),
        types.InlineKeyboardButton(text="Корзина", callback_data="show_cart")
    )
    bot.send_message(message.chat.id, "Добро пожаловать в KFC! \nВыберите действие:", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: call.data == "show_menu")
def show_menu(call):
    markup = types.InlineKeyboardMarkup()
    for category, items in menu.items():
        for item, price in items.items():
            markup.add(types.InlineKeyboardButton(text=f"Добавить {item} ({price} руб.)",
                                                 callback_data=f"add_to_cart_{category}_{item}"))
    markup.add(types.InlineKeyboardButton(text="Назад", callback_data="back_to_main"))
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text="Выберите категорию:", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: call.data.startswith("add_to_cart_"))
def add_to_cart(call):
    _, category, item = call.data.split("_")
    if category not in cart:
        cart[category] = []
        cart[category].append(item)
        bot.answer_callback_query(call.id, text=f"{item} добавлен в корзину")
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text=f"{item} добавлен в корзину", reply_markup=None)

@bot.callback_query_handler(func=lambda call: call.data == "back_to_main")
def back_to_main(call):
    markup = types.InlineKeyboardMarkup()
    markup.row(
        types.InlineKeyboardButton(text="Меню", callback_data="show_menu"),
        types.InlineKeyboardButton(text="Акции", callback_data="show_promotions"),
        types.InlineKeyboardButton(text="Корзина", callback_data="show_cart")
    )
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text="Добро пожаловать в KFC! \nВыберите действие:", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: call.data == "show_promotions")
def show_promotions(call):
    promotions_text = "*Текущие акции:*\n"
    for promotion in promotions:
        promotions_text += f"- {promotion}\n"
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text=promotions_text, reply_markup=None)

@bot.callback_query_handler(func=lambda call: call.data == "show_cart")
def show_cart(call):
    if cart:
        total_price = 0
        cart_text = "*Ваша корзина:*\n"
        for category, items in cart.items():
            cart_text += f"\n*{category.upper()}*:\n"
            for item in items:
                price = menu[category][item]
                total_price += price
                cart_text += f"- {item} ({price} руб.)\n"
        cart_text += f"\n*Итого:* {total_price} руб."
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton(text="Удалить", callback_data="remove_from_cart"))
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text=cart_text, reply_markup=markup)
    else:
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Ваша корзина пуста", reply_markup=None)

@bot.callback_query_handler(func=lambda call: call.data.startswith("remove_from_cart_"))
def remove_from_cart(call):
    _, category, item = call.data.split("_")
    if category in cart and item in cart[category]:
        cart[category].remove(item)
        if not cart[category]:
            del cart[category]
        bot.answer_callback_query(call.id, text=f"{item} удален из корзины")
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Корзина обновлена", reply_markup=None)

@bot.callback_query_handler(func=lambda call: call.data == "placeorder")
def place_order(call):
    bot.answer_callback_query(call.id, text="Заказ оформлен! Спасибо!")
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text="Ваш заказ оформлен! Спасибо!", reply_markup=None)
    cart.clear()

#Запускаем бота
bot.infinity_polling()

При попытке добавить товар в корзину выдаёт вот такую вот ошибку 2024-05-30 18:15:59,544 (init.py:1095 MainThread) ERROR - TeleBot: "Infinity polling exception: too many values to unpack (expected 3)"


Ответы (0 шт):