Skip to content

AttributeError: 'TonlibClient' object has no attribute 'import_wallet' #73

@powidlo05

Description

@powidlo05

I created a class:

class TONPayment:
def init(self, seed_phrase, ton_node_url):
self.seed_phrase = seed_phrase
self.ton_node_url = ton_node_url
self.client = None
self.wallet_address = None
self.wallet_key = None
self.global_config_data = None

async def initialize(self):
    try:
        if self.global_config_data is None:
            logger.info("Fetching TON global config from URL...")
            async with aiohttp.ClientSession() as session:
                async with session.get('https://ton.org/global-config.json') as response:
                    response.raise_for_status()  # Вызывает ошибку, если статус ответа не 200 OK
                    self.global_config_data = await response.json()
            logger.info("Successfully fetched TON global config.")

        self.client = TonlibClient(
            config=self.global_config_data,
            ls_index=0,
            keystore='./ton_keystore'
        )

        await self.client.init()
        logger.info("TonlibClient initialized.")

        mnemonic = []
        if isinstance(self.seed_phrase, str):
            try:
                # Попытка разобрать как JSON-список строк.
                # Это поможет, если seed_phrase пришла как '["word1", "word2", ...]'
                parsed_mnemonic = json.loads(self.seed_phrase)
                if isinstance(parsed_mnemonic, list) and all(isinstance(word, str) for word in parsed_mnemonic):
                    mnemonic = parsed_mnemonic
                else:
                    # Если JSON-парсинг дал что-то не то (не список строк),
                    # или если это JSON, но не список, возвращаемся к простому split
                    mnemonic = self.seed_phrase.strip().split()
            except json.JSONDecodeError:
                # Если это не валидная JSON-строка, обрабатываем как обычную строку с пробелами
                mnemonic = self.seed_phrase.strip().split()
        else:
            logger.error(f"Seed phrase is not a string type. Type: {type(self.seed_phrase)}")
            raise TypeError("Seed phrase must be a string.")

        logger.info(f"DEBUG MNEMONIC (before import_wallet): {mnemonic}")

        self.wallet_key = await self.client.import_wallet(mnemonic)
        self.wallet_address = self.wallet_key.to_raw_address()

        logger.info(f"✅ TON wallet initialized. Address: {self.wallet_address}")
    except Exception as e:
        logger.error(f"Failed to initialize TON wallet: {e}")
        raise

But when i try to initialize TONPayment i get error:

2025-07-05 13:44:26,186 - CRITICAL - Failed to initialize TON payment client: 'TonlibClient' object has no attribute 'import_wallet'. TON payments will not work.
Traceback (most recent call last):
File "MY PATH\main.py", line 651, in on_startup
await ton_payment.initialize()
File "MY PATH\payment_processors.py", line 122, in initialize
self.wallet_key = await self.client.import_wallet(mnemonic)
AttributeError: 'TonlibClient' object has no attribute 'import_wallet'

What i am doing wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions