The project's README from github.com/pamgarcia1993/robinhood-lp-bot. As one markdown file: README.md.
LP otomatis di Uniswap v2 · v3 · v4 (Robinhood Chain) — full kontrol dari Telegram.
Paste CA → pilih pool → ketik jumlah ETH → posisi kebuka. Sekarang juga.
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:
/screen) — filter thesis: mcap > $500k, vol > $1M, no flap.fun, util > meme.🟢 APE / 🟡 WATCH / 🔴 SKIP nempel di tiap notif kandidat.…dan layer otomasi farming (baru):
/hunt) — tiap 3 menit scan GMGN trending → screening → cuma lolosin token yang punya pool fee 3-5% yang rame, di-rank by fee-yield (vol × fee%), dalam band mcap yang lu set (small-cap = share fee lebih gede buat modal kecil)./auto) — auto-add kandidat yang lolos gate + auto-close by TP / SL / out-of-range. Mode single (parkir quote asset, rug-safe) atau inrange (both-sided, fee langsung) — bisa diganti live.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.
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

Per-close — LOSS

Portfolio — ALL-TIME (/card)

Background bisa lu ganti: kirim foto ke bot (langsung di-set jadi bg kartu) atau taruh
assets/card-bg.jpg. Brand default0xRapzz— ubah viaRH_CARD_BRAND, tagline viaRH_CARD_TAG. Font monospace (DejaVu Sans Mono) di-bundle di VPS.
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 |
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.
Tiga hal yang bikin LP manual nyebelin:
tick 130400–134400. Itu artinya apa?Bot ini jawab ketiganya. Range ditampilin dalam MCAP ($2.64M → $3.94M), PnL dihitung dari harga jual asli, dan semuanya dari Telegram.
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
0x…) ke chatETH ✅ / USDG ✅) → pilih salah satu0.05)🛡 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.
/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?
3h 20m · $2.10/jam → masih produktif, biarin2d 5h · $0.04/jam → udah mati, modal nyangkut percuma → tutup, puter ke pool lainTOTAL (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.
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.
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.)
/ledgerSemua posisi ditutup (v3 + v4 + v2, urut terbaru dulu), tombol Next/Back + 📸 kartu per-posisi. Stats gabungan: win rate, modal, fee LP, realized vs nyangkut.
/calendarGrid 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 <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.
/screenFilter 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.
/watchJalan 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.
/feedOpt-in (default off): /feed on. Dengerin feed sequencer Nitro (wss://feed.mainnet.chain.robinhood.com/feed) — mempool sub-detik, sebelum tx masuk block.
⚠️ DNS hijack: kalau jaringan lu hijack DNS domain feed (mis. Telkomsel "Internet Baik"), set
RH_FEED_IP=172.66.147.70di.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
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
pollingIntervalke 350ms (tunableRH_POLL_MS), jaditx.wait()balik ~10× lebih cepet.
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.
/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):
vol24h × fee%), bukan volume mentah. Pool 5% @ $8k vol menang dari 3% @ $9k.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 onbuat nyalain). Semua cap konservatif; naikin sadar-sadar via/set alp*. Wallet-tx di-serialize (satu sekuens per waktu) biar gak nonce-collision.
| 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)