fixes and starbility ()tetrt
This commit is contained in:
@ -1,8 +1,16 @@
|
||||
import asyncio
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from flask import Flask, jsonify, request, render_template, redirect, url_for
|
||||
# from flask_oauthlib.client import OAuth
|
||||
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
|
||||
import secrets
|
||||
import json
|
||||
# from crypto.sol.config import LIQUIDITY_TOKENS
|
||||
from config import LIQUIDITY_TOKENS
|
||||
|
||||
from modules import storage, utils, SolanaAPI
|
||||
from modules.utils import async_safe_call
|
||||
import os
|
||||
@ -98,8 +106,10 @@ def init_app(tr_handler=None):
|
||||
with open( os.path.join(SolanaAPI.root_path, 'logs', f'wh_{current_time}.json') , 'w') as f:
|
||||
json.dump(request_data, f)
|
||||
|
||||
process_wh(request_data)
|
||||
return jsonify({"status": "Webhook processed"}), 200
|
||||
# await process_wh(request_data)
|
||||
# don't wait for the process to finish
|
||||
asyncio.create_task(process_wh(request_data ))
|
||||
return jsonify({"status": "OK"}), 200
|
||||
except Exception as e:
|
||||
logging.error(f"Error processing webhook: {e}")
|
||||
return jsonify({"error": "Failed to process webhook"}), 500
|
||||
@ -123,14 +133,40 @@ def init_app(tr_handler=None):
|
||||
if not token_inputs or not token_outputs:
|
||||
logging.warning("Missing token inputs or outputs")
|
||||
return
|
||||
|
||||
tr = {
|
||||
'token_in': token_inputs[0]['mint'],
|
||||
'token_out': token_outputs[0]['mint'],
|
||||
'amount_in': float(token_inputs[0]['rawTokenAmount']['tokenAmount']) / 10**token_inputs[0]['rawTokenAmount']['decimals'],
|
||||
'amount_out': float(token_outputs[0]['rawTokenAmount']['tokenAmount']) / 10**token_outputs[0]['rawTokenAmount']['decimals'],
|
||||
}
|
||||
|
||||
usdcMint = LIQUIDITY_TOKENS[0]
|
||||
tr = {}
|
||||
if not token_inputs or len(token_inputs) == 0:
|
||||
logging.info("Assumed USDC as first token. BUY transaction detected")
|
||||
tr["token_in"] = usdcMint
|
||||
tr["type"] = "BUY"
|
||||
tr["amount_in"] = await SolanaAPI.DEX.get_token_prices(
|
||||
token_outputs[0]["mint"],
|
||||
int(token_outputs[0]["rawTokenAmount"]["tokenAmount"])
|
||||
)
|
||||
else:
|
||||
token_in = token_inputs[0]
|
||||
tr["token_in"] = token_in["mint"]
|
||||
tr["token_in_decimals"] = token_in["rawTokenAmount"]["decimals"]
|
||||
tr["amount_in"] = float(int(token_in["rawTokenAmount"]["tokenAmount"]) / 10**token_in["rawTokenAmount"]["decimals"])
|
||||
# 'amount_in': float(token_inputs[0]['rawTokenAmount']['tokenAmount']) / 10**token_inputs[0]['rawTokenAmount']['decimals'],
|
||||
|
||||
if not token_outputs or len(token_outputs) == 0:
|
||||
logging.info("Assumed USDC as second token. SELL transaction detected")
|
||||
tr["token_out"] = usdcMint
|
||||
tr["type"] = "SELL"
|
||||
tr["amount_out"] = await SolanaAPI.DEX.get_token_prices(
|
||||
token_inputs[0]["mint"],
|
||||
int(token_inputs[0]["rawTokenAmount"]["tokenAmount"])
|
||||
)
|
||||
else:
|
||||
token_out = token_outputs[0]
|
||||
tr["token_out"] = token_out["mint"]
|
||||
tr["token_out_decimals"] = token_out["rawTokenAmount"]["decimals"]
|
||||
tr["amount_out"] = float(int(token_out["rawTokenAmount"]["tokenAmount"]) / 10**token_out["rawTokenAmount"]["decimals"])
|
||||
#'amount_out': float(token_outputs[0]['rawTokenAmount']['tokenAmount']) / 10**token_outputs[0]['rawTokenAmount']['decimals'],
|
||||
|
||||
|
||||
if not tr["token_in"] or not tr["token_out"] or tr["amount_in"] == 0 or tr["amount_out"] == 0:
|
||||
logging.warning("Incomplete swap details found in logs. Getting details from transaction")
|
||||
tx_signature = data[0].get('signature')
|
||||
@ -150,7 +186,7 @@ def init_app(tr_handler=None):
|
||||
tr['value_out_USD'] = prices.get(tr['token_out'], 0) * tr['amount_out']
|
||||
|
||||
notification = (
|
||||
f"<b>Got WH notification:</b>: {tr['amount_in']} {tr['symbol_in']} swapped for {tr['symbol_out']} \n"
|
||||
f"<b>Got WH notification:</b>: {tr['amount_in']} {tr['symbol_in']} swapped for {tr['amount_out']} {tr['symbol_out']} ${tr['value_out_USD']}\n"
|
||||
)
|
||||
logging.info(notification)
|
||||
await utils.telegram_utils.send_telegram_message(notification)
|
||||
|
Reference in New Issue
Block a user