企业微信 SDK,提供企业微信 API 的 Python 封装,支持同步和异步调用。
Project description
py_wecom
企业微信 SDK,提供企业微信 API 的 Python 封装,支持同步和异步调用。
功能特性
- Server API: 企业微信服务端 API,支持消息发送、素材上传等
- Webhook API: 企业微信机器人 Webhook 接口,支持多种消息类型
- 同步/异步支持: 所有接口均提供同步和异步版本
- 类型安全: 使用 Pydantic 进行数据验证,提供完整的类型提示
- 缓存支持: 支持 Redis 和 diskcache 缓存 access_token
安装
pip install py_wecom
快速开始
Server API
from py_wecom.server import Base, Sender, Uploader, Text, TextContent
# 初始化客户端
server = Base(
corpid="your_corp_id",
corpsecret="your_corp_secret",
agentid="your_agent_id"
)
# 刷新 access_token
server.refresh_access_token()
# 发送文本消息
sender = Sender()
sender.agentid = server.agentid
sender.access_token = server.access_token
content = Text(
touser="@all",
text=TextContent(content="Hello from py_wecom!")
)
response = sender.send_text(content=content)
print(response.json())
Webhook API
from py_wecom.webhook import Webhook, Text, TextContent
# 初始化 Webhook 客户端
webhook = Webhook(key="your_webhook_key")
# 发送文本消息
content = Text(
text=TextContent(
content="Hello from py_wecom!",
mentioned_list=["@all"]
)
)
response = webhook.send_text(content=content)
print(response.json())
支持的消息类型
Server API 支持的消息类型
| 消息类型 | 说明 |
|---|---|
| Text | 文本消息 |
| Image | 图片消息 |
| Voice | 语音消息 |
| Video | 视频消息 |
| File | 文件消息 |
| TextCard | 文本卡片消息 |
| News | 图文消息 |
| MpNews | 图文消息(mpnews) |
| Markdown | Markdown消息 |
| MiniprogramNotice | 小程序通知 |
| TemplateCard | 模板卡片消息 |
Webhook API 支持的消息类型
| 消息类型 | 说明 |
|---|---|
| Text | 文本消息 |
| Markdown | Markdown消息 |
| MarkdownV2 | MarkdownV2消息(支持更多样式) |
| Image | 图片消息 |
| News | 图文消息 |
| Voice | 语音消息 |
| File | 文件消息 |
| TemplateCard | 模板卡片消息 |
使用示例
发送图片消息 (Server API)
from py_wecom.server import Base, Sender, Image, ImageContent
server = Base(corpid="xxx", corpsecret="xxx", agentid="xxx")
server.refresh_access_token()
sender = Sender()
sender.agentid = server.agentid
sender.access_token = server.access_token
# 先上传图片获取 media_id
uploader = Uploader()
uploader.access_token = server.access_token
# 上传图片
with open("image.jpg", "rb") as f:
upload_response = uploader.upload(
file_type="image",
files={"media": f}
)
media_id = upload_response.json()["media_id"]
# 发送图片消息
content = Image(
touser="user_id",
image=ImageContent(media_id=media_id)
)
response = sender.send_image(content=content)
发送 Markdown 消息 (Webhook)
from py_wecom.webhook import Webhook, Markdown, MarkdownContent
webhook = Webhook(key="your_webhook_key")
content = Markdown(
markdown=MarkdownContent(
content="""
# 标题
**加粗文本**
*斜体文本*
[链接](https://example.com)
"""
)
)
response = webhook.send_markdown(content=content)
使用缓存 (Server API)
import redis
from py_wecom.server import Base
# 使用 Redis 缓存 access_token
redis_client = redis.Redis(host="localhost", port=6379, db=0)
server = Base(
corpid="xxx",
corpsecret="xxx",
agentid="xxx",
cache_config={
"instance": redis_client,
"key": "pywecom_access_token",
"expire": 7100
}
)
# 刷新 access_token(会自动使用缓存)
server.refresh_access_token()
异步支持
所有方法均提供异步版本,方法名以 async_ 开头:
import asyncio
from py_wecom.server import Base, Sender, Text, TextContent
async def main():
server = Base(corpid="xxx", corpsecret="xxx", agentid="xxx")
await server.async_refresh_access_token()
sender = Sender()
sender.agentid = server.agentid
sender.access_token = server.access_token
content = Text(
touser="@all",
text=TextContent(content="Hello!")
)
response = await sender.async_send_text(content=content)
print(response.json())
asyncio.run(main())
项目结构
py_wecom/
├── src/
│ └── py_wecom/
│ ├── __init__.py
│ ├── server/ # Server API
│ │ ├── __init__.py # Base 类,access_token 管理
│ │ ├── materials.py # 素材上传
│ │ ├── messages.py # 消息类型和发送
│ │ ├── responses.py # 响应模型
│ │ └── utils.py # 工具函数
│ └── webhook/ # Webhook API
│ ├── __init__.py # Webhook 客户端
│ ├── messages.py # 消息类型
│ ├── responses.py # 响应模型
│ └── utils.py # 工具函数
└── README.md
参考文档
主页
https://gitee.com/guolei19850528/py_wecom
许可证
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
py_wecom-0.1.0.tar.gz
(17.6 kB
view details)
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
py_wecom-0.1.0-py3-none-any.whl
(19.7 kB
view details)
File details
Details for the file py_wecom-0.1.0.tar.gz.
File metadata
- Download URL: py_wecom-0.1.0.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f070ad09dd9f9360bf8aec1a2a06ea7f6f279d0823b16fd3d74d715f45900016
|
|
| MD5 |
bc3aa78954aaf50c9f49aeee4798dc97
|
|
| BLAKE2b-256 |
157b2df7a846016d63a8a43d334c4b280ecf1e64c7edac76c69fdd5f9622bcbd
|
File details
Details for the file py_wecom-0.1.0-py3-none-any.whl.
File metadata
- Download URL: py_wecom-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
452c8f45186721996a7650000fe7bc88d210589af92d59a35e99664e6b7e8cf7
|
|
| MD5 |
ec95b9cf4102efa7b3fdd7c894467a44
|
|
| BLAKE2b-256 |
1bc46c90a2a59b92f804d79b453007a56c391ec5bc90b2f20bd49566b8fafd24
|