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)