Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions