Monitor EVM wallets through Cielo. Each event looks up the wallet age on DeBank, then sends a Telegram message.
This client talks to undocumented website endpoints. They can change or rate-limit without notice. Do not commit session_state.json or debank_network_full.json.
pip install -r requirements.txtlogin creates a throwaway key in ./session_state.json, signs Cielo's login message, and stores the session cookie. The key holds no assets. The cookie is a live credential.
Copy env.example to .env and fill in your own bot:
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
DEBANK_CACHE=./debank_network_full.json
python -m cielo_debank login
python -m cielo_debank follow 0xYourWallet --label demo
python -m cielo_debank list
python -m cielo_debank unfollow 0xYourWallet
python -m cielo_debank notify-test
python -m cielo_debank listenlisten is the full path: Cielo websocket, then DeBank born_at, then one Telegram message. It renews ws_token near expiry and appends JSON lines to tx_events.log. The same transaction is not sent twice after a reconnect. Free Cielo accounts track at most 250 wallets.
Default chains are ethereum, arbitrum, base, bnb, hyperevm, plasma, monad. Override with --chains ethereum,base.
DeBank's born_at needs a signature produced by their frontend bundle, plus a browser TLS fingerprint. Put a captured debank_network_full.json in the working directory, or set DEBANK_CACHE to its path. That file is DeBank's JavaScript and is not included here.
python -m cielo_debank age 0x8ADdeD25F8CcE417C1E19aAD91fb6dDCB9917d2clisten always runs this lookup before Telegram. Wallets 7 days old or newer are marked new. A failed lookup is still notified as 钱包年龄: 查询失败.
链路是固定的:Cielo 推送一笔交易,DeBank 查这个钱包的年龄,然后发一条 Telegram。接口是网站逆向来的,没有 SLA,协议随时可能变。
pip install -r requirements.txt把 env.example 复制成 .env,填你自己的机器人,不要提交这个文件:
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
DEBANK_CACHE=./debank_network_full.json
python -m cielo_debank login
python -m cielo_debank follow 0xYourWallet --label demo
python -m cielo_debank list
python -m cielo_debank unfollow 0xYourWallet
python -m cielo_debank notify-test
python -m cielo_debank listenlogin在当前目录生成session_state.json(抛弃型私钥 + cookie)。私钥不持有资产,cookie 仍然是登录凭证,已在.gitignore里。follow/unfollow都调用walletDiscovery.toggleWalletFollow。未关注时是关注,已关注时是删除。关注之后会再调editWallet,把链限制在 ethereum、arbitrum、base、bnb、hyperevm、plasma、monad。listen按顺序做三件事:收 Cielo 的wss://api.cielo.finance/v1/ws,用 DeBank 查born_at,再给TELEGRAM_CHAT_ID发一条消息。token 快过期会自动续期。同一笔交易的多条 transfer 会先合并。重连重放不会发第二次。notify-test只发一条notify ok,用来确认机器人配置。- 缺 bot token、chat id,或找不到 DeBank JS 缓存时,
listen会直接退出。 - 免费账户最多 250 个钱包。
签名要靠本地缓存的 DeBank 前端 JS(debank_network_full.json),仓库不带这个文件。放到当前目录,或设置环境变量 DEBANK_CACHE。
python -m cielo_debank age 0x8ADdeD25F8CcE417C1E19aAD91fb6dDCB9917d2cage 单独读 data.user.desc.born_at。listen 每笔交易都会先走这一步,再通知。7 天及以内会标成新钱包。查失败时通知里写 钱包年龄: 查询失败,这条交易仍会发出。