Python aiogram 3xx Ошибка
пишу бота на aiogram 3. Я сделал вот такой код для оплаты токо выдаёт ошибку и
я не знаю как её решить.
Вот текст ошибки:
This error is raised when you try to pass additional keyword arguments to the registrar method in aiogram. Starting from version 2.x, registering filters is done differently and the content_types argument is not supported.
To fix this error, you need to remove the {'content_types'} argument from the registrar method call.
Вот часть кода:
@dp.message(Command('buy'))
async def buy(message: types.Message, bot:Bot):
if config.PAYMENT_TEST_TOKEN.split(':')[1] == 'TEST':
await bot.send_message(message.chat.id, "!!!Тестовый платеж!!!")
await bot.send_invoice(message.chat.id,
title="Подписка на бота",
description="Активация подписки на бота на 1 месяц",
provider_token=config.PAYMENT_TEST_TOKEN,
currency="rub",
photo_url="https://www.aroged.com/wp-content/uploads/2022/06/Telegram-has-a-premium-subscription.jpg",
photo_width=416,
photo_height=234,
photo_size=416,
is_flexible=False,
prices=[PRICE],
start_parameter="one-month-subscription",
payload="test-invoice-payload")
@dp.pre_checkout_query(lambda query: True)
async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery, bot:Bot):
await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True)
@dp.message(content_types == ContentType.SUCCESSFUL_PAYMENT)
async def successful_payment(message: types.Message, bot:Bot):
print("SUCCESSFUL PAYMENT:")
payment_info = message.successful_payment.to_python()
for k, v in payment_info.items():
print(f"{k} = {v}")
await bot.send_message(message.chat.id, f"Платеж на сумму {message.successful_payment.total_amount // 100} {message.successful_payment.currency} прошел успешно!!!")
Ответы (1 шт):
Автор решения: igonnacodetilligonnadie
→ Ссылка
Замените
@dp.message(content_types == ContentType.SUCCESSFUL_PAYMENT)
на
@dp.message(F.successful_payment)