import logging from typing import Any, Dict from urllib.parse import parse_qs, urlparse from aiogram_dialog import DialogManager from shopbot.bot.services import create_paylink_cryptobot, create_paylink_lolz async def getter_amount(dialog_manager: DialogManager, **kwargs) -> Dict[str, Any]: dialog_manager.current_context().dialog_data.pop("pay_data", None) count = dialog_manager.find("count").get_value() try: paylink = await create_paylink_lolz(amount=int(count)) parsed_url = urlparse(paylink) query_params = parse_qs(parsed_url.query) amount = query_params.get("amount", [None])[0] comment = query_params.get("comment", [None])[0] pay_data = {"paylink": paylink, "order_id": comment, "amount": amount} dialog_manager.current_context().dialog_data["pay_data"] = pay_data return pay_data except Exception as e: logging.error(f"Error creating Lolz paylink: {e}", exc_info=True) return { "error": "Произошла ошибка при создании ссылки для оплаты Lolz. Пожалуйста, попробуйте позже." } async def getter_amount_cryptobot( dialog_manager: DialogManager, **kwargs ) -> Dict[str, Any]: dialog_manager.current_context().dialog_data.pop("pay_data", None) count = dialog_manager.find("count").get_value() if not count: return {"error": "Сумма не указана!"} try: paylink, invoice_id = await create_paylink_cryptobot(amount=int(count)) if not paylink: return {"error": invoice_id} pay_data = {"paylink": paylink, "order_id": invoice_id, "amount": count} dialog_manager.current_context().dialog_data["pay_data"] = pay_data return pay_data except Exception as e: logging.error(f"Error creating CryptoBot paylink: {e}", exc_info=True) return { "error": "Произошла ошибка при создании ссылки для оплаты через CryptoBot. Пожалуйста, проверьте настройки и попробуйте снова." }