import requests from pycoingecko import CoinGeckoAPI
cg = CoinGeckoAPI()
def get_top_solana_meme_coins(num=60): coins = cg.get_coins_markets( vs_currency='usd', category='solana-meme', # Updated category if available; fallback to 'meme-token' + filter order='market_cap_desc', per_page=250, page=1, sparkline=False ) # Robust filter for Solana-based solana_memes = [ coin for coin in coins if coin.get('platforms', {}).get('solana') ] return solana_memes[:num]
def check_rug_risk(token_address): url = f"https://api.rugcheck.xyz/v1/tokens/{token_address}/report" try: response = requests.get(url, timeout=10) if response.status_code == 200: data = response.json() # Key risk indicators (based on common RugCheck fields) risk_level = data.get('result', 'Unknown').lower() risk_score = data.get('risk_score', 0) top_holders_risk = any('top' in r.lower() and 'holder' in r.lower() for r in data.get('risks', [])) liquidity_locked = data.get('liquidity', {}).get('locked_percentage', 0)
is_high_risk = (
risk_level in ['danger', 'high'] or
risk_score > 10000 or
top_holders_risk or
liquidity_locked < 70
)
return {
'high_risk': is_high_risk,
'risk_level': risk_level,
'risk_score': risk_score,
'liquidity_locked': liquidity_locked,
'details': data.get('risks', [])
}
else:
return {'error': f"Status {response.status_code}"}
except Exception as e:
return {'error': str(e)}
def nexus_recommendations(min_change=4.0, max_risk_score=15000): memes = get_top_solana_meme_coins() buys = [] rugs = []
for coin in memes:
address = coin['platforms'].get('solana', '')
if not address:
continue
rug_info = check_rug_risk(address)
if 'error' not in rug_info:
change_24h = coin.get('price_change_percentage_24h', 0)
price = coin['current_price']
mcap = coin['market_cap']
# Buy logic: positive momentum + not too risky
if change_24h > min_change and not rug_info['high_risk']:
buys.append({
'symbol': coin['symbol'].upper(),
'name': coin['name'],
'price': price,
'change_24h': change_24h,
'mcap': mcap,
'risk': rug_info['risk_level'],
'details': rug_info
})
# Rug flag: high risk indicators
elif rug_info['high_risk']:
rugs.append({
'symbol': coin['symbol'].upper(),
'name': coin['name'],
'risk': rug_info['risk_level'],
'score': rug_info['risk_score'],
'details': rug_info
})
return sorted(buys, key=lambda x: x['change_24h'], reverse=True), rugs
if name == "main": print("Nexus ($NEX) Meme Tracker running...") recommended, dangerous = nexus_recommendations()
print("\nNEX Buy Recommendations (Momentum + Safer Risk):")
for b in recommended[:6]:
print(f"- {b['symbol']} ({b['name']}): ${b['price']:.6f} | +{b['change_24h']:.1f}% 24h | MC ${b['mcap']:,}")
print(f" Risk: {b['risk']} | LP Locked: {b['details']['liquidity_locked']}%")
print("\nPotential Rugs / High Risk Alerts:")
for r in dangerous[:6]:
print(f"- {r['symbol']} ({r['name']}): Risk {r['risk']} (Score: {r['score']})")
print(f" Details: {', '.join(r['details']['details'][:3])}...")
print("\nPowered by CoinGecko + RugCheck. Use at your own risk — DYOR always!")
