Merge branch 'stable' of https://git.d-popov.com/popov/ai-kevin into stable
This commit is contained in:
commit
be0e9b54ac
12
.vscode/launch.json
vendored
12
.vscode/launch.json
vendored
@ -39,8 +39,8 @@
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen",
|
||||
"env": {
|
||||
"NODE_ENV": "demo"
|
||||
"OPENAI_API_KEY":
|
||||
"NODE_ENV": "demo",
|
||||
"OPENAI_API_KEY":""
|
||||
},
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
@ -69,7 +69,13 @@
|
||||
"program": "${file}"
|
||||
},
|
||||
{
|
||||
"name": "Python Debugger: Python File with Conda",
|
||||
"name": "py: Sol app.py",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/crypto/sol/app.py",
|
||||
},
|
||||
{
|
||||
"name": "Python Debugger: Python File with Conda (py)",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
|
@ -816,7 +816,8 @@ async def get_transaction_details_with_retry(transaction_id, retry_delay = 8, ma
|
||||
break
|
||||
except Exception as e:
|
||||
logging.error(f"Error fetching transaction details: {e}")
|
||||
logging.info(f"({_} of {max_retries}) Waiting for transaction details for {transaction_id}")
|
||||
retry_delay = retry_delay * 1.2
|
||||
logging.info(f"({_} of {max_retries}) Waiting for transaction details for {transaction_id}. retry in {retry_delay} s.")
|
||||
await asyncio.sleep(retry_delay)
|
||||
return tx_details
|
||||
|
||||
@ -886,7 +887,7 @@ async def process_log(log_result):
|
||||
|
||||
i += 1
|
||||
|
||||
# calculatte percentage swapped by digging before_source_balance, source_token_change and after_source_balance
|
||||
# calculate percentage swapped by digging before_source_balance, source_token_change and after_source_balance
|
||||
|
||||
# "Program log: before_source_balance: 19471871, before_destination_balance: 0, amount_in: 19471871, expect_amount_out: 770877527, min_return: 763168752",
|
||||
# "Program log: after_source_balance: 0, after_destination_balance: 770570049",
|
||||
@ -1023,7 +1024,7 @@ async def follow_move(move):
|
||||
# Calculate the amount to swap based on the same percentage as the followed move
|
||||
amount_to_swap = your_balance * (move['percentage_swapped'] / 100)
|
||||
|
||||
amount_to_swap = min( min(amount_to_swap, your_balance), 300)
|
||||
# amount_to_swap = min( min(amount_to_swap, your_balance), 300)
|
||||
# # always get 99% of the amount to swap
|
||||
# amount_to_swap = amount_to_swap * 0.95
|
||||
|
||||
@ -1062,7 +1063,7 @@ async def follow_move(move):
|
||||
input_mint=move['token_in'],
|
||||
output_mint=move['token_out'],
|
||||
amount=amount,
|
||||
slippage_bps=100, # Increased to 1%
|
||||
slippage_bps=300, # Increased to 3%
|
||||
)
|
||||
logging.info(f"Initiating move. Transaction data:\n {transaction_data}")
|
||||
error_logger.info(f"Initiating move. Transaction data:\n {transaction_data}")
|
||||
@ -1140,7 +1141,7 @@ SOLANA_ENDPOINTS = [
|
||||
# "wss://mainnet.rpcpool.com",
|
||||
]
|
||||
PING_INTERVAL = 30
|
||||
SUBSCRIBE_INTERVAL = 1*60 # Resubscribe every 10 minutes
|
||||
SUBSCRIBE_INTERVAL = 10*60 # Resubscribe every 10 minutes
|
||||
|
||||
|
||||
# async def heartbeat(websocket):
|
||||
@ -1176,7 +1177,7 @@ async def wallet_watch_loop():
|
||||
if first_subscription:
|
||||
asyncio.create_task( list_initial_wallet_states())
|
||||
first_subscription = False
|
||||
process_task = asyncio.create_task(process_messages(websocket, subscription_id))
|
||||
process_task = asyncio.create_task(process_messages(websocket))
|
||||
while True:
|
||||
try:
|
||||
await asyncio.wait_for(process_task, timeout=SUBSCRIBE_INTERVAL)
|
||||
@ -1198,7 +1199,7 @@ async def wallet_watch_loop():
|
||||
# Already subscribed
|
||||
logger.info("Already subscribed, continuing with existing subscription")
|
||||
if subscription_id:
|
||||
process_task = asyncio.create_task(process_messages(websocket, subscription_id))
|
||||
process_task = asyncio.create_task(process_messages(websocket))
|
||||
|
||||
else:
|
||||
# process_messages completed (shouldn't happen unless there's an error)
|
||||
@ -1216,7 +1217,7 @@ async def wallet_watch_loop():
|
||||
await unsubscribe(websocket, subscription_id)
|
||||
await send_telegram_message("reconnecting...")
|
||||
logger.info(f"Attempting to reconnect in {reconnect_delay} seconds...")
|
||||
websocket.close()
|
||||
await websocket.close()
|
||||
except Exception as e:
|
||||
logger.error(f"An unexpected error occurred - breaking watch loop: {e}")
|
||||
|
||||
@ -1236,22 +1237,7 @@ async def subscribe(websocket):
|
||||
try:
|
||||
await websocket.send(json.dumps(request))
|
||||
logger.info("Subscription request sent")
|
||||
|
||||
response = await websocket.recv()
|
||||
response_data = json.loads(response)
|
||||
|
||||
if 'result' in response_data:
|
||||
subscription_id = response_data['result']
|
||||
logger.info(f"Subscription successful. Subscription id: {subscription_id}")
|
||||
return subscription_id
|
||||
else:
|
||||
logger.warning(f"Unexpected response: {response_data}")
|
||||
return None
|
||||
except websockets.exceptions.ConnectionClosedError as e:
|
||||
logger.error(f"Connection closed unexpectedly: {e}")
|
||||
await send_telegram_message("Connection to Solana network was closed. Not listening for transactions right now. Attempting to reconnect...")
|
||||
await websocket.close()
|
||||
return None
|
||||
return await process_messages(websocket)
|
||||
except Exception as e:
|
||||
logger.error(f"An unexpected error occurred: {e}")
|
||||
return None
|
||||
@ -1268,14 +1254,23 @@ async def unsubscribe(websocket, subscription_id):
|
||||
logger.info(f"Unsubscribed from subscription id: {subscription_id}")
|
||||
subscription_id = None
|
||||
|
||||
async def process_messages(websocket, subscription_id):
|
||||
async def process_messages(websocket):
|
||||
try:
|
||||
while True:
|
||||
response = await websocket.recv()
|
||||
response_data = json.loads(response)
|
||||
logger.debug(f"Received response: {response_data}")
|
||||
|
||||
if 'params' in response_data:
|
||||
if 'result' in response_data:
|
||||
new_sub_id = response_data['result']
|
||||
if int(new_sub_id) > 1:
|
||||
subscription_id = new_sub_id
|
||||
logger.info(f"Subscription successful. New id: {subscription_id}")
|
||||
elif new_sub_id:
|
||||
logger.info(f"Existing subscription confirmed: {subscription_id}")
|
||||
else: return None
|
||||
return subscription_id
|
||||
elif 'params' in response_data:
|
||||
log = response_data['params']['result']
|
||||
logger.debug(f"Received transaction log: {log}")
|
||||
asyncio.create_task(process_log(log))
|
||||
|
@ -82,12 +82,12 @@
|
||||
"price": 4.026e-06
|
||||
},
|
||||
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v": {
|
||||
"price": 1.001,
|
||||
"price": 1.00028,
|
||||
"decimals": 6,
|
||||
"name": "USD Coin",
|
||||
"symbol": "USDC",
|
||||
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
|
||||
"holdedAmount": 160.755238,
|
||||
"holdedAmount": 51.117694,
|
||||
"priice": 1.00073
|
||||
},
|
||||
"Akev8YDBQfuCv33M1tjDcaUFAsY4Q5izMSfhbozL1Q6j": {
|
||||
@ -97,7 +97,7 @@
|
||||
"address": "Akev8YDBQfuCv33M1tjDcaUFAsY4Q5izMSfhbozL1Q6j",
|
||||
"holdedAmount": 511117.33566278,
|
||||
"priice": 3.585e-06,
|
||||
"price": 2.696e-06
|
||||
"price": 1.714e-09
|
||||
},
|
||||
"BkVeSP2GsXV3AYoRJBSZTpFE8sXmcuGnRQcFgoWspump": {
|
||||
"price": 0.001581,
|
||||
@ -146,12 +146,12 @@
|
||||
"holdedAmount": 176920.153819
|
||||
},
|
||||
"8Ki8DpuWNxu9VsS3kQbarsCWMcFGWkzzA8pUPto9zBd5": {
|
||||
"price": 0.06036,
|
||||
"price": 0.0721,
|
||||
"decimals": 9,
|
||||
"name": "LOCK IN",
|
||||
"symbol": "LOCKIN",
|
||||
"address": "8Ki8DpuWNxu9VsS3kQbarsCWMcFGWkzzA8pUPto9zBd5",
|
||||
"holdedAmount": 562.91513794
|
||||
"holdedAmount": 3666.718751598
|
||||
},
|
||||
"fESbUKjuMY6jzDH9VP8cy4p3pu2q5W2rK2XghVfNseP": {
|
||||
"price": 0.0004163,
|
||||
@ -220,7 +220,7 @@
|
||||
"symbol": "SOL",
|
||||
"address": "So11111111111111111111111111111111111111112",
|
||||
"priice": 142.85,
|
||||
"price": 138.13
|
||||
"price": 154.21
|
||||
},
|
||||
"4nfn86ssbv7wiqcsw7bpvn46k24jhe334fudtyxhp1og": {
|
||||
"symbol": null,
|
||||
@ -291,8 +291,8 @@
|
||||
"name": "Banana Tape Wall",
|
||||
"symbol": "BTW",
|
||||
"address": "4ytpZgVoNB66bFs6NRCUaAVsLdtYk2fHq4U92Jnjpump",
|
||||
"holdedAmount": 54542.700895,
|
||||
"price": 0.002082
|
||||
"holdedAmount": 53869.113034,
|
||||
"price": 0.003814
|
||||
},
|
||||
"2JcXacFwt9mVAwBQ5nZkYwCyXQkRcdsYrDXn6hj22SbP": {
|
||||
"decimals": 6,
|
||||
@ -307,8 +307,8 @@
|
||||
"name": "real fast",
|
||||
"symbol": "speed",
|
||||
"address": "5Wd2ALxQfnpgQKCyH4WL9giBiiuuLuJs84CJxfQccvmN",
|
||||
"holdedAmount": 561240.789081,
|
||||
"price": 0.002958
|
||||
"holdedAmount": 59475.003778,
|
||||
"price": 0.005088
|
||||
},
|
||||
"BsTRFEVZhXbBuy5fhxbttuim8iwzXqMdRCfFftDAkkeu": {
|
||||
"decimals": 6,
|
||||
@ -331,8 +331,8 @@
|
||||
"name": "Honk",
|
||||
"symbol": "HONK",
|
||||
"address": "3ag1Mj9AKz9FAkCQ6gAEhpLSX8B2pUbPdkb9iBsDLZNB",
|
||||
"holdedAmount": 70780.323867533,
|
||||
"price": 0.00369
|
||||
"holdedAmount": 51532.310973239,
|
||||
"price": 0.005597
|
||||
},
|
||||
"7M9KJcPNC65ShLDmJmTNhVFcuY95Y1VMeYngKgt67D1t": {
|
||||
"decimals": 6,
|
||||
@ -341,5 +341,117 @@
|
||||
"address": "7M9KJcPNC65ShLDmJmTNhVFcuY95Y1VMeYngKgt67D1t",
|
||||
"holdedAmount": 118734.201549,
|
||||
"price": 0.01307
|
||||
},
|
||||
"9MBzpyMRkj2r5nTQZMMnxnCm5j1MAAFSYUtbSKjAF3WU": {
|
||||
"decimals": 9,
|
||||
"name": "Zoomer",
|
||||
"symbol": "ZOOMER",
|
||||
"address": "9MBzpyMRkj2r5nTQZMMnxnCm5j1MAAFSYUtbSKjAF3WU",
|
||||
"holdedAmount": 14933.802262203,
|
||||
"price": 0.01624
|
||||
},
|
||||
"7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr": {
|
||||
"decimals": 9,
|
||||
"name": "POPCAT",
|
||||
"symbol": "POPCAT",
|
||||
"address": "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr",
|
||||
"holdedAmount": 0.000847952,
|
||||
"price": 1.35
|
||||
},
|
||||
"ENKS64JiF1zqUoDK8co94H56jyeSLk7reCL9JMgb9kvN": {
|
||||
"decimals": 9,
|
||||
"name": "KODOG",
|
||||
"symbol": "KODOG",
|
||||
"address": "ENKS64JiF1zqUoDK8co94H56jyeSLk7reCL9JMgb9kvN",
|
||||
"holdedAmount": 99.0,
|
||||
"price": 0.0
|
||||
},
|
||||
"8yJ15ee2AUQmwbWPxXLTTeBTzyMGn4MtSRKMqVHw1J1G": {
|
||||
"decimals": 6,
|
||||
"name": "KITTY AI",
|
||||
"symbol": "KITTY",
|
||||
"address": "8yJ15ee2AUQmwbWPxXLTTeBTzyMGn4MtSRKMqVHw1J1G",
|
||||
"holdedAmount": 129276.709668,
|
||||
"price": 0.0009348
|
||||
},
|
||||
"Fch1oixTPri8zxBnmdCEADoJW2toyFHxqDZacQkwdvSP": {
|
||||
"decimals": 9,
|
||||
"name": "HARAMBE",
|
||||
"symbol": "HARAMBE",
|
||||
"address": "Fch1oixTPri8zxBnmdCEADoJW2toyFHxqDZacQkwdvSP",
|
||||
"holdedAmount": 64709.32823393,
|
||||
"price": 0.04215
|
||||
},
|
||||
"5AnPDx9GposBi9jSW2dFfE5QQD3FmXbudoquMNDxpump": {
|
||||
"decimals": 6,
|
||||
"holdedAmount": 96454.077139,
|
||||
"name": "Dollar",
|
||||
"symbol": "DOLLAR",
|
||||
"address": "5AnPDx9GposBi9jSW2dFfE5QQD3FmXbudoquMNDxpump",
|
||||
"price": 0.001738
|
||||
},
|
||||
"6n7Janary9fqzxKaJVrhL9TG2F61VbAtwUMu1YZscaQS": {
|
||||
"decimals": 6,
|
||||
"holdedAmount": 165800.081237,
|
||||
"name": "Ansem's Cat",
|
||||
"symbol": "Hobbes",
|
||||
"address": "6n7Janary9fqzxKaJVrhL9TG2F61VbAtwUMu1YZscaQS",
|
||||
"price": 0.001806
|
||||
},
|
||||
"9jaZhJM6nMHTo4hY9DGabQ1HNuUWhJtm7js1fmKMVpkN": {
|
||||
"decimals": 9,
|
||||
"name": "AMC",
|
||||
"symbol": "AMC",
|
||||
"address": "9jaZhJM6nMHTo4hY9DGabQ1HNuUWhJtm7js1fmKMVpkN",
|
||||
"holdedAmount": 151990.888522526,
|
||||
"price": 0.001647
|
||||
},
|
||||
"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB": {
|
||||
"decimals": 6,
|
||||
"name": "USDT",
|
||||
"symbol": "USDT",
|
||||
"address": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
|
||||
"holdedAmount": 0.060209,
|
||||
"price": 0.9998
|
||||
},
|
||||
"8vCAUbxejdtaxn6jnX5uaQTyTZLmXALg9u1bvFCAjtx7": {
|
||||
"decimals": 6,
|
||||
"name": "ZACK MORRIS",
|
||||
"symbol": "ZACK",
|
||||
"address": "8vCAUbxejdtaxn6jnX5uaQTyTZLmXALg9u1bvFCAjtx7",
|
||||
"holdedAmount": 7313.78243,
|
||||
"price": 0.02023
|
||||
},
|
||||
"EKEWAk7hfnwfR8DBb1cTayPPambqyC7pwNiYkaYQKQHp": {
|
||||
"decimals": 6,
|
||||
"name": "Roaring Kitty",
|
||||
"symbol": "KITTY",
|
||||
"address": "EKEWAk7hfnwfR8DBb1cTayPPambqyC7pwNiYkaYQKQHp",
|
||||
"holdedAmount": 228658.544423,
|
||||
"price": 0.003091
|
||||
},
|
||||
"FtHCi9cxJSSizrzMzsPjAfTfJi32V1CGRDM5Skqn4QBF": {
|
||||
"decimals": 6,
|
||||
"name": "pixi",
|
||||
"symbol": "pixi",
|
||||
"address": "FtHCi9cxJSSizrzMzsPjAfTfJi32V1CGRDM5Skqn4QBF",
|
||||
"holdedAmount": 211191.26677,
|
||||
"price": 0.001234
|
||||
},
|
||||
"BuxH23osRyFFLbWG3czrTsfBQYbxzVZ8f7QV4cjTHN5x": {
|
||||
"decimals": 6,
|
||||
"name": "John",
|
||||
"symbol": "JOHN",
|
||||
"address": "BuxH23osRyFFLbWG3czrTsfBQYbxzVZ8f7QV4cjTHN5x",
|
||||
"holdedAmount": 69195.568536,
|
||||
"price": 0.004173
|
||||
},
|
||||
"J7tYmq2JnQPvxyhcXpCDrvJnc9R5ts8rv7tgVHDPsw7U": {
|
||||
"decimals": 6,
|
||||
"name": "George Droyd",
|
||||
"symbol": "FLOYDAI",
|
||||
"address": "J7tYmq2JnQPvxyhcXpCDrvJnc9R5ts8rv7tgVHDPsw7U",
|
||||
"holdedAmount": 22523.013616,
|
||||
"price": 0.007335
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user