robinhood-lp-bot README

The project's README from github.com/pamgarcia1993/robinhood-lp-bot. As one markdown file: README.md.

🐷 Robinhood LP Bot v2

TypeScript Node ethers Robinhood Chain
Uniswap Kyber Control License

LP otomatis di Uniswap v2 · v3 · v4 (Robinhood Chain) — full kontrol dari Telegram.

Paste CA → pilih pool → ketik jumlah ETH → posisi kebuka. Sekarang juga.

Bahasa Indonesia English


About

Robinhood LP Bot v2 adalah bot liquidity-provider buat Robinhood Chain yang dijalanin sepenuhnya dari Telegram. Paste contract address → bot cariin pool paling likuid di Uniswap v2 / v3 / v4 (termasuk pair USDG), beliin token lewat KyberSwap aggregator (rute terbaik lintas semua DEX/fee-tier, anti price-impact), terus buka posisi LP. Semua math tick/harga lewat Uniswap SDK resmi — nol drift presisi, nggak ada Math.pow hand-rolled.

Di atas LP-nya ada layer deteksi + screening:

…dan layer otomasi farming (baru):

Ditulis TypeScript modular, owner-only auth, slippage floor di semua swap, atomic ledger write, graceful shutdown, single-instance lock, serialize tx satu-per-satu (anti nonce-collision). Jalan di laptop atau VPS 24 jam.


📸 Kartu profit (auto tiap close)

Tiap posisi ditutup, bot langsung kirim kartu PNG siap-share ke Telegram. Ada juga kartu portfolio (/card) buat rekap semua, dan kartu per-posisi dari /ledger.

Per-close — PROFIT

kartu profit

Per-close — LOSS

kartu loss

Portfolio — ALL-TIME (/card)

kartu portfolio

Background bisa lu ganti: kirim foto ke bot (langsung di-set jadi bg kartu) atau taruh assets/card-bg.jpg. Brand default 0xRapzz — ubah via RH_CARD_BRAND, tagline via RH_CARD_TAG. Font monospace (DejaVu Sans Mono) di-bundle di VPS.


Menu Telegram

Kirim /start → muncul menu tombol (reply keyboard) yang persisten, semua fungsi sekali tap:

📋 Posisi — /list 📒 Ledger — /ledger 💰 PnL — /pnl
🧪 Screen — /screen 🔍 Scan — /scan 📸 Kartu — /card
🔄 Swap — /swap 📡 Feed — /feed 👁 Watch — /watch
🤖 Auto — /auto 👛 Wallet — /wallet ⚙️ Setting — /settings
🗑 Close All — /closeall 💸 Sell — /sell ❔ Help — /help

Tampilan log

Bersih, timestamped, per-modul. Contoh boot + runtime:

[10:01:45] INFO  client   · fast-submit ON → sequencer.mainnet.chain.robinhood.com
[10:01:45] INFO  bot      · Robinhood LP Bot v2 jalan — chain 4663, wallet 0xc017…469e
[10:01:45] INFO  watch    · ON — scan tiap 120s (vol5m ≥ $200k, naik 1.4×)
[10:01:45] INFO  feed     · connect feed.mainnet.chain.robinhood.com
[10:01:45] INFO  feedmon  · ON — newToken=true positionMonitor=true autoClose=false
[10:01:45] INFO  feed     · connected (101)
[10:02:02] INFO  feedmon  · new token NUG ditolak: TIDAK BISA DIJUAL (simulasi revert) — honeypot
[10:14:07] INFO  v4close  · close v4 #177922 WOLVES/USDG — +$0.35 (fee $1.08)
[10:14:08] INFO  card     · close card terkirim

Ke VPS: pm2 logs robinhood-lp.


Kenapa ada bot ini

Tiga hal yang bikin LP manual nyebelin:

  1. Web Uniswap ngelag — connect, approve, set range, mint. Tiap langkah loading.
  2. Range-nya bahasa alien — Uniswap kasih tick 130400–134400. Itu artinya apa?
  3. Udah open, untung nggak? — cuma keliatan "unclaimed fees". Modal awal berapa? Nilainya sekarang berapa? Nggak jelas.

Bot ini jawab ketiganya. Range ditampilin dalam MCAP ($2.64M → $3.94M), PnL dihitung dari harga jual asli, dan semuanya dari Telegram.


Setup (5 menit)

Butuh: Node.js 20+ (download)

# 1. Masuk foldernya
cd Robinhood-LP-Bot

# 2. Install (narik ethers v6 + @uniswap/{v3,v4}-sdk + @napi-rs/canvas + typescript)
npm install

# 3. Siapin config
cp .env.example .env

Sekarang buka .env, isi:

Isi apa Dapetnya dari mana
RH_RPC_URL alchemy.com → bikin app → pilih chain Robinhood → copy HTTPS URL
RH_WALLET_KEY Private key wallet EVM lu. Pakai wallet baru/burner, jangan wallet utama
RH_TG_TOKEN Chat @BotFather di Telegram → /newbot → copy token
RH_TG_CHAT Owner chat id — GERBANG KEAMANAN. Chat @userinfobot buat dapet id lu. Cuma chat ini yang boleh nyuruh bot
RH_WATCH_RPC_URL (opsional) app Alchemy kedua, buat scanner. Kosongin juga nggak apa-apa
RH_OPENROUTER_KEY (opsional) openrouter.ai/keys — nyalain radar LLM
KYBERSWAP_* (opsional) endpoint aggregator KyberSwap — buat swap rute-terbaik (lihat .env.example)

Bikin wallet baru cepat:

node -e "const w=require('ethers').Wallet.createRandom();console.log('Address:',w.address);console.log('Key    :',w.privateKey)"

Isi wallet itu pakai ETH di Robinhood Chain (bridge dari mainnet). Sisain minimal 0.015 ETH buat gas.

Jalanin:

npm start        # = node --env-file-if-exists=.env --import tsx src/index.ts

Buka bot lu di Telegram, kirim /start. Kalau dia jawab, beres.

Pengecekan tipe: npm run typecheck · dev auto-reload: npm run dev


Cara pakai

Buka posisi LP

  1. Paste CA token (0x…) ke chat
  2. Bot cariin pool-nya di v2 / v3 / v4 (label ETH ✅ / USDG ✅) → pilih salah satu
  3. Ketik jumlah ETH (contoh: 0.05)
  4. Pilih mode:
🛡 Single-side ETH — range $2.64M → $3.94M
   0% token. Fee jalan cuma kalau MCAP masuk range. Aman dari rug.

🎯 In-range — range $3.35M → $5.00M
   beliin ~51% modal → token duluan (via Kyber, rute terbaik).
   Fee LANGSUNG jalan, tapi lu langsung pegang token (rug = rugi 51% instan).

Bedanya penting — baca ini:

🛡 Single-side 🎯 In-range
Isi posisi awal 100% ETH ~49% ETH + ~51% token
Fee nunggu harga masuk range jalan dari detik 1
Kalau token rug rugi kecil (belum kekonversi) rugi ~51% instan

Uniswap nggak bisa bikin range yang nyebrang harga cuma dengan satu token. Jadi "in-range" artinya bot beliin tokennya duluan (lewat KyberSwap aggregator → rute termurah, bukan di pool fee-tinggi yang lu pilih). Pakai buat token yang pool-nya tebel. Token meragukan → tetep single-side.

Pair USDG: sama persis, cuma quote asset-nya USDG (bukan ETH). Single-side USDG = parkir USDG doang (rug-safe). Kalau udah ada USDG di wallet, muncul tombol 💵 pakai USDG wallet ($X) — buka posisi langsung dari USDG itu, tanpa input jumlah, tanpa swap. USDG yang udah ada juga otomatis di-reuse (gak beli 2×; cuma beli kekurangannya). Buat in-range v4 (yang gak refund kelebihan kayak v3), sisa yang gak kepakai di-sweep balik ke ETH biar wallet gak numpuk dust.

Cek posisi — /list

📋 Posisi LP · ETH $1844 · 09.44.49

🐷 DATABEAR  ·  fee 1.00%  ·  #86566
   🟢 IN RANGE
   modal     0.060000Ξ    $108.66
   nilai     0.073289Ξ    $132.74
   fee       0.016264Ξ     $29.46
   umur            36m  $48.02/jam
   MCAP         $3.28M  entry $4.20M
   range   $2.69M → $4.02M
   PnL      +0.013289Ξ    +$24.07  +22.1%

🦄 UNISWAP v4 · 2 posisi
   ...
💧 UNISWAP v2 · 1 posisi
   ...

TOTAL 4 posisi  ·  v3 1 · v4 2 · v2 1
modal   0.128000Ξ    $236.03
nilai   0.141813Ξ    $261.50
fee     0.017640Ξ     $32.53
PnL    +0.013813Ξ     +$25.47

$/jam itu angka paling berguna di sini. Umur doang nggak nolong. Yang lu butuh tau: posisi ini masih kerja apa udah nganggur?

TOTAL (gabung v3+v4+v2) selalu di baris paling bawah. Tombol 🔄 Refresh ambil data fresh; /list biasa dilayanin dari cache 20 detik (biar instan). Tiap token ada tombol Close / 💰 Claim.

Tutup posisi

Pencet tombol close → pilih:

Bot otomatis: tarik likuiditas → klaim fee → burn NFT → (swap) → isi gas balik ke 0.015 ETH → kirim kartu profit.

Buat token honeypot yang nggak bisa ditarik (transfer revert), bot force-close: relakan sisi token yang keblokir, selametin ETH-nya.

⚠️ Catatan "Simpen token": auto-swap pas close nyapu seluruh saldo token di dompet, bukan cuma dari posisi itu.

➕ Tambah liq ke posisi yang ada (increase)

Udah punya posisi (misal USDG/TACO) terus mau nambahin liq? Di /list tiap posisi v4 ada tombol ➕ Add → ketik jumlah ETH → bot swap ½ token + ½ USDG lalu masuk ke posisi yang SAMA (bukan bikin NFT baru — SDK emit INCREASE_LIQUIDITY). Pakai range posisi existing, basis PnL ikut nambah (LP-vs-HODL tetep jujur), reuse USDG di wallet + sweep sisa → ETH. (Pair USDG dulu; ETH-pair nyusul.)

Riwayat — /ledger

Semua posisi ditutup (v3 + v4 + v2, urut terbaru dulu), tombol Next/Back + 📸 kartu per-posisi. Stats gabungan: win rate, modal, fee LP, realized vs nyangkut.

📅 Profit Calendar — /calendar

Grid kalender bulanan (PNG) — tiap kotak = PnL realized posisi yang di-close hari itu (LP-vs-HODL, fee included). Ijo profit, merah loss, header "X up · Y down" + total bulan. Tombol ⬅️ Prev / Next ➡️ buat pindah bulan. Hari reset 00:00 UTC = 07:00 WIB. Background bisa diganti (kirim foto ke bot / assets/card-bg.jpg / RH_CARD_BG — sama kayak kartu profit).

Ledger direkonstruksi dari event on-chain — posisi lama tetep kebaca walau baru install bot-nya. Pair USDG dihitung LP-vs-HODL (fee + IL, exclude gerakan harga token) biar konsisten dan jujur.

Swap — /swap

/swap <jumlah> <dari> <ke> — swap token apa aja lewat KyberSwap aggregator (rute terbaik lintas DEX). dari/ke = eth atau CA. Tampil quote + breakdown rute + slippage → tombol ✅ konfirmasi.

Screening thesis — /screen

Filter GMGN 24 jam pakai playbook operator: mcap > $500k, vol > $1M, buang flap.fun, util diprioritas, meme dipenalti, cek komunitas + FOMO. Top-10 di-skor LLM. /screen fast = tanpa LLM.

Scanner volume — /watch

Jalan otomatis tiap 2 menit. Nyari volume 5-menit yang NANJAK, bukan sekadar tinggi. Tiap token diuji honeypot on-chain:

DATABEAR  simulasi beli 0.01Ξ → jual balik 0.00980Ξ = 98.0%  ✅ sehat
honeypot  simulasi beli 0.01Ξ → REVERT                       🚨 ditolak

Notifnya bawa CA, link DexScreener, dan tombol 🎯 LP langsung.

Monitor sequencer real-time — /feed

Opt-in (default off): /feed on. Dengerin feed sequencer Nitro (wss://feed.mainnet.chain.robinhood.com/feed) — mempool sub-detik, sebelum tx masuk block.

  1. 🆕 Token baru — deteksi pool WETH baru / mint likuiditas pertama, langsung uji honeypot + tombol 1-tap LP.
  2. 🔴 Out-of-range — swap ngenain pool yang lu LP-in → cek tick → alert (opsional auto-close, default off).

⚠️ DNS hijack: kalau jaringan lu hijack DNS domain feed (mis. Telkomsel "Internet Baik"), set RH_FEED_IP=172.66.147.70 di .env. Di VPS US nggak perlu. Sequencer di AWS Ohio (us-east-2).

Toggle: /set newtoken 1 · /set posmon 1 · /set autoclose 0 · /set minseed 0.02

Fast-submit — broadcast langsung ke sequencer

Set RH_FAST_SUBMIT=1. Tx dikirim langsung ke sequencer Robinhood (AWS us-east-2 / Ohio), skip hop relay. Baca tetep via RPC utama; sequencer error → auto fallback (tx nggak ilang). Paling ngefek di VPS US. Lokal + DNS hijack → set RH_SEQUENCER_IP=3.136.74.196.

⚡ Deteksi receipt cepat: block Robinhood sub-detik, tapi ethers default nge-poll receipt tiap 4 detik → close/add/swap multi-tx berasa lama. Bot set pollingInterval ke 350ms (tunable RH_POLL_MS), jadi tx.wait() balik ~10× lebih cepet.

Radar LLM + GMGN — layer konfirmasi kandidat

Tiap kandidat (token baru dari feed / spike dari watch) di-skor LLM lewat OpenRouter + di-enrich data GMGN (smart money, holders, rug ratio, tax, konsentrasi top-10). Verdict (🟢 APE / 🟡 WATCH / 🔴 SKIP + skor + alasan) nempel di notif, sebelum lu pencet LP.

# nyalain
RH_OPENROUTER_KEY=...        # openrouter.ai/keys
/set radar 1                 # di Telegram

GMGN (opsional, enrich): install gmgn-cli + config di mesin yang jalanin bot (key GMGN ke-bind ke keypair lokal — lihat .env.example §9). GMGN support chain robinhood. Nggak dikonfig → radar tetep jalan pakai LLM + data on-chain aja (degrade mulus).

Semua best-effort: fast-submit / radar / GMGN / Kyber mati sendiri kalau env/tool-nya nggak ada — bot inti tetep jalan.


Auto-farming — hunter + auto-add + auto-close (/hunt · /auto)

Layer paling atas: bot cariin, buka, dan tutup posisi sendiri — lu tinggal set gate-nya.

1. Hunter (/hunt) — tiap 3 menit: 100 trending → screening (thesis + LLM) → cuma yang punya pool fee 3-5% RAME → kandidat. Gate kualitasnya (semua tunable via /set):

2. Auto-add — kandidat lolos gate + verdict (requireAction ≥ watch, skor ≥ alpscore) dibuka otomatis. Gate berlapis: source, LLM verdict, GMGN honeypot/tax, likuiditas, 1 token = 1 posisi (anti dobel), cap concurrent/jam/harian, saldo. Mode:

single (rug-safe) inrange (agresif)
Isi posisi parkir quote asset (USDG/ETH) doang both-sided (beli token juga)
Fee jalan pas harga MASUK range jalan LANGSUNG
Kalau rug aman (0 token) pegang token → rugi

/set alpmode single atau /set alpmode inrange — live, tanpa restart.

3. Auto-close — manage loop cek tiap 90 detik: TP (PnL ≥ alptp%) · SL (PnL ≤ −alpsl%) · OOR (keluar range > alpgrace menit). PnL dihitung LP-vs-HODL (fee + IL, konsisten sama yang di-realize pas close), bukan budget kotor. Tiap close → sweep proceeds → ETH otomatis (token + USDG dijual balik), wallet bersih + gas ke-isi.

⚠️ Pakai dana REAL tanpa konfirmasi manusia. OFF by default (/auto on buat nyalain). Semua cap konservatif; naikin sadar-sadar via /set alp*. Wallet-tx di-serialize (satu sekuens per waktu) biar gak nonce-collision.


Semua command

Command Fungsi
paste 0x… Buka posisi LP (v2/v3/v4, auto detect pool)
/list Posisi terbuka (v3+v4+v2) + PnL + TOTAL + tombol close
/ledger Riwayat posisi ditutup (realized vs nyangkut) + kartu per-posisi
/pnl PnL seumur hidup level dompet
/card Kartu profit portfolio (PNG shareable)
/calendar 📅 Profit calendar — PnL harian (grid bulanan, fee included)
/swap Swap token via KyberSwap aggregator (rute terbaik)
/screen Screening GMGN 24h (mcap>500k, vol>1M, no flap, util>meme) · /screen fast
/watch Status scanner + volume tertinggi saat ini
/feed Monitor sequencer real-time · /feed on/off
/scan Cek volume sekarang juga (manual)
/hunt Hunter kandidat LP (fee 3-5% + tx rame + screening)
/auto Auto-farming: auto-add + auto-close · /auto on|off · /auto tp 100 · /auto sl 30 · /auto oor on|off
/v4 Cek pool Uniswap v4 sebuah token CA
/closeall Tutup SEMUA posisi
/sell Jual semua token nyangkut → ETH
/wallet Saldo hot wallet
/settings · /set <key> <angka> Lihat / ubah setting

Setting yang bisa diubah (semua live, /set langsung apply tanpa restart):

LP     : /set width 50 · /set slippage 5 · /set gastarget 0.015

Scanner: /set vol5m 500000 · /set rise 1.4 · /set liq 50000 · /set tax 6
         /set cooldown 60 · /set interval 120

Hunter : /set huntvol 15000       volume pool 24h minimal (USD)
         /set huntfees 400        fee 24h pool minimal = vol × fee% (fee-yield)
         /set huntyield 0         fee/TVL yield harian minimal % (0 = off, TVL v4 sering ke-baca $0)
         /set huntscore 55        skor screening minimal
         /set huntmcapmin 100000  ·  /set huntmcapmax 5000000   band mcap (max 0 = tanpa batas)

robinhood-lp-bot (pamgarcia1993/robinhood-lp-bot)

crypto-trading
Searching Database…

What is this?Robinhood LP Bot is a Telegram-controlled liquidity-provider bot for Robinhood Chain that finds the best Uniswap v2/v3/v4 pool for a token, opens an LP position via the KyberSwap aggregator, and manages it end to end.
Is this a Telegram bot or a web dashboard?It is a backend service with no web UI; everything is driven from a Telegram chat through a persistent reply-keyboard menu with one-tap commands like /list, /swap, /screen and /auto.
How do I get it running?Install Node.js 20+, clone the repo, fill in the .env file with your RPC URL, wallet key and Telegram bot token, then run the start script and send /start to your bot in Telegram.
What API keys or accounts do I need before setting it up?You need an Alchemy RPC URL for Robinhood Chain, a burner EVM wallet private key, and a Telegram bot token plus your own chat id for owner-only access; OpenRouter, a second RPC and KyberSwap/GMGN keys are optional extras.
What should I watch out for before trusting it with real funds?It puts your wallet private key directly in a local .env file (use a burner wallet, not your main one), and when closing a position with 'keep token' it auto-swaps your entire token balance in the wallet, not just the amount from that position.
Does it need to run on a VPS, or can I just run it on my laptop?It can run on a regular laptop or on a VPS for 24/7 uptime; running on a US-based VPS also makes the fast-submit and Nitro feed features perform better.
Does my wallet private key ever leave my machine?The private key stays in your local .env file and is used only to sign transactions locally; the README explicitly recommends a dedicated burner wallet instead of your main one.
What is the Nitro sequencer feed (/feed) used for?It connects to Robinhood Chain's Nitro sequencer websocket to detect brand-new token pools and out-of-range alerts sub-second, before the tokens even appear on DexScreener.
Does the bot check tokens for honeypots before opening a position?Yes, it runs its own buy-then-sell simulation through the Uniswap Quoter for every candidate instead of trusting reputation sites or other third-party checks.
What does the auto-farming mode (/hunt and /auto) actually do?/hunt scans trending GMGN tokens every 3 minutes for pools with the best fee-yield in your chosen market-cap band, and /auto automatically opens positions that pass the quality and LLM-verdict gates, closing them later on take-profit, stop-loss, or out-of-range.
Can I customize the shareable profit cards?Yes, you can send a photo to the bot to set it as the card background, or change the branding text and tagline via the RHCARDBRAND and RHCARDTAG environment variables.
Size
2.8 MB
Stars
137
Updated
CommitSep 14
Age
1mo
Commits · 90 Days