Python SDK for the WeChat iLink Bot API
Project description
weixin-bot-sdk
Python SDK for the WeChat iLink Bot API.
Install
cd python
pip install .
Quick Start
from weixin_bot import WeixinBot
bot = WeixinBot()
bot.login()
@bot.on_message
async def handle(msg):
print(f"{msg.user_id}: {msg.text}")
await bot.send_typing(msg.user_id)
await bot.reply(msg, f"你说了: {msg.text}")
bot.run()
API Reference
WeixinBot(base_url=None, token_path=None, on_error=None)
Creates a bot client.
base_url: Override the iLink API base URL.token_path: Override the credential file path. Default:~/.weixin-bot/credentials.jsonon_error: Receive polling or handler errors.
bot.login(force=False)
Starts QR login if needed, stores credentials locally, and returns the active session.
@bot.on_message
Registers an async or sync message handler. Each inbound user message is converted into:
IncomingMessage(
user_id: str,
text: str,
type: Literal["text", "image", "voice", "file", "video"],
raw: dict,
_context_token: str,
timestamp: datetime,
)
await bot.reply(msg, text)
Replies to an inbound message using that message's context_token. It also triggers stop_typing() in the background after the reply is sent.
await bot.send_typing(user_id)
Shows the typing indicator in the WeChat chat. The SDK fetches the required typing_ticket through getconfig.
await bot.stop_typing(user_id)
Cancels the typing indicator.
await bot.send(user_id, text)
Sends a proactive text message using the latest cached context_token for that user. This only works after the SDK has seen at least one inbound message from that user.
bot.run()
Starts the long-poll loop, dispatches incoming messages to registered handlers, reconnects on transient failures, and forces a fresh QR login if the session expires.
bot.stop()
Stops the long-poll loop gracefully.
How It Works
login()fetches a QR login URL, waits for WeChat confirmation, and saves the returned bot token.run()performs long polling againstgetupdates.- Each inbound message is normalized into
IncomingMessageand sent to your callbacks. reply()andsend()reuse the internally managedcontext_tokenrequired by the protocol.- On
errcode = -14, the SDK clears saved credentials, requests a fresh QR login, and resumes polling with exponential backoff.
Notes
- Credentials are stored at
~/.weixin-bot/credentials.jsonwith mode0o600. - The package tries to render the QR code in the terminal if
qrcodeis installed, otherwise it prints the URL to stderr. - Long-poll requests use a 40-second timeout and send operations use a 15-second timeout.
- Text messages are split into 2000-character chunks automatically.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file weixin_bot_sdk-0.2.0.tar.gz.
File metadata
- Download URL: weixin_bot_sdk-0.2.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b87faa42e82c7b195350447db32029c157e2a7064864f9a0881d70d38627cae
|
|
| MD5 |
d3f0a73fc9b36fee9b4338ac50511fad
|
|
| BLAKE2b-256 |
3cf59e14d92674be756fc2436609d9ffc997a52467608e1921bcb60d51f0d108
|
File details
Details for the file weixin_bot_sdk-0.2.0-py3-none-any.whl.
File metadata
- Download URL: weixin_bot_sdk-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fbb50b9140c33ce4282e68047361153ff781cf7a018e34ae71dd71cb9077904
|
|
| MD5 |
8ad120437d72bbc59d39754c16d196a0
|
|
| BLAKE2b-256 |
3844f55830a0a6fd2d771b6cbab1fe7512c5f9048eb4a393a34bb397c0da0363
|