помогите новичку реализовать кнопки отмену и вывести сообщения о ошибки?

@dp.callback_query_handler(text_contains='payment_btc')
async def payment_btc(call: types.CallbackQuery):
    #paymentQiwi = PaymentQiwi.objects.get(id = '1')

    #удаляем предыдущее сообщение
    try:
        await bot.delete_message(call.message.chat.id, call.message.message_id)
    except:
        pass
    
    #активируем машину состояний
    await UserAnswer.payment_sum_btc.set()
    user = User.objects.get(tg_user_id = f'{call.from_user.id}')
    print('Ждем сумму')
    msg = await bot.send_message(call.message.chat.id,
            f"<b>Пополнение баланса:</b>")
    #msg_id = msg.message_id            
    chat_id = str(message.chat.id)
    await bot.send_message(chat_id, "<b>Ошибка</b>")
    @dp.message_handler(state=UserAnswer.payment_sum_btc)
    async def process_message(message: types.Message, state: FSMContext):
        async with state.proxy() as data:
            #пишем ответ в переменную
            chat_id = str(message.chat.id)
            money = float(message.text)
            if money <= 499:
                await bot.send_message(chat_id, f"ошибка укажите сумму больше чем {money} руб.", parse_mode='HTML', disable_web_page_preview=True)
                await call.answer(text='Минимальная сумма для пополнения – 500 руб.;\nЗачисление средств – от 15 минут до часа ', show_alert=True)

            else:
                data["text"] = message.text
                pay_sum = data["text"].replace(",",".")
                await state.finish()

                number = random.randint(100000, 999999)
                

                chat_id = str(message.chat.id)
                try:
                    #pay_sum = float(pay_sum)
                    pay_json = payment(pay_sum, chat_id, 'btc', message) # достаем ссылку для оплаты
                    sum_btc = float(pay_json['coins']['btc']['amount'])
                    sum_address = str(pay_json['coins']['btc']['address'])
                    date = datetime.fromtimestamp(int(pay_json['invoice_ttl']))
                    sum_address = str(pay_json['coins']['btc']['address'])
                    print(f'{date.hour, date.minute}')
                    keyboard = types.InlineKeyboardMarkup()
                    keyboard.add(types.InlineKeyboardButton(text="TEST keyboard", url="tg://resolve?domain=u5ko_bot"), types.InlineKeyboardButton(text="So", url="t.me/S_bot?start=2074545"))

                    msg = """Ваш заказ

№ {}

Сумма {} руб.
Сумма для оплаты: <code>{}</code>
Кошелёк: 
<code>{}</code>
НЕ позже :  {}час {}мин
➖➖➖➖➖➖➖➖➖➖
ВЫДАННЫЕ РЕКВИЗИТЫ ДЕЙСТВУЮТ ДО: {}час {}мин

{}
""".format(
    number,
    pay_sum,
    pay_json['coins']['btc']['amount'], 
    pay_json['coins']['btc']['address'],
    date.hour, date.minute,
    date.hour, date.minute, SoNic, reply_markup = keyboard)

                    try:
                        await bot.delete_message(chat_id, msg_id)
                    except:
                        pass
                    await bot.send_message(chat_id, msg)
     
                except Exception as e:
                    print(e)
                    await bot.send_message(chat_id,
                "<b>Ошибка видите только цифры</b>")
                    await payment_btc(call)
  1. how to make a cancel button

  2. add button

  3. notify about the remaining time for payment


1 ) Как добавить кнопку отменны от оплаты –

  1. Копку на ссылку –

  2. Выводить через время сообщения о окончания срока действия выданных данных , лимит 25 мин.

  3. Выводит сообщения при неправильном вводе или действиях так как он в машином состояние и бот ожидании ответа от пользователя суммы на оплату


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