Не получается создать дополнительную кнопку (InlineKeyboardButton) в sendInvoice reply_markup
Пытался отправить сообщение с оплатой и кнопкой назад но выдает ошибку, подскажите пожалуйста что я неправильно делаю и возможно ли вообще это реализовать ?
Вот код
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
builder = InlineKeyboardBuilder()
builder.add(types.InlineKeyboardButton(text="Pay", pay=True))
builder.add(types.InlineKeyboardButton(text="Нажми меня",callback_data="random_value"))
PRICE = types.LabeledPrice(label='Настоящая Машина Времени', amount=4200*100)
await bot.send_invoice(message.chat.id,
title="***",
description="***",
provider_token=PAYMENTS_TOKEN,
currency="kzt",
photo_url="***",
photo_width=416,
photo_height=234,
photo_size=416,
is_flexible=False,
prices=[PRICE],
start_parameter="one-month-subscription",
payload="test-invoice-payload",
reply_markup=builder)
И ошибка
ERROR:aiogram.event:Cause exception while process update id=111006418 by bot id=6464477035
ValidationError: 1 validation error for SendInvoice
reply_markup
Input should be a valid dictionary or instance of InlineKeyboardMarkup [type=model_type, input_value=<aiogram.utils.keyboard.I...bject at 0x700e031d7790>, input_type=InlineKeyboardBuilder]
Input should be a valid dictionary or instance of InlineKeyboardMarkup [type=model_type, input_value=<aiogram.utils.keyboard.I...bject at 0x700e031d7790>, input_type=InlineKeyboardBuilder]
Ответы (1 шт):
Автор решения: mlt_melt
→ Ссылка
Билдер сам по себе не является клавиатурой. Поэтому в аргументе reply_markup нужно передавать builder.as_markup() Код:
await bot.send_invoice(...,
reply_markup=builder.as_markup())
Это преобразует объект builder в объект клавиатуры