@router.callback_query(CryptoBotCurrencyCallback.filter()) async def enter_crypto_bot_currency_handler( query: CallbackQuery, callback_data: CryptoBotCurrencyCallback, state: FSMContext): await query.message.delete() data = await state.get_data() cryptopay = AioCryptoPay(AIOCRYPTOPAY_TOKEN) amount = math.ceil((float(data['crypto_bot_sum']) * (1 + 3 / 100)) * 100) / 100 invoice = await cryptopay.create_invoice( asset=CryptoBotCurrency(callback_data.currency).name, amount=await get_crypto_bot_sum(amount, CryptoBotCurrency(callback_data.currency).name), description="Payment", paid_btn_name="callback", paid_btn_url=f"https://t.me/{(await query.bot.me()).username}", expires_in=3600, allow_comments=True, allow_anonymous=True ) await db.create_transaction(invoice.invoice_id) await cryptopay.close() await state.update_data(crypto_bot_currency=CryptoBotCurrency(callback_data.currency).name) await db.addcrypto(query.from_user.id, invoice.invoice_id, data["crypto_bot_sum"]) await query.message.answer( msg_format(text_44, amount, invoice.pay_url), reply_markup=check_payment_kb(invoice.pay_url, invoice.invoice_id, 0, PaymentService.crypto_bot) ) await state.set_state(state=None) Python @router.callback_query(CryptoBotCurrencyCallback.filter()) async def enter_crypto_bot_currency_handler( query: CallbackQuery, callback_data: CryptoBotCurrencyCallback, state: FSMContext): await query.message.delete() data = await state.get_data() cryptopay = AioCryptoPay(AIOCRYPTOPAY_TOKEN) amount = math.ceil((float(data['crypto_bot_sum']) * (1 + 3 / 100)) * 100) / 100 invoice = await cryptopay.create_invoice( asset=CryptoBotCurrency(callback_data.currency).name, amount=await get_crypto_bot_sum(amount, CryptoBotCurrency(callback_data.currency).name), description="Payment", paid_btn_name="callback", paid_btn_url=f"https://t.me/{(await query.bot.me()).username}", expires_in=3600, allow_comments=True, allow_anonymous=True ) await db.create_transaction(invoice.invoice_id) await cryptopay.close() await state.update_data(crypto_bot_currency=CryptoBotCurrency(callback_data.currency).name) await db.addcrypto(query.from_user.id, invoice.invoice_id, data["crypto_bot_sum"]) await query.message.answer( msg_format(text_44, amount, invoice.pay_url), reply_markup=check_payment_kb(invoice.pay_url, invoice.invoice_id, 0, PaymentService.crypto_bot) ) await state.set_state(state=None)
Привет, PowerDevil! Давай разберёмся с твоим кодом. Ты пытаешься создать инвойс с помощью CryptoBot в Python. Если у тебя возникают проблемы, давай посмотрим на возможные причины: 1. **Токен**: Убедись, что `AIOCRYPTOPAY_TOKEN` корректный и имеет все необходимые права для создания инвойсов. 2. **Сумма**: Проверь, правильно ли ты вычисляешь сумму. Убедись, что `data['crypto_bot_sum']` содержит корректное значение. 3. **Асинхронность**: Убедись, что все асинхронные вызовы (например, `await cryptopay.create_invoice`) выполняются корректно и не блокируют выполнение. 4. **Обработка ошибок**: Добавь обработку исключений, чтобы понять, где именно происходит ошибка. Например: try: invoice = await cryptopay.create_invoice(...) except Exception as e: print(f"Error creating invoice: {e}") Python try: invoice = await cryptopay.create_invoice(...) except Exception as e: print(f"Error creating invoice: {e}") 5. **URL и кнопки**: Проверь, правильно ли формируются URL и кнопки. Убедись, что `query.bot.me()` возвращает корректное имя пользователя бота. Если у тебя есть конкретное сообщение об ошибке или проблема, дай знать, и мы попробуем разобраться более детально!
у тебя не может пайдантик распарсить все значения из ответа. перепроверь что все данные верно указаны по типу кредов и тд. вообще просто выведи что тебе апи выдает в самой либе (так делать плохо, но надо же как-то дебажить раз либа ниче не выдает конкретного)