A CLI tool to interact with a Wechat iLink bot.
- Interactive QR code login for human
- Non-interactive QR code retrieval and status polling for agents
- Manage multi accounts
- Get
context_token - Send text, images, and files to WeChat users
cargo install wechat-cliUsage: wechat-cli <COMMAND>
Commands:
login Log in with a QR code and save the account locally
qrcode Request a login QR code and print it as JSON without saving anything locally
qrcode-status Query a login QR code status and print it as JSON without saving anything locally
account Inspect saved accounts
get-context-token Wait for the next inbound message and print its context token
send Send a text, image, or file message
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print helpt-cli [COMMAND]
Interactive QR code login:
wechat-cli loginNon-interactive QR code workflow for agents:
# Request a QR code
wechat-cli qrcode
# Poll QR code status
wechat-cli qrcode-status --qrcode-id <qrcode_id>List saved accounts:
wechat-cli account listAdd a new account:
wechat-cli account add \
--user-id <user_id> \
--bot-token <bot_token> \
[--route-tag <route_tag>]Delete an account by index:
wechat-cli account delete --account <index>Wait for the next incoming message and print the context_token.
Using a saved account:
wechat-cli get-context-token --account <index>Using explicit credentials:
wechat-cli get-context-token \
--bot-token <bot_token> \
--user-id <user_id> \
[--route-tag <route_tag>]Send a text message using a saved account:
wechat-cli send \
--account <index> \
--context-token <token> \
--text "hello"Send text from stdin (pipe):
echo "hello from pipe" | wechat-cli send \
--account <index> \
--context-token <token>Send text from a file via stdin redirection:
wechat-cli send \
--account <index> \
--context-token <token> \
< message.txtSend an image using a saved account:
wechat-cli send \
--account <index> \
--context-token <token> \
--file ./image.pngSend a file with caption using a saved account:
wechat-cli send \
--account <index> \
--context-token <token> \
--file ./image.png \
--caption "this is an image"Use explicit credentials (without saved account):
wechat-cli send \
--bot-token <bot_token> \
--user-id <user_id> \
--context-token <token> \
[--route-tag <route_tag>] \
--text "hello"When sending, the CLI resolves the message source in this order:
- If
--textis provided, it is used regardless of stdin. - If
--fileis provided, it is used regardless of stdin. - If neither
--textnor--fileis provided, stdin is read when it is a pipe or redirected file. - If stdin is an interactive terminal and neither
--textnor--fileis provided, an error is returned.
Local files are stored under:
~/.config/wechat-cli/
Main file:
~/.config/wechat-cli/accounts.json