-
Notifications
You must be signed in to change notification settings - Fork 33
Description
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?