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)

Searching Database…

这是什么?Robinhood LP Bot 是一个由 Telegram 控制的 Robinhood Chain 流动性提供机器人,它会为代币找出最优的 Uniswap v2/v3/v4 池,通过 KyberSwap 聚合器开设 LP 仓位,并进行端到端管理。
这是 Telegram 机器人,还是网页仪表板?它是一个没有网页界面的后端服务;一切操作都通过 Telegram 聊天驱动,借助常驻的回复键盘菜单和 /list、/swap、/screen、/auto 这类一键命令完成。
怎么让它跑起来?安装 Node.js 20+,克隆仓库,在 .env 文件里填好你的 RPC URL、钱包密钥和 Telegram 机器人令牌,然后运行启动脚本,并在 Telegram 里给你的机器人发 /start。
配置之前需要哪些 API 密钥或账户?你需要一个 Robinhood Chain 的 Alchemy RPC URL、一个一次性 EVM 钱包私钥,以及一个 Telegram 机器人令牌加上你自己的聊天 ID(用于仅限所有者的访问);OpenRouter、第二个 RPC 和 KyberSwap/GMGN 密钥是可选的额外项。
把真实资金交给它之前要注意什么?它会把你的钱包私钥直接放进本地 .env 文件(请用一次性钱包,别用主钱包);而且用 'keep token' 方式平仓时,它会自动把钱包里该代币的全部余额换掉,而不只是该仓位的数量。
它必须跑在 VPS 上,还是我的笔记本上就能跑?它可以在普通笔记本上运行,也可以放在 VPS 上实现 7x24 小时在线;跑在美国的 VPS 上还能让快速提交和 Nitro 数据流功能表现更好。
我的钱包私钥会离开我的电脑吗?私钥保存在本地 .env 文件里,只在本地用于签署交易;README 明确建议使用专用的一次性钱包,而不是你的主钱包。
Nitro 排序器数据流(/feed)是干什么用的?它连接 Robinhood Chain 的 Nitro 排序器 websocket,以亚秒级的速度发现全新代币池和超出区间的警报,赶在代币出现在 DexScreener 之前。
机器人在开仓前会检查代币是否为蜜罐吗?会,它会对每个候选代币用 Uniswap Quoter 跑一遍自己的先买后卖模拟,而不是轻信信誉网站或其他第三方检查。
自动挖矿模式(/hunt 和 /auto)到底做什么?/hunt 每 3 分钟扫描 GMGN 热门代币,找出在你选定的市值区间内费率收益最好的池子;/auto 则自动开仓通过质量和 LLM 判定门槛的仓位,之后在止盈、止损或超出区间时平仓。
可以自定义可分享的收益卡片吗?可以,你可以给机器人发一张照片设为卡片背景,或通过 RHCARDBRAND 和 RHCARDTAG 环境变量更改品牌文字和标语。
Size
2.8 MB
Stars
137
Updated
CommitSep 14
Age
1mo
Commits · 90 Days