| name | wechat-cli |
| description | Use the `wechat-cli` command-line tool to log in a WeChat bot, manage accounts, and send text, image, or file messages to users. |
wechat-cli
Install
cargo install wechat-cli
Login
Use non-interactive login workflow:
- Request a QR code:
wechat-cli qrcode
- Read
qrcode_id and qrcode_url from the JSON output.
- Show the QR code to the human outside the CLI.
- Poll status:
wechat-cli qrcode-status --qrcode-id <qrcode_id>
- When
status becomes confirmed, read bot_token and user_id from the JSON output.
- Use
wechat-cli account add to save those credentials.
Account
List Accounts
wechat-cli account list
Use this to find saved account indexes and inspect user_id.
Add Account
wechat-cli account add \
--user-id <user_id> \
--bot-token <bot_token> \
[--route-tag <route_tag>]
Delete Account
wechat-cli account delete --account <index>
Send
Prerequisites
Before sending, you need a context_token.
Send Text (Saved Account)
wechat-cli send \
--account <index> \
--context-token <token> \
--text "hello"
Send Text from Stdin (Pipe)
When --text is omitted and stdin is a pipe or redirected file, the CLI reads the message body from stdin:
echo "hello from pipe" | wechat-cli send \
--account <index> \
--context-token <token>
Or redirect from a file:
wechat-cli send \
--account <index> \
--context-token <token> \
< message.txt
Send Image (Saved Account)
wechat-cli send \
--account <index> \
--context-token <token> \
--file <image_path>
Send File (Saved Account)
wechat-cli send \
--account <index> \
--context-token <token> \
--file <file_path>
Send With Caption (Saved Account)
wechat-cli send \
--account <index> \
--context-token <token> \
--file <file_path> \
--caption "caption text"
Explicit Credential Mode
Use this only when the task explicitly provides raw credentials instead of relying on saved accounts.
wechat-cli send \
--bot-token <bot_token> \
--user-id <user_id> \
--context-token <token> \
[--route-tag <route_tag>] \
--text "hello"
Important Rules
- The bot is bound to exactly one
user_id.
- Re-login for the same WeChat user rotates the bound bot credentials.
- The bot can only send messages to its currently bound
user_id.
--context-token is always required for send.
--text and --file are mutually exclusive.
--caption only works with --file.
- When neither
--text nor --file is provided, stdin is read if it is a pipe or redirected file.
- When
--text is explicitly provided, stdin is ignored even if a pipe is present.
Local Storage
- Storage root:
~/.config/wechat-cli/
- Accounts file:
~/.config/wechat-cli/accounts.json
Help
Use built-in help before guessing flags:
wechat-cli --help
wechat-cli qrcode --help
wechat-cli qrcode-status --help
wechat-cli account --help
wechat-cli send --help