diff --git a/crypto/sol/app.py b/crypto/sol/app.py index f8d94fe..1cc2400 100644 --- a/crypto/sol/app.py +++ b/crypto/sol/app.py @@ -614,7 +614,8 @@ async def process_log(log_result): if tr_details["order_id"] is None or tr_details["token_in"] is None or tr_details["token_out"] is None or tr_details["amount_in"] == 0 or tr_details["amount_out"] == 0: - details = await parse_swap_logs(tx_signature_str, logs) + logging.warning("Incomplete swap details found in logs. Getting details from transaction") + details = await get_transaction_details_info(tx_signature_str, logs) if before_source_balance > 0 and source_token_change > 0: tr_details["percentage_swapped"] = (source_token_change / before_source_balance) * 100 @@ -645,7 +646,7 @@ async def process_log(log_result): # "Program log: after_source_balance: 0, after_destination_balance: 472509072", # "Program log: source_token_change: 58730110139, destination_token_change: 270131294", -async def parse_swap_logs(tx_signature_str: str, logs: List[str]) -> Dict[str, Any]: +async def get_transaction_details_info(tx_signature_str: str, logs: List[str]) -> Dict[str, Any]: token_in = None token_out = None amount_in = 0 @@ -730,24 +731,38 @@ async def follow_move(move): slippage_bps=1, ) - raw_transaction = VersionedTransaction.from_bytes(base64.b64decode(transaction_data)) - signature = private_key.sign_message(message.to_bytes_versioned(raw_transaction.message)) - signed_txn = VersionedTransaction.populate(raw_transaction.message, [signature]) - opts = TxOpts(skip_preflight=False, preflight_commitment=Processed) - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - transaction_id = json.loads(result.to_json())['result'] + + instructions = [transaction_data['instruction']] # Adjust as needed + message = Message(instructions, private_key.pubkey()) + blockhash = await async_client.get_latest_blockhash() + tx = Transaction([private_key], message, blockhash.value) + + result = await async_client.send_transaction(tx, private_key) + transaction_id = result.value output_token_info = your_balances.get(move['token_out'], {'name': 'Unknown'}) output_token_name = output_token_info['name'] - message = ( + # raw_transaction = VersionedTransaction.from_bytes(base64.b64decode(transaction_data)) + # tx_message = raw_transaction.message + # signature = private_key.sign_message(tx_message.to_bytes_versioned()) + # signed_txn = VersionedTransaction.populate(tx_message, [signature]) + # opts = TxOpts(skip_preflight=False, preflight_commitment=Processed) + # result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) + # transaction_id = json.loads(result.to_json())['result'] + + # output_token_info = your_balances.get(move['token_out'], {'name': 'Unknown'}) + # output_token_name = output_token_info['name'] + + notification = ( f"Move Followed:\n" f"Swapped {amount_to_swap:.6f} {token_name} ({move['token_in']}) " f"(same {move['percentage_swapped']:.2f}% as followed wallet)\n" f"for {transaction_data['outputAmount'] / 1e6:.6f} {output_token_name} ({move['token_out']})" ) - logging.info(message) - await send_telegram_message(message) + logging.info(notification) + await send_telegram_message(notification) + except Exception as e: error_message = f"Swap Error:\n{str(e)}" logging.error(error_message)