$zalo-app
api.READY
ws.PENDING
zca-js.LOADED
v0.1.0
200OK
runtime · 00:00:00
mem · — mb
accts · 0
~/zalo-app $ accounts list --online=true
accounts::zalo
— READY
total 0
online 0
sessions 0 sessions
# display name uid phone friends groups status saved actions
chưa có account nào — bấm + add account để thêm
~/zalo-app $ login --method=qr
login::qr
IDLE
method qr-scan
browser none
scan to login
bấm start để sinh QR
sẵn sàng
flow: server gọi zca-js loginQR → trả QR base64 PNG → bạn quét trên Zalo Mobile → server tự lưu cookie + uid.
live event log
--:--:--initđợi bạn bấm start.
~/zalo-app $ send --to=$phones --template="…"
nhắn tin::theo SĐT
mode bulk
resolve auto
input
0 SĐT
flow: SĐT → findUser → sendMessage. Skip nếu không có Zalo.
template
# placeholder: {{phone}} · {{name}} · {a|b|c} random
~/zalo-app $ send --to=$uid --msg="…"
send::message
compose
~/zalo-app $ send --to=$friends --bulk
nhắn tin::cho bạn bè
mode bulk
target friends-list
chọn bạn bè 0 / 0
bấm load để lấy bạn bè
template
~/zalo-app $ add-friend --by=phone
kết bạn::theo SĐT
flow findUser → sendFriendRequest
input
đếm: 0
lời mời
# check status trước khi gửi:
- đã là bạn → already_friend (skip)
- đã gửi rồi → already_sent (skip)
- không có Zalo → no_zalo (skip)
- lỗi gửi → error
⚠ Zalo limit ~30 lời mời/ngày, gửi quá là khoá tài khoản.
~/zalo-app $ add-friend --by=group-members
kết bạn::theo thành viên nhóm
flow scrape link → sendFriendRequest
nguồn nhóm
lời mời
# check status trước khi gửi:
- đã là bạn → already_friend (skip)
- đã gửi rồi → already_sent (skip)
- chặn → blocked
- admin nhóm → skipped_admin (nếu bật)
⚠ Zalo limit ~30 lời mời/ngày/account. Gửi quá → khoá account.
~/zalo-app $ friend-requests ls
kết bạn::lời mời
đã gửi (sent)
#nameuidmessagetimeaction
chọn account và bấm load
accept thủ công (theo uid)
# zca-js không có API list "received friend requests".
Cần lấy uid từ Zalo Mobile (xem lời mời) hoặc qua Listener WebSocket realtime.
~/zalo-app $ broadcast --to=$groups --multi
nhắn tin::nhóm (broadcast)
mode multi-group
flow 1 tin → N nhóm
chọn nhóm 0 / 0
bấm load để lấy danh sách nhóm
compose
~/zalo-app $ send --to=group-members
nhóm::DM thành viên
nguồn
template
⚠ DM người chưa kết bạn rất dễ bị flag spam. Khuyến nghị delay min ≥ 8s.
~/zalo-app $ friends list --account=$uid
friends::list
total 0
friends
#display nameuidusernamephonestatusaction
chọn account và bấm load
~/zalo-app $ groups list --account=$uid
groups::list
total 0
groups
#namegroup idmembersaction
chọn account và bấm load
~/zalo-app $ scrape group --link=$invite_url
scraper::group-members
IDLE
method link-invite
join not required
input 0 SCRAPED
members
# tên uid giới tính ngày sinh phone vai trò action
paste link và bấm scrape
quét member của 1 nhóm Zalo qua link mời mà không cần join. zalo giới hạn vài trăm member/link — không lấy full nhóm lớn.
~/zalo-app $ campaigns ls
campaigns::jobs
total 0
jobs
idtypestatusaccountsummarycreatedaction
chưa có campaign nào
~/zalo-app $ schedules ls
schedules::pending + history
total 0
pending 0
queued
idkhitypeaccounttóm tắtstatusaction
chưa có lịch nào
~/zalo-app $ settings --module=ai
system::settings
scope per-user
storage encrypted SQLite
openrouter · api key CHƯA CÓ
hiện tại:
# lấy key tại openrouter.ai/keys — đăng ký free có credit thử nghiệm
# key được encrypt AES-256-GCM trước khi lưu DB
default model
# default sẽ được dùng khi gọi AI generate mà không chỉ định model
custom models 0 custom
# thêm model OpenRouter custom (ngoài 8 model built-in)
# full list: openrouter.ai/models — copy id (vd x-ai/grok-2)
typeidtêncostspeed
~/zalo-app # admin users ls
admin::user management
total 0
admins 0
users
idemailtênrolesessiontạolast loginaction
đang tải...
~/zalo-app $ tail -f log/server.log
logs::stream
CONNECTED
stdout
0selected