Помогите написать handler aiogram 3.1.1 Successful Payment

Мне нужно зарегистрировать хендлер на успешную оплату на aiogram 3.1.1

dp.message.register(selamo.recruit_balance_sum, SelectAmount.GET_RECRUIT_BALANCE)
dp.pre_checkout_query.register(selamo.pre_checkout_query)
dp.message.register(selamo.successful_payment, ContentType.SUCCESSFUL_PAYMENT)

Вот такой блок кода и в 3 строчке нужно добавить корректную проверку на тип
Через MagicFilter(F) не нашел, ContentType.SUCCESSFUL_PAYMENT не работает


Ответы (1 шт):

Автор решения: Adrian Makridenko

не совсем понял вопроса, но предположим, что вы хотите добавить корректную проверку на тип сообщения в хендлере aiogram для успешной оплаты (ContentType.SUCCESSFUL_PAYMENT). тут нужно использовать MessageHandler с фильтром

from aiogram import types
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Command

# ...

@dp.message_handler(Command("recruit_balance_sum"), content_types=[types.ContentType.SUCCESSFUL_PAYMENT])
async def successful_payment_handler(message: types.Message, state: FSMContext):
    # ...
    await message.answer("оплата прошла")

тут используется MessageHandler с фильтром content_types, который ожидает только сообщения с типом SUCCESSFUL_PAYMENT, так этот хендлер будет вызван только в случае успешной оплаты

→ Ссылка