@kastela

Ошибка Task exception was never retrieved, что делать?

Вот мой код:
import logging
import types
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.types import ParseMode, InlineKeyboardMarkup, InlineKeyboardButton


API_TOKEN = "ВАШ_API_ТОКЕН"

bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())


def create_product_inline_keyboard():
    return InlineKeyboardMarkup(inline_keyboard=[[InlineKeyboardButton(" Хліб"), InlineKeyboardButton(" Булочки"), InlineKeyboardButton(" Фокачча"), InlineKeyboardButton(" Сухарики, печиво")],
        [InlineKeyboardButton("⏪️ В головне меню")]
    ])


def create_product_type_inline_keyboard(product_type):
    inline_keyboard = []
    if product_type == ' Хліб':
        inline_keyboard = [
            [InlineKeyboardButton("Варіант 1", callback_data='bread_variant1')],
            [InlineKeyboardButton("Варіант 2", callback_data='bread_variant2')],
            [InlineKeyboardButton("Варіант 3", callback_data='bread_variant3')],
            [InlineKeyboardButton("Назад", callback_data='back_to_products')]
        ]
    elif product_type == ' Булочки':
        inline_keyboard = [
            [InlineKeyboardButton("Варіант 1", callback_data='buns_variant1')],
            [InlineKeyboardButton("Варіант 2", callback_data='buns_variant2')],
            [InlineKeyboardButton("Варіант 3", callback_data='buns_variant3')],
            [InlineKeyboardButton("Назад", callback_data='back_to_products')]
        ]
    elif product_type == ' Фокачча':
        inline_keyboard = [
            [InlineKeyboardButton("Варіант 1", callback_data='focaccia_variant1')],
            [InlineKeyboardButton("Варіант 2", callback_data='focaccia_variant2')],
            [InlineKeyboardButton("Варіант 3", callback_data='focaccia_variant3')],
            [InlineKeyboardButton("Назад", callback_data='back_to_products')]
        ]
    elif product_type == ' Сухарики, печиво':
        inline_keyboard = [
            [InlineKeyboardButton("Варіант 1", callback_data='crackers_variant1')],
            [InlineKeyboardButton("Варіант 2", callback_data='crackers_variant2')],
            [InlineKeyboardButton("Варіант 3", callback_data='crackers_variant3')],
            [InlineKeyboardButton("Назад", callback_data='back_to_products')]
        ]
    return InlineKeyboardMarkup(inline_keyboard=inline_keyboard)


def create_variant_inline_keyboard(variant_data):
    inline_keyboard = [
        [InlineKeyboardButton("Тут буде опис та фото", callback_data='description')],
        [InlineKeyboardButton("Назад", callback_data='back_to_variants')]
    ]
    return InlineKeyboardMarkup(inline_keyboard=inline_keyboard)


@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await message.answer(
        "Привіт! Це чат-бот від bread and memories.\n\n"
        "Ми створили його, щоб ви могли зручно та швидко замовити справжній хліб на заквасці, а з ним — й інші пухкі смаколики від нашої майстерні.\n\n"
        "⬇️Нижче знаходяться кнопки, які допоможуть зробити замовлення, подивитися меню чи інші деталі.\n"
        "Вибирайте свій варіант, і не бійтеся помилитися — тут все просто ",
        reply_markup=types.ReplyKeyboardMarkup(
            keyboard=[
                [types.KeyboardButton(" Зробити замовлення"), types.KeyboardButton(" Подивитися меню"),
                 types.KeyboardButton(" Контакти")]
            ],
            resize_keyboard=True
        ),
        parse_mode=ParseMode.MARKDOWN
    )


async def make_order(message: types.Message):
    await message.answer(
        " ВАРІАНТИ ОТРИМАННЯ ЗАМОВЛЕННЯ\n\n"
        "‍♀️ Самовивіз з нашого цеху за адресою вул. Університетська, 23а.\n"
        "Немає мінімальної суми замовлення, оплата онлайн за реквізитами чи при отриманні замовлення.\n\n"
        " Доставка містом за ….  Мінімальне замовлення — …, оплата онлайн за реквізитами чи за посиланням.\n\n"
        " Відправка Новою поштою на відділення або адресу. Відправляємо все, що є в меню продукції, оплата продукції — онлайн за реквізитами чи за посиланням, оплата доставки — за рахунок отримувача посилки.\n\n"
        "❗️❗️❗️ Замовлення приймаємо мінімум за два дні до дня випікання.\n"
        "А випікаємо в такі дні: вівторок, четвер, субота.\n\n"
        "Тобто, наприклад, хліб на вівторок можна замовити в неділю чи слідкувати за наявністю вільних буханців в нашому Instagram.\n\n"
        "Яка саме продукція тебе цікавить? ",
        reply_markup=types.ReplyKeyboardMarkup(
            keyboard=[
                [types.KeyboardButton(" Хліб"), types.KeyboardButton(" Булочки"), types.KeyboardButton(" Фокачча"),
                 types.KeyboardButton(" Сухарики, печиво")],
                [types.KeyboardButton("⏪️ В головне меню")]
            ],
            resize_keyboard=True
        ),
        parse_mode=ParseMode.MARKDOWN
    )

async def view_menu(message: types.Message):
    await message.answer(
        "Натисніть кнопку з назвою продукції, яка вас цікавить",
        reply_markup=create_product_inline_keyboard()
    )

@dp.message_handler(text=[' Зробити замовлення', ' Подивитися меню'])
async def view_menu_or_order(message: types.Message):
    if message.text == ' Зробити замовлення':
        await make_order(message)
    elif message.text == ' Подивитися меню':
        await view_menu(message)

@dp.message_handler(text=[' Хліб', ' Булочки', ' Фокачча', ' Сухарики, печиво'])
async def view_product_menu(message: types.Message):
    product_type = message.text
    await message.answer(f"Оберіть варіант {product_type}",
                         reply_markup=create_product_inline_keyboard(product_type))

@dp.callback_query_handler(lambda query: query.data.startswith('back_to_products'))
async def back_to_products_callback(query: types.CallbackQuery):
    await query.message.edit_reply_markup(reply_markup=create_product_inline_keyboard())

 @ dp.callback_query_handler(
    lambda query: query.data.startswith(('bread_variant', 'buns_variant', 'focaccia_variant', 'crackers_variant')))
async


def product_variant_callback(query: types.CallbackQuery):
    variant = query.data
    description = "Тут будет описание и фото варианта."

    # Удаляем существующее сообщение
    await query.message.delete()

    # Отправляем новое сообщение с описанием и фото
    new_message = await query.message.answer_photo(
        photo="https://t1.gstatic.com/licensed-image?q=tbn:ANd9GcQwu9l5QEVRGPd9-hQ90jhpiGAMg1ycT46XWkXivXoCYaZ2RUm0Fz_Y0ZVxsJ50o3_K",
        caption=description
    )

    # Отправляем клавиатуру варианта
    await new_message.reply("Тут может быть клавиатура с дополнительными действиями",
                            reply_markup=create_variant_inline_keyboard(variant))

    await bot.send_message(chat_id=query.message.chat.id, text="",
                           reply_markup=types.ReplyKeyboardRemove())


@dp.message_handler(text=' Контакти')
async def send_contact_info(message: types.Message):
    await message.answer_contact(phone_number='1234567890', first_name='Ваше Имя')

if __name__ == '__main__':
    from aiogram import executor

    executor.start_polling(dp, skip_updates=True)

При нажатии на кнопки выбора выпечки происходит такая ошибка:

Task exception was never retrieved
future: <Task finished name='Task-9' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\Home\Desktop\pythonProject\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=NameError("name 'create_product_type_inline_keyboard' is not defined")>
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы