feat:初版
This commit is contained in:
694
docs/API文档.md
Normal file
694
docs/API文档.md
Normal file
@@ -0,0 +1,694 @@
|
||||
# WechatHookBot API 文档
|
||||
|
||||
## WechatHookClient API 参考
|
||||
|
||||
基于个微大客户版 Hook API 封装的 Python 客户端。
|
||||
|
||||
## 消息发送
|
||||
|
||||
### send_text - 发送文本消息
|
||||
|
||||
```python
|
||||
await client.send_text(to_wxid: str, content: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid(个人或群聊)
|
||||
- `content`: 文本内容
|
||||
|
||||
**返回:** 是否发送成功
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_text("wxid_xxx", "你好,世界")
|
||||
await client.send_text("123@chatroom", "群聊消息")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_image - 发送图片
|
||||
|
||||
```python
|
||||
await client.send_image(to_wxid: str, image_path: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid
|
||||
- `image_path`: 图片文件路径
|
||||
|
||||
**支持格式:** jpg, png, gif
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_image("wxid_xxx", "D:/images/photo.jpg")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_file - 发送文件
|
||||
|
||||
```python
|
||||
await client.send_file(to_wxid: str, file_path: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid
|
||||
- `file_path`: 文件路径
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_file("wxid_xxx", "D:/documents/report.pdf")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_video - 发送视频
|
||||
|
||||
```python
|
||||
await client.send_video(to_wxid: str, video_path: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid
|
||||
- `video_path`: 视频文件路径
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_video("wxid_xxx", "D:/videos/demo.mp4")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_card - 发送名片
|
||||
|
||||
```python
|
||||
await client.send_card(to_wxid: str, card_wxid: str, card_nickname: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid
|
||||
- `card_wxid`: 名片的 wxid
|
||||
- `card_nickname`: 名片昵称
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_card("wxid_xxx", "wxid_yyy", "张三")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_location - 发送位置
|
||||
|
||||
```python
|
||||
await client.send_location(
|
||||
to_wxid: str,
|
||||
latitude: float,
|
||||
longitude: float,
|
||||
title: str,
|
||||
address: str
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid
|
||||
- `latitude`: 纬度
|
||||
- `longitude`: 经度
|
||||
- `title`: 位置标题
|
||||
- `address`: 详细地址
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_location(
|
||||
"wxid_xxx",
|
||||
39.9042,
|
||||
116.4074,
|
||||
"天安门",
|
||||
"北京市东城区"
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_link - 发送链接
|
||||
|
||||
```python
|
||||
await client.send_link(
|
||||
to_wxid: str,
|
||||
title: str,
|
||||
desc: str,
|
||||
url: str,
|
||||
thumb_url: str = ""
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid
|
||||
- `title`: 链接标题
|
||||
- `desc`: 链接描述
|
||||
- `url`: 链接地址
|
||||
- `thumb_url`: 缩略图 URL(可选)
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_link(
|
||||
"wxid_xxx",
|
||||
"新闻标题",
|
||||
"新闻摘要",
|
||||
"https://example.com/news",
|
||||
"https://example.com/thumb.jpg"
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_miniapp - 发送小程序
|
||||
|
||||
```python
|
||||
await client.send_miniapp(
|
||||
to_wxid: str,
|
||||
appid: str,
|
||||
title: str,
|
||||
page_path: str,
|
||||
thumb_url: str = ""
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `to_wxid`: 接收者 wxid
|
||||
- `appid`: 小程序 appid
|
||||
- `title`: 小程序标题
|
||||
- `page_path`: 小程序页面路径
|
||||
- `thumb_url`: 缩略图 URL(可选)
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.send_miniapp(
|
||||
"wxid_xxx",
|
||||
"wx1234567890",
|
||||
"小程序标题",
|
||||
"pages/index/index"
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### send_at_message - 发送群聊@消息
|
||||
|
||||
```python
|
||||
await client.send_at_message(
|
||||
chatroom_id: str,
|
||||
content: str,
|
||||
at_list: list[str]
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
- `content`: 消息内容
|
||||
- `at_list`: 要@的 wxid 列表
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
# @指定用户
|
||||
await client.send_at_message(
|
||||
"123@chatroom",
|
||||
"大家好",
|
||||
["wxid_aaa", "wxid_bbb"]
|
||||
)
|
||||
|
||||
# @所有人
|
||||
await client.send_at_message(
|
||||
"123@chatroom",
|
||||
"重要通知",
|
||||
["notify@all"]
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### revoke_message - 撤回消息
|
||||
|
||||
```python
|
||||
await client.revoke_message(msg_id: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `msg_id`: 消息 ID
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.revoke_message("1234567890")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 好友管理
|
||||
|
||||
### get_friend_list - 获取好友列表
|
||||
|
||||
```python
|
||||
await client.get_friend_list() -> list[dict]
|
||||
```
|
||||
|
||||
**返回:** 好友列表
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
friends = await client.get_friend_list()
|
||||
for friend in friends:
|
||||
print(friend["wxid"], friend["nickname"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### get_friend_info - 获取好友信息
|
||||
|
||||
```python
|
||||
await client.get_friend_info(wxid: str) -> dict
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `wxid`: 好友 wxid
|
||||
|
||||
**返回:** 好友详细信息
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
info = await client.get_friend_info("wxid_xxx")
|
||||
print(info["nickname"], info["remark"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### search_user - 搜索用户
|
||||
|
||||
```python
|
||||
await client.search_user(keyword: str) -> dict
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `keyword`: 搜索关键词(wxid、手机号、微信号)
|
||||
|
||||
**返回:** 用户信息
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
result = await client.search_user("wxid_xxx")
|
||||
if result:
|
||||
print(result["nickname"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### add_friend - 添加好友
|
||||
|
||||
```python
|
||||
await client.add_friend(
|
||||
wxid: str,
|
||||
verify_msg: str = "",
|
||||
scene: int = 3
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `wxid`: 要添加的 wxid
|
||||
- `verify_msg`: 验证消息
|
||||
- `scene`: 添加场景(3=搜索,15=名片)
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.add_friend("wxid_xxx", "你好,我是...")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### accept_friend - 同意好友请求
|
||||
|
||||
```python
|
||||
await client.accept_friend(v3: str, v4: str, scene: int) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `v3`: 好友请求的 v3 参数
|
||||
- `v4`: 好友请求的 v4 参数
|
||||
- `scene`: 场景值
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
# 从好友请求消息中获取参数
|
||||
await client.accept_friend(v3, v4, scene)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### delete_friend - 删除好友
|
||||
|
||||
```python
|
||||
await client.delete_friend(wxid: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `wxid`: 要删除的好友 wxid
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.delete_friend("wxid_xxx")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### set_friend_remark - 修改好友备注
|
||||
|
||||
```python
|
||||
await client.set_friend_remark(wxid: str, remark: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `wxid`: 好友 wxid
|
||||
- `remark`: 新备注
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.set_friend_remark("wxid_xxx", "张三")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### check_friend_status - 检测好友状态
|
||||
|
||||
```python
|
||||
await client.check_friend_status(wxid: str) -> dict
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `wxid`: 好友 wxid
|
||||
|
||||
**返回:** 好友状态信息
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
status = await client.check_friend_status("wxid_xxx")
|
||||
print(status["is_friend"]) # 是否是好友
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 群聊管理
|
||||
|
||||
### get_chatroom_list - 获取群聊列表
|
||||
|
||||
```python
|
||||
await client.get_chatroom_list() -> list[dict]
|
||||
```
|
||||
|
||||
**返回:** 群聊列表
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
chatrooms = await client.get_chatroom_list()
|
||||
for room in chatrooms:
|
||||
print(room["chatroom_id"], room["name"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### get_chatroom_members - 获取群成员
|
||||
|
||||
```python
|
||||
await client.get_chatroom_members(chatroom_id: str) -> list[dict]
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
|
||||
**返回:** 群成员列表
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
members = await client.get_chatroom_members("123@chatroom")
|
||||
for member in members:
|
||||
print(member["wxid"], member["nickname"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### get_chatroom_info - 获取群信息
|
||||
|
||||
```python
|
||||
await client.get_chatroom_info(chatroom_id: str) -> dict
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
|
||||
**返回:** 群聊详细信息
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
info = await client.get_chatroom_info("123@chatroom")
|
||||
print(info["name"], info["member_count"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### create_chatroom - 创建群聊
|
||||
|
||||
```python
|
||||
await client.create_chatroom(member_list: list[str]) -> str
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `member_list`: 成员 wxid 列表(至少2人)
|
||||
|
||||
**返回:** 新群聊的 chatroom_id
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
chatroom_id = await client.create_chatroom(["wxid_aaa", "wxid_bbb"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### invite_to_chatroom - 邀请进群
|
||||
|
||||
```python
|
||||
await client.invite_to_chatroom(
|
||||
chatroom_id: str,
|
||||
wxid_list: list[str]
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
- `wxid_list`: 要邀请的 wxid 列表
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.invite_to_chatroom("123@chatroom", ["wxid_xxx", "wxid_yyy"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### remove_chatroom_member - 踢出群成员
|
||||
|
||||
```python
|
||||
await client.remove_chatroom_member(
|
||||
chatroom_id: str,
|
||||
wxid_list: list[str]
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
- `wxid_list`: 要踢出的 wxid 列表
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.remove_chatroom_member("123@chatroom", ["wxid_xxx"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### quit_chatroom - 退出群聊
|
||||
|
||||
```python
|
||||
await client.quit_chatroom(chatroom_id: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.quit_chatroom("123@chatroom")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### set_chatroom_name - 修改群名称
|
||||
|
||||
```python
|
||||
await client.set_chatroom_name(chatroom_id: str, name: str) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
- `name`: 新群名称
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.set_chatroom_name("123@chatroom", "新群名")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### set_chatroom_announcement - 修改群公告
|
||||
|
||||
```python
|
||||
await client.set_chatroom_announcement(
|
||||
chatroom_id: str,
|
||||
announcement: str
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
- `announcement`: 群公告内容
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.set_chatroom_announcement("123@chatroom", "群公告内容")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### set_my_chatroom_nickname - 修改我的群昵称
|
||||
|
||||
```python
|
||||
await client.set_my_chatroom_nickname(
|
||||
chatroom_id: str,
|
||||
nickname: str
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `chatroom_id`: 群聊 ID
|
||||
- `nickname`: 新昵称
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.set_my_chatroom_nickname("123@chatroom", "我的群昵称")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 登录信息
|
||||
|
||||
### get_login_info - 获取当前登录信息
|
||||
|
||||
```python
|
||||
await client.get_login_info() -> dict
|
||||
```
|
||||
|
||||
**返回:** 登录账号信息
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
info = await client.get_login_info()
|
||||
print(info["wxid"], info["nickname"])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## CDN 功能
|
||||
|
||||
### cdn_upload - CDN 上传
|
||||
|
||||
```python
|
||||
await client.cdn_upload(file_path: str) -> dict
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `file_path`: 文件路径
|
||||
|
||||
**返回:** CDN 信息(包含 aes_key, file_id 等)
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
cdn_info = await client.cdn_upload("D:/files/image.jpg")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### cdn_download - CDN 下载
|
||||
|
||||
```python
|
||||
await client.cdn_download(
|
||||
aes_key: str,
|
||||
file_id: str,
|
||||
save_path: str
|
||||
) -> bool
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `aes_key`: AES 密钥
|
||||
- `file_id`: 文件 ID
|
||||
- `save_path`: 保存路径
|
||||
|
||||
**示例:**
|
||||
```python
|
||||
await client.cdn_download(aes_key, file_id, "D:/downloads/file.jpg")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 企业微信
|
||||
|
||||
### get_work_chatroom_list - 获取企业群列表
|
||||
|
||||
```python
|
||||
await client.get_work_chatroom_list() -> list[dict]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### get_work_friend_list - 获取企业好友列表
|
||||
|
||||
```python
|
||||
await client.get_work_friend_list() -> list[dict]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### get_work_chatroom_members - 获取企业群成员
|
||||
|
||||
```python
|
||||
await client.get_work_chatroom_members(chatroom_id: str) -> list[dict]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 错误处理
|
||||
|
||||
所有 API 调用失败时会抛出异常或返回 False/None,建议使用 try-except 处理:
|
||||
|
||||
```python
|
||||
try:
|
||||
result = await client.send_text("wxid_xxx", "消息")
|
||||
if result:
|
||||
logger.info("发送成功")
|
||||
else:
|
||||
logger.error("发送失败")
|
||||
except Exception as e:
|
||||
logger.error(f"发送异常: {e}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有 API 都是异步函数,必须使用 `await` 调用
|
||||
2. wxid 格式:个人为 `wxid_xxx`,群聊为 `xxx@chatroom`
|
||||
3. 文件路径建议使用绝对路径
|
||||
4. 部分 API 需要特定权限(如群主才能踢人)
|
||||
5. API 调用频率不宜过高,避免风控
|
||||
Reference in New Issue
Block a user