• Почему возникает ошибка "got an unexpected keyword argument 'use_context'"?

    @zzzz23zzzz Автор вопроса
    щас попробую понизить
    Написано
  • Почему возникает ошибка "got an unexpected keyword argument 'use_context'"?

    @zzzz23zzzz Автор вопроса
    вот допустим
    такой есть в нем тоже выбивает это
    Написано
  • Почему возникает ошибка "got an unexpected keyword argument 'use_context'"?

    @zzzz23zzzz Автор вопроса
    from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
    from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, MessageHandler, ConversationHandler, CallbackContext, Filters
    
    TOKEN = 'YOUR_TOKEN'
    products_database = {}
    
    SELECTING_ACTION, ADDING_PRODUCT = range(2)
    
    def start(update: Update, context: CallbackContext) -> None:
        keyboard = [
            [InlineKeyboardButton("Показать товары", callback_data='show_products')],
            [InlineKeyboardButton("Корзина", callback_data='show_cart')],
            [InlineKeyboardButton("Контакты", callback_data='contact')],
            [InlineKeyboardButton("Добавить товар", callback_data='add_product')]
        ]
    
        reply_markup = InlineKeyboardMarkup(keyboard)
    
        update.message.reply_text('Привет! Я бот для продажи вещей. Как я могу помочь?', reply_markup=reply_markup)
    
        return SELECTING_ACTION
    
    def show_products(update: Update, context: CallbackContext) -> None:
        product_list = "Список товаров:\n"
        for product_id, product_info in products_database.items():
            product_list += f"{product_id}. {product_info['name']} - {product_info['price']} руб.\n"
    
        update.message.reply_text(product_list + "Выберите товар.")
    
    def show_product_details(update: Update, context: CallbackContext) -> None:
        query = update.callback_query
        product_id = int(query.data.split('_')[1])
        product_info = products_database.get(product_id)
    
        if product_info:
            details_text = f"{product_info['name']}\n\nОписание: {product_info['description']}\nЦена: {product_info['price']} руб."
    
            keyboard = [
                [InlineKeyboardButton("Добавить в корзину", callback_data=f'add_to_cart_{product_id}')],
                [InlineKeyboardButton("Назад", callback_data='show_products')]
            ]
    
            reply_markup = InlineKeyboardMarkup(keyboard)
    
            query.edit_message_text(details_text, reply_markup=reply_markup)
        else:
            query.answer("Товар не найден.")
    
    def add_to_cart(update: Update, context: CallbackContext) -> None:
        query = update.callback_query
        product_id = int(query.data.split('_')[2])
        product_info = products_database.get(product_id)
    
        if product_info and product_id not in context.user_data['selected_products']:
            context.user_data['selected_products'][product_id] = product_info
            query.answer(f"{product_info['name']} добавлен в корзину.")
        elif product_id in context.user_data['selected_products']:
            query.answer("Товар уже в корзине.")
        else:
            query.answer("Товар не найден.")
    
    def show_cart(update: Update, context: CallbackContext) -> None:
        cart_text = "Корзина:\n"
        total_price = 0
    
        for product_id, product_info in context.user_data['selected_products'].items():
            cart_text += f"{product_info['name']} - {product_info['price']} руб.\n"
            total_price += product_info['price']
    
        cart_text += f"\nИтого: {total_price} руб."
    
        keyboard = [
            [InlineKeyboardButton("Оформить заказ", callback_data='checkout')],
            [InlineKeyboardButton("Назад", callback_data='show_products')]
        ]
    
        reply_markup = InlineKeyboardMarkup(keyboard)
    
        update.message.reply_text(cart_text, reply_markup=reply_markup)
    
    def checkout(update: Update, context: CallbackContext) -> None:
        query = update.callback_query
        user_id = update.effective_user.id
    
        if user_id not in context.user_data['user_orders']:
            context.user_data['user_orders'][user_id] = []
    
        for product_id, product_info in context.user_data['selected_products'].items():
            context.user_data['user_orders'][user_id].append(product_info)
    
        context.user_data['selected_products'].clear()
    
        query.edit_message_text("Введите адрес доставки:")
    
        return ADDING_PRODUCT
    
    def get_address(update: Update, context: CallbackContext) -> None:
        user_id = update.effective_user.id
        context.user_data['user_addresses'][user_id] = update.message.text
    
        keyboard = [
            [InlineKeyboardButton("Кредитная карта", callback_data='credit_card')],
            [InlineKeyboardButton("Банковский перевод", callback_data='bank_transfer')]
        ]
    
        reply_markup = InlineKeyboardMarkup(keyboard)
    
        update.message.reply_text("Выберите метод оплаты:", reply_markup=reply_markup)
    
        return SELECTING_ACTION
    
    def get_payment_method(update: Update, context: CallbackContext) -> None:
        query = update.callback_query
        user_id = update.effective_user.id
    
        if query.data == 'credit_card':
            context.user_data['user_payment_methods'][user_id] = 'Кредитная карта'
        elif query.data == 'bank_transfer':
            context.user_data['user_payment_methods'][user_id] = 'Банковский перевод'
    
        order_details = "\n".join([f"{item['name']} - {item['price']} руб." for item in context.user_data['user_orders'][user_id]])
        total_price = sum([item['price'] for item in context.user_data['user_orders'][user_id]])
    
        order_message = (
            f"Заказ:\n{order_details}\n\n"
            f"Итого: {total_price} руб.\n\n"
            f"Адрес доставки:\n{context.user_data['user_addresses'][user_id]}\n\n"
            f"Метод оплаты:\n{context.user_data['user_payment_methods'][user_id]}\n\n"
            f"Спасибо за заказ! Доставка будет осуществлена в ближайшее время."
        )
    
        context.user_data['user_orders'][user_id] = []
        context.user_data['user_addresses'].pop(user_id, None)
        context.user_data['user_payment_methods'].pop(user_id, None)
    
        query.edit_message_text(order_message)
    
    def contact(update: Update, context: CallbackContext) -> None:
        update.message.reply_text('Наши контакты:\nТелефон: +123456789\nEmail: example@example.com')
    
    def button_click(update: Update, context: CallbackContext) -> None:
        query = update.callback_query
        query.answer()
    
        if query.data == 'show_products':
            show_products(update, context)
        elif query.data.startswith('product_details'):
            show_product_details(update, context)
        elif query.data.startswith('add_to_cart'):
            add_to_cart(update, context)
        elif query.data == 'show_cart':
            show_cart(update, context)
        elif query.data == 'checkout':
            checkout(update, context)
        elif query.data == 'contact':
            contact(update, context)
    
    def main() -> None:
        updater = Updater(TOKEN, use_context=True)
        dp = updater.dispatcher
    
        conv_handler = ConversationHandler(
            entry_points=[CommandHandler('start', start)],
            states={
                SELECTING_ACTION: [
                    CallbackQueryHandler(button_click),
                    MessageHandler(Filters.text & ~Filters.command, start)
                ],
                ADDING_PRODUCT: [MessageHandler(Filters.text & Filters.update.message, get_address)]
            },
            fallbacks=[]
        )
    
        dp.add_handler(conv_handler)
        dp.add_handler(CommandHandler("start", start))
    
        updater.start_polling()
        updater.idle()
    
    if __name__ == '__main__':
        main()
    Написано
  • Почему возникает ошибка "got an unexpected keyword argument 'use_context'"?

    @zzzz23zzzz Автор вопроса
    решить этот вопрос можно куда копать?
    Написано