subscription works
This commit is contained in:
parent
96601194e0
commit
d9aee80925
@ -1,5 +1,8 @@
|
||||
SOLANA_NET_URL="wss://api.mainnet-beta.solana.com"
|
||||
DEVELOPER_CHAT_ID="777826553"
|
||||
FOLLOWED_WALLET="9U7D916zuQ8qcL9kQZqkcroWhHGho5vD8VNekvztrutN"
|
||||
# Niki's
|
||||
# FOLLOWED_WALLET="9U7D916zuQ8qcL9kQZqkcroWhHGho5vD8VNekvztrutN"
|
||||
# My test
|
||||
FOLLOWED_WALLET="7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV"
|
||||
YOUR_WALLET="65nzyZXTLC81MthTo52a2gRJjqryTizWVqpK2fDKLye5"
|
||||
TELEGRAM_BOT_TOKEN="6805059978:AAHNJKuOeazMSJHc3-BXRCsFfEVyFHeFnjw"
|
@ -189,30 +189,43 @@ async def follow_move(move):
|
||||
await send_telegram_message(message)
|
||||
|
||||
async def on_logs(log):
|
||||
print(f"Received log: {log}")
|
||||
if 'err' in log and log['err']:
|
||||
return
|
||||
try:
|
||||
print(f"Received log: {log}")
|
||||
if 'err' in log and log['err']:
|
||||
return
|
||||
|
||||
tx = log['signature']
|
||||
tx_result = await solana_client.get_transaction(tx)
|
||||
if 'value' in log and 'logs' in log['value']:
|
||||
tx = log['value']['signature']
|
||||
logs = log['value']['logs']
|
||||
|
||||
if tx_result and 'result' in tx_result and tx_result['result']:
|
||||
transaction = tx_result['result']['transaction']
|
||||
message = transaction['message']
|
||||
for instruction in message['instructions']:
|
||||
if instruction['programId'] == TOKEN_ADDRESSES['SOL']:
|
||||
# This is a token transfer
|
||||
from_pubkey = instruction['accounts'][0]
|
||||
to_pubkey = instruction['accounts'][1]
|
||||
amount = int(instruction['data'], 16) / 1e9 # Convert lamports to SOL
|
||||
# Fetch transaction details
|
||||
tx_result = await solana_client.get_transaction(tx)
|
||||
|
||||
if from_pubkey == FOLLOWED_WALLET:
|
||||
move = {
|
||||
'token': 'SOL',
|
||||
'amount': amount,
|
||||
'to_token': 'Unknown' # You might want to determine this based on the receiving address
|
||||
}
|
||||
await follow_move(move)
|
||||
if tx_result and 'result' in tx_result and tx_result['result']:
|
||||
transaction = tx_result['result']['transaction']
|
||||
message = transaction['message']
|
||||
|
||||
for log_entry in logs:
|
||||
if 'Program log: Instruction: Swap' in log_entry:
|
||||
# Handle swap event
|
||||
for instruction in message['instructions']:
|
||||
if instruction['programId'] == TOKEN_ADDRESSES['SOL']:
|
||||
# This is a token transfer
|
||||
from_pubkey = instruction['accounts'][0]
|
||||
to_pubkey = instruction['accounts'][1]
|
||||
amount = int(instruction['data'], 16) / 1e9 # Convert lamports to SOL
|
||||
|
||||
if from_pubkey == FOLLOWED_WALLET:
|
||||
move = {
|
||||
'token': 'SOL',
|
||||
'amount': amount,
|
||||
'to_token': 'Unknown' # You might want to determine this based on the receiving address
|
||||
}
|
||||
await follow_move(move)
|
||||
else:
|
||||
print(f"Unexpected log format: {log}")
|
||||
except:
|
||||
print(f"error logging: {log}")
|
||||
async def subscribe_to_wallet():
|
||||
uri = SOLANA_URL
|
||||
async with websockets.connect(uri) as websocket:
|
||||
|
51
crypto/sol/example.rpc.json
Normal file
51
crypto/sol/example.rpc.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "logsNotification",
|
||||
"p..."subscription":687833}}' [5623 bytes]
|
||||
Received log: {'context': {'slot': 293284750
|
||||
}, 'value': {'signature': '2fyKzryr86FVD6fi8C3CDpdbcQW1MhtV48n1iMiD2Nhi9DizLzpNiGHbrnXkvSHvntmGxLddEhf4kvuSPzs4tvui', 'err': None, 'logs': ['Program ComputeBudget111111111111111111111111111111 invoke [
|
||||
1
|
||||
]', 'Program ComputeBudget111111111111111111111111111111 success', 'Program ComputeBudget111111111111111111111111111111 invoke [
|
||||
1
|
||||
]', 'Program ComputeBudget111111111111111111111111111111 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [
|
||||
1
|
||||
]', 'Program log: Instruction: SharedAccountsRoute', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
2
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 308347 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB invoke [
|
||||
2
|
||||
]', 'Program log: Instruction: Swap', 'Program 24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi invoke [
|
||||
3
|
||||
]', 'Program log: Instruction: Deposit', 'Program data: H159WuM0PbqlwOWsDgAAAKXA5awOAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
4
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 245952 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
4
|
||||
]', 'Program log: Instruction: MintTo', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4492 of 238215 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi consumed 30967 of 261328 compute units', 'Program 24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi success', 'Program 24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi invoke [
|
||||
3
|
||||
]', 'Program log: Instruction: Withdraw', 'Program data: dPRh6GcfmDpCiGtKAAAAAEKIa0oAAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
4
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 201327 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
4
|
||||
]', 'Program log: Instruction: Burn', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4616 of 193814 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi consumed 30630 of 216508 compute units', 'Program 24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi success', 'Program data: UWzjvs3QCsSFwOWsDgAAAEKIa0oAAAAAU6iRJQAAAAAAAAAAAAAAAAAAAAAAAAAA', 'Program Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB consumed 118660 of 294582 compute units', 'Program Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [
|
||||
2
|
||||
]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 173550 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [
|
||||
2
|
||||
]', 'Program log: Instruction: Swap', 'Program log: fee_growth: 6608640885', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
3
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 134531 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
3
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 126826 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 46541 of 165885 compute units', 'Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [
|
||||
2
|
||||
]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 117029 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [
|
||||
2
|
||||
]', 'Program log: ray_log: A8ZohAAAAAAAAAAAAAAAAAABAAAAAAAAAKk8pB0AAAAAjou8M3XdiwBroLt8/QIAAA9s6CEYAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
3
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 90401 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
3
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 82684 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30542 of 107727 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [
|
||||
2
|
||||
]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 74811 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
|
||||
2
|
||||
]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 70533 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 260421 of 324867 compute units', 'Program return: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 D2zoIRgAAAA=', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success'
|
||||
]
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user