При нажатии на инлайн кнопку выводится много сообщенйий

Рейтинг: 0Ответов: 1Опубликовано: 29.04.2023

помогите, пожалуйста. Сделал колбэк хэндлер, который выводит инлайн кнопки вкуса модели, но при нажатии на кнопку модели, выводится много сообщений.

введите сюда описание изображения

Код колбэк хэндера (смысл верхнего хэндлера ещё в том, чтобы при пополнении товара, не создавалась кнопка бренд если такая уже есть):

@dp.callback_query_handler(lambda c: c.data.startswith('brand_'))
async def choose_model(callback_query: types.CallbackQuery):
    brang = callback_query.data.split('_')[1]
    models = db.cur.execute('SELECT DISTINCT model FROM items WHERE brang = ?', (brang,)).fetchall()
    markup = InlineKeyboardMarkup(row_width=1)
    buttons = [InlineKeyboardButton(text=row[0], callback_data=f"model_{row[0]}") for row in models
               if not any(row[0] in button.text for button in markup.inline_keyboard)]
    # Если список кнопок не пустой, создаем разметку клавиатуры и отправляем сообщение пользователю
    if buttons:
        markup = markup.add(*buttons)
        await bot.send_message(callback_query.from_user.id, "Выберите модель", reply_markup=markup)
    else:
        await bot.send_message(callback_query.from_user.id, "неу брендов")


@dp.callback_query_handler(lambda c: c.data.startswith('model_'))
async def show_item(callback_query: types.CallbackQuery):
    model = callback_query.data.split('_')[1]
    items = [row[0] for row in db.cur.execute('SELECT taste FROM items WHERE model = ?', (model,)).fetchall()]
    markup = InlineKeyboardMarkup(row_width=2)
    for taste in items:
        markup.add(InlineKeyboardButton(text=taste, callback_data=f"model_{taste}"))
        await bot.send_message(callback_query.from_user.id, f"Выберите вкус модели {model}", reply_markup=markup)

Ответы

▲ -1

просто поставь отправляемое сообщение на одном уровне что и for