@estes_rf

Как удалить answer_invoice?

Делаю оплату в боте. Хочу. чтобы после успешной оплаты удалялось сообщение с кнопкой оплаты. Пробовал по ID сообщения через бота, не получается:
@router.message(
    StateFilter(FSMRegistration.plan1), lambda x: x.text.isdigit() and 500 <= int(x.text) <= 6000
)
async def process_plan1_pay(message: Message, state: FSMContext) -> None:
    prices = [LabeledPrice(label="XTR", amount=1)]
    await state.update_data(m_id=message.message_id)
    await message.answer_invoice(  
        title="то, что продаю",  
        description="описание",  
        prices=prices,  
        provider_token="",
        photo_url= "https://0_1.jpg",
        photo_height= 1620,
        photo_width= 1080,
        payload="channel_support",  
        currency="XTR",  
        reply_markup=pay_10_kb(),  
    )
    await state.set_state(FSMRegistration.plan1_success)

@router.pre_checkout_query()
async def on_pre_checkout_query(
    pre_checkout_query: PreCheckoutQuery
):
    await pre_checkout_query.answer(ok=True)

@router.message(StateFilter(FSMRegistration.plan1_success), F.successful_payment)
async def on_successful_payment(message: Message, state: FSMContext, database:DatabaseMethods):
    donate=int(message.successful_payment.total_amount)
    data = await state.get_data()
    await message.delete()
    await message.bot.delete_message(chat_id=message.from_user.id, message_id=data["m_id"])


Причем, если следующим сообщением отправить клавиатуру, и по коллбэку удалить предыдущее - то сообщение с оплатой удаляется.
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
@estes_rf Автор вопроса
Оо, надо же, разобрался. Я запрашивал ID до того, как отправил сообщение.
Правильно будет так:
mess = await message.answer_invoice(  
        title="*****",  
        description="Этя ра"
#и так далее. Потом:
await state.update_data(m_id=mess.message_id)

#и после успешной оплаты:
await message.bot.delete_message(chat_id=message.from_user.id, message_id=data["m_id"])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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