Код клавиатуры:
def chek_kb(isUrl=True, url="", bill=""):
payMenu = InlineKeyboardMarkup(row_width=2)
if isUrl:
btnUrlQiwi = InlineKeyboardButton("Оплатить", url = url)
payMenu.add(btnUrlQiwi)
chek_pay = InlineKeyboardButton("Проверить оплату", callback_data="chek_"+bill)
quit = InlineKeyboardButton("Выйти", callback_data="quit")
payMenu.insert(chek_pay).add(quit)
return payMenu
Код вызова клавиатуры и хэндлеры к ней:
await bot.send_message(callback.from_user.id, f"Ваша ссылка на оплату:\n{chek.pay_url}\
\nСрок действия ссылки: <b>30 минут.</b>", reply_markup=chek_kb(url=chek.pay_url, bill=chek.bill_id))
# Выход и отмена оплаты
@dp.callback_query_handler(text="quit")
async def quit(callback: types.CallbackQuery, state: FSMContext):
await bot.delete_message(callback.from_user.id, callback.message.message_id)
# async with state.proxy() as data:
# videos = data["videos"]
# for video in videos:
# path = f'{os.path.dirname(os.path.abspath(__name__))}/app_video/{video}'.replace("\\", "/")
# os.remove(path)
# await state.finish()
# Проверка статуса платежа
@dp.callback_query_handler(text_contains="chek_", state=[BillStorage, VideoStorage])
async def chek_pay(callback: types.CallbackQuery, state: FSMContext):
async with state.proxy() as data:
bill = data["bill"]
chek = chek_bill(bill.bill_id)
if chek == "PAID":
async with state.proxy() as data:
videos = data["videos"]
await bot.delete_message(callback.from_user.id, callback.message.message_id)
await bot.send_message(callback.from_user.id, "Видео оплачено!\nНачинаю обработку...\nКак будет готово, я пришлю видео ответным сообщением")
name = randint(1, 5000)
path = f'{os.path.dirname(os.path.abspath(__name__))}/app_video/{name}.mp4'.replace("\\", "/")
await sql_add_video(name, path, callback.from_user.id)
await state.finish()
await get_read_video(videos, name)
await main()
else:
await bot.delete_message(callback.from_user.id, callback.message.message_id)
await bot.send_message(callback.from_user.id, f"Видео не оплачено!\nВаша ссылка на оплату:\n{bill.pay_url}", reply_markup=chek_kb(False, bill=bill.bill_id))
Проверка статуса платежа отрабатывает корректно url тоже, не отрабатывает только кнопка quit и я не могу понять почему, ошибок никаких не приходит, просто часики появляются, а потом пропадают, проверка статуса платежа отрабатывает корректно даже после нажатия на кнопку "Выйти", то есть она вообще не ломает бота, он ее как-будто просто не видит