zalo-agent-cli 1.0.31 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,804 +1,190 @@
1
1
  <p align="center">
2
- <img src="assets/mascot.png" width="200" alt="zalo-agent-cli mascot" />
2
+ <img src="assets/mascot.png" width="120" alt="zalo-agent-cli mascot" />
3
3
  </p>
4
4
 
5
5
  # zalo-agent-cli
6
6
 
7
- CLI tool for Zalo automation — multi-account, proxy support, bank transfers, QR payments.
7
+ <p align="center">
8
+ <img src="assets/demo.gif" alt="zalo-agent-cli demo" />
9
+ </p>
8
10
 
9
- Built on top of [zca-js](https://github.com/AKAspanion/zca-js), the unofficial Zalo API library for Node.js.
11
+ [![npm version](https://img.shields.io/npm/v/zalo-agent-cli.svg)](https://www.npmjs.com/package/zalo-agent-cli)
12
+ [![npm downloads](https://img.shields.io/npm/dm/zalo-agent-cli.svg)](https://www.npmjs.com/package/zalo-agent-cli)
13
+ [![npm total downloads](https://img.shields.io/npm/dt/zalo-agent-cli.svg)](https://www.npmjs.com/package/zalo-agent-cli)
14
+ [![license](https://img.shields.io/npm/l/zalo-agent-cli.svg)](https://github.com/PhucMPham/zalo-agent-cli/blob/main/LICENSE)
10
15
 
11
- **[Tiếng Việt](#tiếng-việt)** | **[English](#english)**
16
+ Công cụ CLI tự động hóa Zalo — đa tài khoản, proxy, chuyển khoản ngân hàng, thanh toán QR.
17
+ Xây dựng trên [zca-js](https://github.com/RFS-ADRENO/zca-js).
12
18
 
13
- ---
19
+ **[Tiếng Việt](#bắt-đầu-nhanh)** | **[English](#english)**
14
20
 
15
- ## English
21
+ > [!WARNING]
22
+ > Tool này sử dụng API Zalo **không chính thức** ([zca-js](https://github.com/RFS-ADRENO/zca-js)). Zalo không hỗ trợ và **tài khoản của bạn có thể bị khóa hoặc ban**. Tự chịu trách nhiệm. Không liên kết với Zalo hay VNG. Xem [DISCLAIMER.md](DISCLAIMER.md).
16
23
 
17
- ### Table of Contents
18
-
19
- - [Features](#features)
20
- - [Requirements](#requirements)
21
- - [Installation](#installation)
22
- - [Quick Start](#quick-start)
23
- - [Command Reference](#command-reference)
24
- - [Multi-Account & Proxy](#multi-account--proxy)
25
- - [Headless / VPS / CI Usage](#headless--vps--ci-usage)
26
- - [Bank Card & QR Payments](#bank-card--qr-payments)
27
- - [Security](#security)
28
- - [Disclaimer](#disclaimer)
29
- - [License](#license)
30
-
31
- ### Features
32
-
33
- - Login via QR code with auto HTTP server (PNG in browser + inline terminal image + base64 data URL)
34
- - Multi-account management with per-account dedicated proxy (1:1 mapping)
35
- - Send text, images, files, contact cards, stickers, reactions
36
- - Send bank cards (55+ Vietnamese banks)
37
- - Generate and send VietQR transfer images via qr.sepay.vn
38
- - Friend management (list, find, add, remove, block, alias, recommendations)
39
- - Group management (create, rename, members, settings, links, notes, invites)
40
- - Conversation management (mute, pin, archive, hidden, auto-delete)
41
- - Auto-reply, quick messages, labels, Zalo Shop catalogs
42
- - Export/import credentials for headless server deployment
43
- - Local HTTP server for QR display on VPS (via SSH tunnel)
44
- - `--json` output on all commands for scripting and coding agents
45
-
46
- ### Requirements
47
-
48
- - **Node.js** >= 20
49
- - **npm** (comes with Node.js)
50
-
51
- ### Installation
24
+ > [!TIP]
25
+ > **AI Agent Skill** — Dùng với OpenClaw, Claude Code, hoặc bất kỳ agent nào hỗ trợ SKILL.md:
26
+ > ```bash
27
+ > clawhub install zalo-agent # OpenClaw (từ ClawHub registry)
28
+ > cp -r skill/ ~/.claude/skills/zalo-agent/ # Claude Code
29
+ > ```
30
+ > 15+ nhóm lệnh · listen mode + webhook · 55+ ngân hàng VN · đa tài khoản + proxy
31
+ > Xem [skill/SKILL.md](skill/SKILL.md) · [Eval scenarios](skill/evals/)
52
32
 
53
- ```bash
54
- npm install -g zalo-agent-cli
55
- ```
56
-
57
- Or run without installing:
58
-
59
- ```bash
60
- npx zalo-agent-cli login
61
- ```
33
+ ---
62
34
 
63
- Or clone and link for development:
35
+ ## Cài đặt
64
36
 
65
37
  ```bash
66
- git clone https://github.com/PhucMPham/zalo-agent-cli.git
67
- cd zalo-agent-cli
68
- npm install
69
- npm link
38
+ npm install -g zalo-agent-cli
70
39
  ```
71
40
 
72
- ### Quick Start
41
+ ## Bắt đầu nhanh
73
42
 
74
- #### 1. Login
43
+ ### 1. Đăng nhập
75
44
 
76
45
  ```bash
77
46
  zalo-agent login
78
47
  ```
79
48
 
80
- A QR code PNG will be saved and a local HTTP server starts automatically. Open the URL shown in output (e.g. `http://your-ip:18927/qr`) in your browser, then scan with **Zalo app > QR Scanner**. Credentials are auto-saved to `~/.zalo-agent-cli/`.
49
+ Quét QR bằng **Zalo app > Quét mã QR**. Thông tin tự động lưu.
81
50
 
82
- > **Important:** Use Zalo's built-in QR scanner (not regular phone camera). The QR expires in ~60 seconds.
83
-
84
- #### 2. Find a thread ID
85
-
86
- A `thread_id` is a user ID (for DMs) or group ID (for group chats). You need it for most messaging commands.
51
+ ### 2. Tìm bạn
87
52
 
88
53
  ```bash
89
- # Search friends by name → get their thread_id
90
54
  zalo-agent friend search "Phúc"
91
-
92
- # List recent conversations (friends + groups) with thread_id
93
- zalo-agent conv recent
94
-
95
- # List only groups
96
- zalo-agent conv recent --groups-only
97
- ```
98
-
99
- #### 3. Send a message
100
-
101
- ```bash
102
- # Send to a user (type 0, default)
103
- zalo-agent msg send <THREAD_ID> "Hello from zalo-agent!"
104
-
105
- # Send to a group (type 1)
106
- zalo-agent msg send <THREAD_ID> "Hello group!" -t 1
107
55
  ```
108
56
 
109
- #### 4. List friends
57
+ ### 3. Lắng nghe tin nhắn (lấy thread ID)
110
58
 
111
59
  ```bash
112
- zalo-agent friend list
113
- ```
114
-
115
- #### 5. Manage your profile
116
-
117
- ```bash
118
- # View your profile
119
- zalo-agent profile me
120
-
121
- # Change avatar
122
- zalo-agent profile avatar /path/to/photo.jpg
123
-
124
- # Update bio
125
- zalo-agent profile bio "Phụ tùng ô tô chính hãng"
126
-
127
- # View privacy settings
128
- zalo-agent profile settings
129
-
130
- # Update a setting (e.g. hide online status)
131
- zalo-agent profile set online-status 0
132
- ```
133
-
134
- #### 6. Check status
135
-
136
- ```bash
137
- zalo-agent status
138
- zalo-agent whoami
139
- ```
140
-
141
- ### Command Reference
142
-
143
- #### Global Flags
144
-
145
- | Flag | Description |
146
- | --------------- | -------------------------- |
147
- | `--json` | Output all results as JSON |
148
- | `-V, --version` | Show version number |
149
- | `-h, --help` | Show help |
150
-
151
- #### Auth
152
-
153
- | Command | Description |
154
- | ----------------------------------------------------- | ----------------------------------------- |
155
- | `login [--proxy URL] [--credentials PATH] [--qr-url]` | Login via QR or from exported credentials |
156
- | `logout` | Clear current session |
157
- | `status` | Show login state |
158
- | `whoami` | Show current user profile |
159
-
160
- #### Messages (`msg`)
161
-
162
- | Command | Description |
163
- | ------------------------------------------------------------------------------------------------ | ----------------------------------- |
164
- | `msg send <threadId> <text> [-t 0\|1] [--md] [--style specs...]` | Send text message (with formatting) |
165
- | `msg send-image <threadId> <paths...> [-t 0\|1] [-m caption]` | Send images |
166
- | `msg send-file <threadId> <paths...> [-t 0\|1] [-m caption]` | Send files |
167
- | `msg send-card <threadId> <userId> [-t 0\|1] [--phone NUM]` | Send contact card |
168
- | `msg send-bank <threadId> <accountNum> -b BANK [-n name] [-t 0\|1]` | Send bank card |
169
- | `msg send-qr-transfer <threadId> <accountNum> -b BANK [-a amount] [-m content] [--template tpl]` | Send VietQR transfer image |
170
- | `msg send-voice <threadId> <voiceUrl> [-t 0\|1] [--ttl ms]` | Send a voice message from URL |
171
- | `msg send-link <threadId> <url> [-m caption] [-t 0\|1]` | Send link with auto-preview |
172
- | `msg send-video <threadId> <videoUrl> --thumb <thumbUrl> [-m caption] [-d ms] [-W px] [-H px]` | Send video from URL |
173
- | `msg sticker <threadId> <keyword> [-t 0\|1]` | Search and send sticker |
174
- | `msg sticker-list <keyword>` | Search stickers (returns IDs) |
175
- | `msg sticker-detail <stickerIds...>` | Get sticker details by IDs |
176
- | `msg sticker-category <categoryId>` | Get sticker category details |
177
- | `msg react <msgId> <threadId> <emoji> [-t 0\|1]` | React to a message |
178
- | `msg delete <msgId> <threadId> [-t 0\|1]` | Delete a message |
179
- | `msg forward <msgId> <threadId> [-t 0\|1]` | Forward a message |
180
-
181
- > `-t 0` = User (default), `-t 1` = Group
182
-
183
- **Text formatting with `--md` (markdown mode):**
184
-
185
- ```bash
186
- zalo-agent msg send <threadId> "**Bold** *Italic* __Underline__ ~~Strike~~ {red:Red} {big:BIG}" --md
187
- ```
188
-
189
- | Syntax | Style |
190
- | --------------- | ------------- |
191
- | `**text**` | Bold |
192
- | `*text*` | Italic |
193
- | `__text__` | Underline |
194
- | `~~text~~` | Strikethrough |
195
- | `{red:text}` | Red text |
196
- | `{orange:text}` | Orange text |
197
- | `{yellow:text}` | Yellow text |
198
- | `{green:text}` | Green text |
199
- | `{big:text}` | Large font |
200
- | `{small:text}` | Small font |
201
-
202
- **Manual style with `--style` (for agents/automation):**
203
-
204
- ```bash
205
- # Format: start:len:style — style names: bold, italic, underline, strikethrough, red, orange, yellow, green, big, small
206
- zalo-agent msg send <threadId> "Hello World" --style 0:5:bold 6:5:italic
207
- ```
208
-
209
- #### Friends (`friend`)
210
-
211
- | Command | Description |
212
- | ---------------------------------------- | ---------------------------------------------- |
213
- | `friend list` | List all friends |
214
- | `friend search <name>` | Search friends by name (get thread_id) |
215
- | `friend online` | List online friends |
216
- | `friend find <query>` | Find by phone or ID |
217
- | `friend info <userId>` | Get user profile |
218
- | `friend add <userId> [-m msg]` | Send friend request |
219
- | `friend accept <userId>` | Accept request |
220
- | `friend remove <userId>` | Remove friend |
221
- | `friend block <userId>` | Block user |
222
- | `friend unblock <userId>` | Unblock user |
223
- | `friend last-online <userId>` | Check last seen |
224
- | `friend find-username <username>` | Find user by Zalo username |
225
- | `friend alias <friendId> <alias>` | Set nickname for a friend |
226
- | `friend alias-list [-c count] [-p page]` | List all friend aliases |
227
- | `friend alias-remove <friendId>` | Remove a friend's alias |
228
- | `friend reject <userId>` | Reject a friend request |
229
- | `friend undo-request <userId>` | Cancel a sent friend request |
230
- | `friend sent-requests` | List sent friend requests |
231
- | `friend request-status <userId>` | Check friend request status |
232
- | `friend close` | List close friends |
233
- | `friend recommendations` | Get friend recommendations & received requests |
234
- | `friend find-phones <phones...>` | Find users by phone numbers |
235
-
236
- #### Groups (`group`)
237
-
238
- | Command | Description |
239
- | ---------------------------------------------------- | --------------------------------------- |
240
- | `group list` | List all groups |
241
- | `group create <name> <memberIds...>` | Create group |
242
- | `group history <groupId> [-n count]` | Get chat history (normalized JSON) |
243
- | `group info <groupId>` | Group details |
244
- | `group members <groupId>` | List members |
245
- | `group add-member <groupId> <userIds...>` | Add members |
246
- | `group remove-member <groupId> <userIds...>` | Remove members |
247
- | `group rename <groupId> <name>` | Rename |
248
- | `group upgrade-community <groupId>` | Upgrade group to Zalo Community |
249
- | `group leave <groupId>` | Leave group |
250
- | `group join <link>` | Join via invite link |
251
- | `group members-info <userIds...>` | Get detailed info for members by IDs |
252
- | `group settings <groupId> [flags]` | Update group settings (see flags below) |
253
- | `group pending <groupId>` | List pending member requests (admin) |
254
- | `group approve <groupId> <userIds...>` | Approve pending members (admin) |
255
- | `group reject-member <groupId> <userIds...>` | Reject pending members (admin) |
256
- | `group enable-link <groupId>` | Enable group invite link |
257
- | `group disable-link <groupId>` | Disable group invite link |
258
- | `group link-info <groupId>` | Get group invite link details |
259
- | `group blocked <groupId> [-c count] [-p page]` | List blocked members |
260
- | `group note-create <groupId> <title> [--pin]` | Create a note |
261
- | `group note-edit <groupId> <noteId> <title> [--pin]` | Edit a note |
262
- | `group invite-boxes` | List received group invitations |
263
- | `group join-invite <groupId>` | Accept a group invitation |
264
- | `group delete-invite <groupIds...> [--block]` | Delete invitations |
265
- | `group invite-to <userId> <groupIds...>` | Invite user to groups |
266
- | `group disperse <groupId>` | Disperse group (irreversible!) |
267
-
268
- **Group settings flags:** `--block-name`, `--sign-admin`, `--msg-history`, `--join-appr`, `--lock-post`, `--lock-poll`, `--lock-msg`, `--lock-view-member` (prefix with `--no-` to disable)
269
-
270
- #### Conversations (`conv`)
271
-
272
- | Command | Description |
273
- | --------------------------------------------------------- | ---------------------------------------- |
274
- | `conv recent [-n limit] [--friends-only] [--groups-only]` | List recent conversations with thread_id |
275
- | `conv pinned` | List pinned |
276
- | `conv archived` | List archived |
277
- | `conv mute <threadId> [-t 0\|1] [-d secs]` | Mute (-1 = forever) |
278
- | `conv unmute <threadId> [-t 0\|1]` | Unmute |
279
- | `conv read <threadId> [-t 0\|1]` | Mark as read |
280
- | `conv unread <threadId> [-t 0\|1]` | Mark as unread |
281
- | `conv hidden` | List hidden conversations |
282
- | `conv hide <threadIds...> [-t 0\|1]` | Hide conversation(s) |
283
- | `conv unhide <threadIds...> [-t 0\|1]` | Unhide conversation(s) |
284
- | `conv hidden-pin <pin>` | Set PIN for hidden conversations |
285
- | `conv hidden-pin-reset` | Reset hidden conversations PIN |
286
- | `conv auto-delete-status` | View auto-delete chat settings |
287
- | `conv auto-delete <threadId> <ttl> [-t 0\|1]` | Set auto-delete (off, 1d, 7d, 14d) |
288
- | `conv delete <threadId> [-t 0\|1]` | Delete conversation |
289
-
290
- #### Profile (`profile`)
291
-
292
- | Command | Description |
293
- | ---------------------------------------------------- | --------------------------------------------- |
294
- | `profile me` | Show your profile (name, phone, avatar, etc.) |
295
- | `profile avatar <imagePath>` | Change profile avatar |
296
- | `profile bio [text]` | View or update bio/status |
297
- | `profile update [-n name] [-d YYYY-MM-DD] [-g 0\|1]` | Update name, birthday, gender |
298
- | `profile avatars [-c count] [-p page]` | List avatar gallery |
299
- | `profile full-avatar <friendId>` | Get full-size avatar URL |
300
- | `profile avatar-url <friendIds...>` | Get avatar URLs for users |
301
- | `profile delete-avatar <photoIds...>` | Delete avatar(s) from gallery |
302
- | `profile reuse-avatar <photoId>` | Reuse a previous avatar |
303
- | `profile settings` | View privacy settings |
304
- | `profile set <setting> <value>` | Update a privacy setting |
305
-
306
- **Privacy settings:** `online-status`, `seen-status`, `birthday`, `receive-msg`, `accept-call`, `add-by-phone`, `add-by-qr`, `add-by-group`, `recommend`
307
-
308
- #### Polls (`poll`)
309
-
310
- | Command | Description |
311
- | ------------------------------------------------ | -------------------------------------------- |
312
- | `poll create <groupId> <question> <options...>` | Create a poll (see flags below) |
313
- | `poll info <pollId>` | View poll details and vote results |
314
- | `poll vote <pollId> <optionIds...>` | Vote on a poll (option IDs from `poll info`) |
315
- | `poll unvote <pollId>` | Remove your vote |
316
- | `poll add-option <pollId> <options...> [--vote]` | Add new options to a poll |
317
- | `poll lock <pollId>` | Close a poll (no more votes) |
318
- | `poll share <pollId>` | Share a poll |
319
-
320
- **Poll create flags:** `--multi` (multiple choices), `--add-options` (members can add options), `--anonymous` (hide voters), `--hide-preview` (hide results until voted), `--expire <minutes>` (auto-close)
321
-
322
- **Example:**
323
-
324
- ```bash
325
- # Create a multi-choice poll with 3 options, auto-close after 60 minutes
326
- zalo-agent poll create <groupId> "Chọn ngày họp" "Thứ 2" "Thứ 4" "Thứ 6" --multi --expire 60
327
-
328
- # View results
329
- zalo-agent poll info <pollId>
330
-
331
- # Vote for option IDs 123 and 456
332
- zalo-agent poll vote <pollId> 123 456
333
-
334
- # Close the poll
335
- zalo-agent poll lock <pollId>
336
- ```
337
-
338
- #### Reminders (`reminder`)
339
-
340
- | Command | Description |
341
- | ---------------------------------------------------------------------------------------------------- | --------------------------------------- |
342
- | `reminder create <threadId> <title> [-t 0\|1] [--time "YYYY-MM-DD HH:mm"] [--repeat mode] [--emoji]` | Create a reminder |
343
- | `reminder list <threadId> [-t 0\|1] [-n count]` | List reminders |
344
- | `reminder info <reminderId>` | View reminder details (group only) |
345
- | `reminder responses <reminderId>` | View who accepted/rejected (group only) |
346
- | `reminder edit <reminderId> <threadId> <title> [-t 0\|1] [--time] [--repeat] [--emoji]` | Edit a reminder |
347
- | `reminder remove <reminderId> <threadId> [-t 0\|1]` | Remove a reminder |
348
-
349
- **Repeat modes:** `none`, `daily`, `weekly`, `monthly`
350
-
351
- **Example:**
352
-
353
- ```bash
354
- # Create a daily reminder in a group at 9:00 AM tomorrow
355
- zalo-agent reminder create <groupId> "Standup meeting" -t 1 --time "2026-03-16 09:00" --repeat daily
356
-
357
- # List reminders in a group
358
- zalo-agent reminder list <groupId> -t 1
359
-
360
- # View who responded
361
- zalo-agent reminder responses <reminderId>
362
-
363
- # Edit reminder title and time
364
- zalo-agent reminder edit <reminderId> <groupId> "New title" -t 1 --time "2026-03-17 10:00"
365
-
366
- # Remove a reminder
367
- zalo-agent reminder remove <reminderId> <groupId> -t 1
368
- ```
369
-
370
- #### Auto-Reply (`auto-reply`)
371
-
372
- | Command | Description |
373
- | --------------------------------------------------------------------------------- | ------------------------- |
374
- | `auto-reply list` | List all auto-reply rules |
375
- | `auto-reply create <content> [--enable] [--start ms] [--end ms] [--scope n]` | Create auto-reply |
376
- | `auto-reply update <id> <content> [--enable] [--start ms] [--end ms] [--scope n]` | Update auto-reply |
377
- | `auto-reply delete <id>` | Delete auto-reply |
378
-
379
- **Scope:** `0`=all, `1`=friends, `2`=strangers
380
-
381
- #### Quick Messages (`quick-msg`)
382
-
383
- | Command | Description |
384
- | --------------------------------------------- | ------------------------- |
385
- | `quick-msg list` | List saved quick messages |
386
- | `quick-msg add <keyword> <title>` | Add a quick message |
387
- | `quick-msg update <itemId> <keyword> <title>` | Update a quick message |
388
- | `quick-msg remove <itemIds...>` | Remove quick message(s) |
389
-
390
- #### Labels (`label`)
391
-
392
- | Command | Description |
393
- | --------------------- | -------------------------------- |
394
- | `label list` | List all conversation labels |
395
- | `label update <json>` | Update labels (raw JSON payload) |
396
-
397
- #### Catalog / Shop (`catalog`)
398
-
399
- | Command | Description |
400
- | ----------------------------------------------------------------------------------------- | ---------------------------------- |
401
- | `catalog list [-l limit] [-p page]` | List all catalogs |
402
- | `catalog create <name>` | Create a catalog |
403
- | `catalog rename <catalogId> <name>` | Rename a catalog |
404
- | `catalog delete <catalogId>` | Delete a catalog |
405
- | `catalog products <catalogId> [-l limit] [-p page]` | List products in a catalog |
406
- | `catalog add-product <catalogId> <name> <price> <desc> [--photos urls...]` | Add product |
407
- | `catalog update-product <catalogId> <productId> <name> <price> <desc> [--photos urls...]` | Update product |
408
- | `catalog delete-product <catalogId> <productIds...>` | Delete product(s) |
409
- | `catalog upload-photo <filePath>` | Upload product photo (returns URL) |
410
-
411
- > Catalog/Shop APIs require a Zalo Business account.
412
-
413
- #### Accounts (`account`)
414
-
415
- | Command | Description |
416
- | ----------------------------------------------- | ------------------------------------- |
417
- | `account list` | List all registered accounts |
418
- | `account login [-p proxy] [-n name] [--qr-url]` | Login new account with optional proxy |
419
- | `account switch <ownerId>` | Switch active account |
420
- | `account remove <ownerId>` | Remove account + credentials |
421
- | `account info` | Show active account |
422
- | `account export [ownerId] [-o path]` | Export credentials for transfer |
423
-
424
- #### Listener (`listen`)
425
-
426
- ```bash
427
- # Listen for messages (default: message + friend events)
428
60
  zalo-agent listen
429
-
430
- # Filter: DM only, with webhook
431
- zalo-agent listen -f user -w https://your-n8n.com/webhook/zalo
432
-
433
- # Save messages locally as JSONL (one file per thread)
434
- zalo-agent listen --save ./zalo-logs
435
-
436
- # JSON mode for piping + save locally + webhook
437
- zalo-agent --json listen --save ./zalo-logs -w https://webhook.url
438
-
439
- # Auto-accept friend requests
440
- zalo-agent listen --auto-accept
441
- ```
442
-
443
- **Flags:** `-e` events (message,friend,group,reaction), `-f` filter (user,group,all), `-w` webhook URL, `--save <dir>` local JSONL storage, `--no-self` exclude own messages, `--auto-accept` auto-accept friend requests
444
-
445
- **JSONL storage format:** One file per thread (`<threadId>.jsonl`), each line is a JSON object with event data + `savedAt` timestamp. Useful as workaround for chat history — Zalo API only returns ~20 recent messages.
446
-
447
- ### Multi-Account & Proxy
448
-
449
- Each Zalo account can be bound to its own dedicated proxy (1:1 mapping).
450
-
451
- ```bash
452
- # Login account via residential proxy
453
- zalo-agent account login --proxy "http://user:pass@proxy:8080" --name "Shop A"
454
-
455
- # Login another account via different proxy
456
- zalo-agent account login --proxy "socks5://user:pass@proxy2:1080" --name "Shop B"
457
-
458
- # List accounts (proxy passwords are always masked)
459
- zalo-agent account list
460
- # ★ 356721... Shop A http://user:***@proxy:8080
461
- # 789012... Shop B socks5://user:***@proxy2:1080
462
-
463
- # Switch between accounts
464
- zalo-agent account switch 789012...
465
- ```
466
-
467
- **Important notes:**
468
-
469
- - Zalo enforces 1 account = 1 device (IMEI). Each QR login auto-generates a unique IMEI.
470
- - Use 1 dedicated proxy per account — sharing proxies risks both accounts being flagged.
471
- - Supported proxy protocols: `http://`, `https://`, `socks5://`
472
- - Proxy passwords are **never** displayed in output — always masked as `***`.
473
-
474
- ### Headless / VPS / CI Usage
475
-
476
- #### Option A: QR via browser (recommended)
477
-
478
- ```bash
479
- # On VPS — QR HTTP server starts automatically
480
- zalo-agent login
481
- # Output: QR available at http://your-vps-ip:18927/qr
482
-
483
- # Open the URL in your browser, scan with Zalo app > QR Scanner
484
- ```
485
-
486
- > The server auto-detects your public IP and tries ports 18927, 8080, 3000, 9000.
487
- > Make sure at least one port is open in your firewall.
488
-
489
- #### Option B: Export/import credentials
490
-
491
- ```bash
492
- # On local machine — login and export
493
- zalo-agent login
494
- zalo-agent account export --output ./creds.json
495
-
496
- # Transfer to server
497
- scp ./creds.json user@server:~/
498
-
499
- # On server — import (no QR needed)
500
- zalo-agent login --credentials ~/creds.json
501
- ```
502
-
503
- ### Bank Card & QR Payments
504
-
505
- #### Send bank card (55+ Vietnamese banks)
506
-
507
- ```bash
508
- # By bank name
509
- zalo-agent msg send-bank THREAD_ID 0123456789 --bank ocb
510
-
511
- # With holder name
512
- zalo-agent msg send-bank THREAD_ID 0123456789 --bank vietcombank --name "NGUYEN VAN A"
513
- ```
514
-
515
- #### Send VietQR transfer image
516
-
517
- ```bash
518
- # Basic QR
519
- zalo-agent msg send-qr-transfer THREAD_ID 0123456789 --bank ocb
520
-
521
- # With amount + content + template
522
- zalo-agent msg send-qr-transfer THREAD_ID 0123456789 --bank vcb \
523
- --amount 500000 --content "thanh toan don hang" --template qronly
524
- ```
525
-
526
- Templates: `compact` (VietQR frame, default), `print` (logo V), `qronly` (bare QR)
527
-
528
- Transfer content: max 50 characters (VietQR/NAPAS spec).
529
-
530
- ### Security
531
-
532
- - Credentials stored at `~/.zalo-agent-cli/credentials/` with **0600** file permissions (owner-only)
533
- - Proxy configuration stored separately from credential files
534
- - Proxy passwords **never** shown in CLI output — always masked
535
- - QR HTTP server binds to `127.0.0.1` only (not externally accessible)
536
- - Exported credential files created with **0600** permissions + security warning
537
-
538
- #### Storage layout
539
-
540
- ```
541
- ~/.zalo-agent-cli/
542
- ├── accounts.json # Account registry (ownId, name, proxy, active)
543
- ├── credentials/
544
- │ ├── cred_<ownId1>.json # Per-account credentials (0600)
545
- │ └── cred_<ownId2>.json
546
- └── qr.png # Last generated QR code
547
61
  ```
548
62
 
549
- ### Disclaimer
63
+ Mỗi tin nhắn đến sẽ hiện `threadId`. Dùng `--json` để lấy dạng JSON.
550
64
 
551
- > ⚠️ **Warning:** This tool uses [zca-js](https://github.com/AKAspanion/zca-js), an **unofficial** Zalo API library. Zalo does not support this and **your account may be banned**. Use at your own risk.
552
-
553
- This is an **unofficial** project and is **not affiliated with, endorsed by, or connected to Zalo or VNG Corporation**. See [DISCLAIMER.md](DISCLAIMER.md) for full details.
554
-
555
- ### License
556
-
557
- [MIT](LICENSE)
558
-
559
- ---
560
-
561
- ## Tiếng Việt
562
-
563
- ### Mục lục
564
-
565
- - [Tính năng](#tính-năng)
566
- - [Yêu cầu](#yêu-cầu)
567
- - [Cài đặt](#cài-đặt)
568
- - [Bắt đầu nhanh](#bắt-đầu-nhanh)
569
- - [Danh sách lệnh](#danh-sách-lệnh)
570
- - [Đa tài khoản & Proxy](#đa-tài-khoản--proxy)
571
- - [Sử dụng trên VPS / Headless / CI](#sử-dụng-trên-vps--headless--ci)
572
- - [Thẻ ngân hàng & Thanh toán QR](#thẻ-ngân-hàng--thanh-toán-qr)
573
- - [Bảo mật](#bảo-mật)
574
- - [Tuyên bố miễn trừ](#tuyên-bố-miễn-trừ)
575
-
576
- ### Tính năng
577
-
578
- - Đăng nhập bằng mã QR qua HTTP server tự động (PNG trên browser + inline terminal + base64)
579
- - Quản lý đa tài khoản với proxy riêng biệt cho từng tài khoản (1:1)
580
- - Gửi tin nhắn, hình ảnh, file, danh thiếp, sticker, reaction
581
- - Gửi thẻ ngân hàng (55+ ngân hàng Việt Nam)
582
- - Tạo và gửi ảnh QR chuyển khoản qua qr.sepay.vn
583
- - Quản lý bạn bè (danh sách, tìm kiếm, thêm, xóa, chặn, biệt danh, gợi ý)
584
- - Quản lý nhóm (tạo, đổi tên, thành viên, cài đặt, link, ghi chú, lời mời)
585
- - Quản lý hội thoại (tắt thông báo, ghim, lưu trữ, ẩn, tự xóa)
586
- - Trả lời tự động, tin nhắn nhanh, nhãn, cửa hàng Zalo Shop
587
- - Xuất/nhập credentials cho triển khai trên server
588
- - HTTP server local hiển thị QR cho VPS (qua SSH tunnel)
589
- - Output `--json` cho mọi lệnh, phục vụ scripting và coding agent
590
-
591
- ### Yêu cầu
592
-
593
- - **Node.js** >= 20
594
- - **npm** (đi kèm Node.js)
595
-
596
- ### Cài đặt
65
+ ### 4. Gửi tin nhắn
597
66
 
598
67
  ```bash
599
- npm install -g zalo-agent-cli
600
- ```
601
-
602
- Hoặc chạy không cần cài:
603
-
604
- ```bash
605
- npx zalo-agent-cli login
606
- ```
607
-
608
- Hoặc clone để phát triển:
609
-
610
- ```bash
611
- git clone https://github.com/PhucMPham/zalo-agent-cli.git
612
- cd zalo-agent-cli
613
- npm install
614
- npm link
615
- ```
616
-
617
- ### Bắt đầu nhanh
618
-
619
- #### 1. Đăng nhập
620
-
621
- ```bash
622
- zalo-agent login
623
- ```
624
-
625
- HTTP server tự khởi động và hiện URL (ví dụ `http://ip:18927/qr`). Mở URL trên trình duyệt, quét bằng **Zalo app > Quét mã QR** (không dùng camera thường). Thông tin đăng nhập tự động lưu tại `~/.zalo-agent-cli/`.
626
-
627
- #### 2. Tìm thread ID
628
-
629
- `thread_id` là ID của người dùng (tin nhắn riêng) hoặc ID nhóm (nhóm chat). Bạn cần nó cho hầu hết các lệnh gửi tin.
630
-
631
- ```bash
632
- # Tìm bạn bè theo tên → lấy thread_id
633
- zalo-agent friend search "Phúc"
634
-
635
- # Xem danh sách hội thoại gần đây (bạn bè + nhóm) kèm thread_id
636
- zalo-agent conv recent
637
-
638
- # Chỉ xem nhóm
639
- zalo-agent conv recent --groups-only
640
- ```
641
-
642
- #### 3. Gửi tin nhắn
643
-
644
- ```bash
645
- # Gửi cho cá nhân (type 0, mặc định)
68
+ # Gửi cho cá nhân
646
69
  zalo-agent msg send <THREAD_ID> "Xin chào!"
647
70
 
648
- # Gửi vào nhóm (type 1)
71
+ # Gửi vào nhóm
649
72
  zalo-agent msg send <THREAD_ID> "Xin chào nhóm!" -t 1
650
73
  ```
651
74
 
652
- #### 4. Xem danh sách bạn bè
653
-
654
- ```bash
655
- zalo-agent friend list
656
- ```
657
-
658
- #### 5. Quản lý hồ sơ cá nhân
659
-
660
- ```bash
661
- # Xem hồ sơ
662
- zalo-agent profile me
663
-
664
- # Đổi ảnh đại diện
665
- zalo-agent profile avatar /đường/dẫn/ảnh.jpg
666
-
667
- # Cập nhật tiểu sử
668
- zalo-agent profile bio "Phụ tùng ô tô chính hãng"
669
-
670
- # Xem cài đặt quyền riêng tư
671
- zalo-agent profile settings
672
-
673
- # Thay đổi cài đặt (VD: ẩn trạng thái online)
674
- zalo-agent profile set online-status 0
675
- ```
676
-
677
- #### 6. Tạo khảo sát (Poll) trong nhóm
678
-
679
- ```bash
680
- # Tạo poll multi-choice, tự đóng sau 60 phút
681
- zalo-agent poll create <groupId> "Chọn ngày họp" "Thứ 2" "Thứ 4" "Thứ 6" --multi --expire 60
682
-
683
- # Xem kết quả
684
- zalo-agent poll info <pollId>
685
-
686
- # Bỏ phiếu (dùng option ID từ poll info)
687
- zalo-agent poll vote <pollId> 123 456
688
-
689
- # Đóng poll
690
- zalo-agent poll lock <pollId>
691
- ```
692
-
693
- #### 7. Nhắc nhở (Reminder)
694
-
695
- ```bash
696
- # Tạo nhắc nhở hàng ngày trong nhóm lúc 9h sáng
697
- zalo-agent reminder create <groupId> "Họp standup" -t 1 --time "2026-03-16 09:00" --repeat daily
698
-
699
- # Xem danh sách nhắc nhở
700
- zalo-agent reminder list <groupId> -t 1
701
-
702
- # Xem ai đã chấp nhận/từ chối
703
- zalo-agent reminder responses <reminderId>
704
-
705
- # Sửa nhắc nhở
706
- zalo-agent reminder edit <reminderId> <groupId> "Tiêu đề mới" -t 1 --time "2026-03-17 10:00"
707
-
708
- # Xóa nhắc nhở
709
- zalo-agent reminder remove <reminderId> <groupId> -t 1
710
- ```
711
-
712
- Chế độ lặp: `none` (không lặp), `daily` (hàng ngày), `weekly` (hàng tuần), `monthly` (hàng tháng)
713
-
714
- ### Danh sách lệnh
715
-
716
- Xem đầy đủ tại [phần tiếng Anh](#command-reference) phía trên. Tất cả lệnh đều giống nhau.
717
-
718
- ### Đa tài khoản & Proxy
719
-
720
- Mỗi tài khoản Zalo có thể gắn với 1 proxy riêng biệt.
721
-
722
- ```bash
723
- # Đăng nhập qua proxy
724
- zalo-agent account login --proxy "http://user:pass@proxy:8080" --name "Shop A"
725
-
726
- # Xem danh sách (mật khẩu proxy luôn bị ẩn)
727
- zalo-agent account list
728
-
729
- # Chuyển tài khoản
730
- zalo-agent account switch <ID>
731
- ```
75
+ ---
732
76
 
733
- **Lưu ý quan trọng:**
77
+ ## Danh sách lệnh
78
+
79
+ Tất cả lệnh hỗ trợ `--json`. Tài liệu đầy đủ: **[Wiki](https://github.com/PhucMPham/zalo-agent-cli/wiki)**
80
+
81
+ | Nhóm lệnh | Mô tả | Docs |
82
+ |------------|--------|------|
83
+ | `msg` | Gửi tin nhắn, hình, file, voice, video, sticker, link, thẻ chuyển khoản, QR | [Tin nhắn](https://github.com/PhucMPham/zalo-agent-cli/wiki/Tin-Nh%E1%BA%AFn) |
84
+ | `friend` | Danh sách, tìm, thêm, xóa, chặn, biệt danh, gợi ý | [Bạn bè](https://github.com/PhucMPham/zalo-agent-cli/wiki/B%E1%BA%A1n-B%C3%A8) |
85
+ | `group` | Tạo, đổi tên, thành viên, cài đặt, link, ghi chú, lời mời | [Nhóm & Cộng đồng](https://github.com/PhucMPham/zalo-agent-cli/wiki/Nh%C3%B3m) |
86
+ | `conv` | Tắt thông báo, ghim, lưu trữ, ẩn hội thoại, tự xóa | [Hội thoại](https://github.com/PhucMPham/zalo-agent-cli/wiki/H%E1%BB%99i-Tho%E1%BA%A1i) |
87
+ | `profile` | Xem/cập nhật hồ sơ, ảnh đại diện, quyền riêng tư | [Hồ sơ](https://github.com/PhucMPham/zalo-agent-cli/wiki/H%E1%BB%93-S%C6%A1) |
88
+ | `poll` | Tạo, bỏ phiếu, đóng khảo sát | [Khảo sát](https://github.com/PhucMPham/zalo-agent-cli/wiki/Kh%E1%BA%A3o-S%C3%A1t) |
89
+ | `reminder` | Tạo, sửa, xóa nhắc nhở | [Nhắc nhở](https://github.com/PhucMPham/zalo-agent-cli/wiki/Nh%E1%BA%AFc-Nh%E1%BB%9F) |
90
+ | `auto-reply` | Quản lý trả lời tự động | [Trả lời tự động](https://github.com/PhucMPham/zalo-agent-cli/wiki/Tr%E1%BA%A3-L%E1%BB%9Di-T%E1%BB%B1-%C4%90%E1%BB%99ng) |
91
+ | `quick-msg` | Tin nhắn nhanh đã lưu | [Tin nhắn nhanh](https://github.com/PhucMPham/zalo-agent-cli/wiki/Tin-Nh%E1%BA%AFn-Nhanh) |
92
+ | `label` | Nhãn hội thoại | [Nhãn](https://github.com/PhucMPham/zalo-agent-cli/wiki/Nh%C3%A3n) |
93
+ | `catalog` | zBusiness — danh mục sản phẩm | [zBusiness](https://github.com/PhucMPham/zalo-agent-cli/wiki/zBusiness) |
94
+ | `listen` | Lắng nghe tin nhắn real-time, webhook, lưu JSONL | [Lắng nghe](https://github.com/PhucMPham/zalo-agent-cli/wiki/L%E1%BA%AFng-Nghe) |
95
+ | `account` | Đa tài khoản & proxy | [Tài khoản](https://github.com/PhucMPham/zalo-agent-cli/wiki/T%C3%A0i-Kho%E1%BA%A3n) |
96
+ | **`oa`** | **Zalo Official Account API v3.0 — OAuth, tin nhắn, follower, tag, webhook** | **[Official Account](https://github.com/PhucMPham/zalo-agent-cli/wiki/Official-Account)** |
97
+
98
+ Xem thêm: [Đa tài khoản & Proxy](https://github.com/PhucMPham/zalo-agent-cli/wiki/%C4%90a-T%C3%A0i-Kho%E1%BA%A3n-&-Proxy) · [Cài đặt VPS](https://github.com/PhucMPham/zalo-agent-cli/wiki/C%C3%A0i-%C4%90%E1%BA%B7t-VPS) · [Thẻ chuyển khoản & QR](https://github.com/PhucMPham/zalo-agent-cli/wiki/Th%E1%BA%BB-Chuy%E1%BB%83n-Kho%E1%BA%A3n-&-QR) · [Official Account](https://github.com/PhucMPham/zalo-agent-cli/wiki/Official-Account)
734
99
 
735
- - Zalo giới hạn 1 tài khoản = 1 thiết bị (IMEI). Mỗi lần quét QR tự tạo IMEI mới.
736
- - Dùng 1 proxy riêng cho mỗi tài khoản — dùng chung proxy có nguy cơ bị khóa cả 2.
737
- - Hỗ trợ: `http://`, `https://`, `socks5://`
738
- - Mật khẩu proxy **không bao giờ** hiển thị — luôn bị ẩn thành `***`.
100
+ ---
739
101
 
740
- ### Sử dụng trên VPS / Headless / CI
102
+ ## Tính năng
741
103
 
742
- #### Cách A: QR qua trình duyệt (khuyến nghị)
104
+ - Đăng nhập QR qua HTTP server tự động (browser + terminal)
105
+ - Đa tài khoản với proxy riêng biệt (1:1)
106
+ - 90+ lệnh phủ hết tính năng Zalo
107
+ - **Zalo Official Account (OA) API v3.0** — OAuth login, gửi tin nhắn, quản lý follower, webhook listener
108
+ - Thẻ chuyển khoản (55+ ngân hàng VN) & QR VietQR
109
+ - Lắng nghe real-time với webhook & lưu JSONL local
110
+ - Output `--json` cho mọi lệnh — scripting & AI agents
111
+ - Credentials mã hóa tại chỗ (quyền 0600)
112
+ - **Dual mode**: interactive (human) + non-interactive (AI agents, CI/CD)
743
113
 
744
- ```bash
745
- # Trên VPS — HTTP server tự động khởi động
746
- zalo-agent login
747
- # Output: QR available at http://ip-vps:18927/qr
114
+ ---
748
115
 
749
- # Mở URL trên trình duyệt, quét bằng Zalo app > Quét mã QR
750
- ```
116
+ ## Ủng hộ
751
117
 
752
- > Server tự detect IP public thử port 18927, 8080, 3000, 9000.
753
- > Đảm bảo ít nhất 1 port mở trong firewall.
118
+ Nếu tool này giúp bạn tiết kiệm thời gian, hãy mua cho chúng tôi một ly cà phê!
754
119
 
755
- #### Cách B: Xuất/nhập credentials
120
+ <p align="center">
121
+ <img src="assets/donate-qr.jpg" width="280" alt="Donate qua VietQR (OCB)" />
122
+ <br/>
123
+ <em>Quét bằng app ngân hàng bất kỳ</em>
124
+ </p>
756
125
 
757
- ```bash
758
- # Trên máy local
759
- zalo-agent login
760
- zalo-agent account export --output ./creds.json
126
+ ---
761
127
 
762
- # Chuyển sang server
763
- scp ./creds.json user@server:~/
128
+ ## English
764
129
 
765
- # Trên server (không cần QR)
766
- zalo-agent login --credentials ~/creds.json
767
- ```
130
+ CLI tool for Zalo automation — multi-account, proxy support, bank transfers, QR payments.
768
131
 
769
- ### Thẻ ngân hàng & Thanh toán QR
132
+ > [!TIP]
133
+ > **AI Agent Skill** — Use with OpenClaw, Claude Code, or any SKILL.md-compatible agent:
134
+ > ```bash
135
+ > clawhub install zalo-agent # OpenClaw (from ClawHub registry)
136
+ > cp -r skill/ ~/.claude/skills/zalo-agent/ # Claude Code
137
+ > ```
138
+ > 15+ command groups · listen mode + webhook · 55+ VN banks · multi-account + proxy
139
+ > See [skill/SKILL.md](skill/SKILL.md) · [Eval scenarios](skill/evals/)
770
140
 
771
- #### Gửi thẻ ngân hàng (55+ ngân hàng VN)
141
+ ### Quick Start
772
142
 
773
143
  ```bash
774
- zalo-agent msg send-bank THREAD_ID 0123456789 --bank ocb
775
- zalo-agent msg send-bank THREAD_ID 0123456789 --bank vietcombank --name "NGUYEN VAN A"
144
+ npm install -g zalo-agent-cli
145
+ zalo-agent login # 1. Login via QR
146
+ zalo-agent friend search "Name" # 2. Find a friend
147
+ zalo-agent listen # 3. Listen for threadId
148
+ zalo-agent msg send <THREAD_ID> "Hello!" # 4. Send a message
776
149
  ```
777
150
 
778
- #### Gửi QR chuyển khoản VietQR
151
+ ### Commands
779
152
 
780
- ```bash
781
- zalo-agent msg send-qr-transfer THREAD_ID 0123456789 --bank vcb \
782
- --amount 500000 --content "thanh toan" --template qronly
783
- ```
153
+ Full docs: **[Wiki](https://github.com/PhucMPham/zalo-agent-cli/wiki)**
784
154
 
785
- Template: `compact` (khung VietQR), `print` (logo V), `qronly` (chỉ mã QR)
155
+ | Group | Description | Docs |
156
+ |-------|-------------|------|
157
+ | `msg` | Text, images, files, voice, video, stickers, links, bank cards, QR | [Messages](https://github.com/PhucMPham/zalo-agent-cli/wiki/Messages) |
158
+ | `friend` | List, find, add, remove, block, alias, recommendations | [Friends](https://github.com/PhucMPham/zalo-agent-cli/wiki/Friends) |
159
+ | `group` | Create, rename, members, settings, links, notes, invites | [Groups](https://github.com/PhucMPham/zalo-agent-cli/wiki/Groups) |
160
+ | `conv` | Mute, pin, archive, hidden, auto-delete | [Conversations](https://github.com/PhucMPham/zalo-agent-cli/wiki/Conversations) |
161
+ | `profile` | Profile, avatar gallery, privacy | [Profile](https://github.com/PhucMPham/zalo-agent-cli/wiki/Profile) |
162
+ | `poll` | Create, vote, lock polls | [Polls](https://github.com/PhucMPham/zalo-agent-cli/wiki/Polls) |
163
+ | `reminder` | Create, edit, remove reminders | [Reminders](https://github.com/PhucMPham/zalo-agent-cli/wiki/Reminders) |
164
+ | `auto-reply` | Auto-reply rules | [Auto-Reply](https://github.com/PhucMPham/zalo-agent-cli/wiki/Auto-Reply) |
165
+ | `quick-msg` | Saved quick messages | [Quick Messages](https://github.com/PhucMPham/zalo-agent-cli/wiki/Quick-Messages) |
166
+ | `label` | Conversation labels | [Labels](https://github.com/PhucMPham/zalo-agent-cli/wiki/Labels) |
167
+ | `catalog` | zBusiness catalogs & products | [Catalog](https://github.com/PhucMPham/zalo-agent-cli/wiki/Catalog) |
168
+ | `listen` | Real-time listener, webhook, JSONL | [Listener](https://github.com/PhucMPham/zalo-agent-cli/wiki/Listener) |
169
+ | `account` | Multi-account & proxy | [Accounts](https://github.com/PhucMPham/zalo-agent-cli/wiki/Accounts) |
170
+ | **`oa`** | **Zalo Official Account API v3.0 — OAuth, messaging, followers, webhook** | **[Official Account](https://github.com/PhucMPham/zalo-agent-cli/wiki/Official-Account)** |
786
171
 
787
- Nội dung chuyển khoản: tối đa 50 ký tự (theo chuẩn VietQR/NAPAS).
172
+ ### Support Us
788
173
 
789
- ### Bảo mật
174
+ If this tool saves you time, consider buying us a coffee!
790
175
 
791
- - Credentials lưu tại `~/.zalo-agent-cli/credentials/` với quyền **0600** (chỉ chủ sở hữu đọc được)
792
- - Cấu hình proxy lưu riêng, không nằm trong file credentials
793
- - Mật khẩu proxy **không bao giờ** hiển thị — luôn bị ẩn
794
- - HTTP server QR chỉ lắng nghe `127.0.0.1` (không truy cập từ bên ngoài)
176
+ <p align="center">
177
+ <img src="assets/donate-qr.jpg" width="280" alt="Donate via VietQR (OCB)" />
178
+ <br/>
179
+ <em>Scan with any Vietnamese banking app</em>
180
+ </p>
795
181
 
796
- ### Tuyên bố miễn trừ
182
+ ---
797
183
 
798
- > ⚠️ **Cảnh báo:** Tool này sử dụng [zca-js](https://github.com/AKAspanion/zca-js) — thư viện gọi API Zalo **không chính thức**. Zalo không hỗ trợ và **tài khoản của bạn có thể bị khóa (ban)**. Dùng trên tinh thần tự chịu trách nhiệm.
184
+ ## Star History
799
185
 
800
- Đây dự án **không chính thức** và **không liên kết với Zalo hay Tập đoàn VNG**. Xem [DISCLAIMER.md](DISCLAIMER.md) để biết chi tiết.
186
+ [![Star History Chart](https://api.star-history.com/svg?repos=PhucMPham/zalo-agent-cli&type=Date)](https://star-history.com/#PhucMPham/zalo-agent-cli&Date)
801
187
 
802
- ### Giấy phép
188
+ ## License
803
189
 
804
- [MIT](LICENSE)
190
+ [MIT](LICENSE) · See [DISCLAIMER.md](DISCLAIMER.md) for full terms.