# DooTask Tools
一个用于与 DooTask 系统交互的 Python 客户端库,提供了完整的 API 封装和类型支持。支持用户管理、消息通信、项目管理、任务协作等功能。
## 安装
```bash
pip install dootask-tools
```
## 快速开始
```python
from dootask import DooTaskClient
# 创建客户端
client = DooTaskClient(
token="your_token_here",
server="https://your-dootask-server.com",
timeout=30
)
# 获取用户信息
user = client.get_user_info()
print(f"用户: {user.nickname}")
```
## 主要功能示例
### 发送消息
```python
from dootask import SendMessageRequest, SendMessageToUserRequest
# 发送消息到指定对话
client.send_message(SendMessageRequest(
dialog_id=123,
text="Hello, World!",
text_type="md"
))
# 发送消息到用户
client.send_message_to_user(SendMessageToUserRequest(
userid=456,
text="私信内容",
text_type="md"
))
```
### 项目和任务管理
```python
from dootask import CreateProjectRequest, CreateTaskRequest, UpdateTaskRequest
# 创建项目
project = client.create_project(CreateProjectRequest(
name="新项目",
desc="项目描述",
columns="待办,进行中,已完成"
))
# 创建任务
task = client.create_task(CreateTaskRequest(
project_id=project.id,
name="新任务",
content="任务内容",
owner=[123]
))
# 更新任务
updated_task = client.update_task(UpdateTaskRequest(
task_id=task.id,
name="更新后的任务名",
content="更新后的内容"
))
```
### 群组管理
```python
from dootask import CreateGroupRequest, AddGroupUserRequest
# 创建群组
group = client.create_group(CreateGroupRequest(
chat_name="新群组",
userids=[123, 456, 789]
))
# 添加群成员
client.add_group_user(AddGroupUserRequest(
dialog_id=group.id,
userids=[999]
))
```
## API 方法列表
### 基础方法
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `DooTaskClient` | 创建客户端实例 | `token, server, timeout` | `DooTaskClient` |
### 用户相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `get_user_info` | 获取用户信息 | `no_cache: bool = False` | `UserInfo` |
| `check_user_identity` | 检查用户身份 | `identity: str` | `UserInfo` |
| `get_user_departments` | 获取用户部门信息 | - | `List[Department]` |
| `get_users_basic` | 获取多个用户基础信息 | `userids: List[int]` | `List[UserBasic]` |
| `get_user_basic` | 获取单个用户基础信息 | `userid: int` | `UserBasic` |
### 机器人相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `get_bot_list` | 获取机器人列表 | - | `BotListResponse` |
| `get_bot` | 获取机器人信息 | `GetBotRequest` | `Bot` |
| `create_bot` | 创建机器人 | `CreateBotRequest` | `Bot` |
| `update_bot` | 更新机器人 | `EditBotRequest` | `Bot` |
| `delete_bot` | 删除机器人 | `DeleteBotRequest` | `None` |
### 消息相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `send_message` | 发送消息 | `SendMessageRequest` | `None` |
| `send_message_to_user` | 发送消息到用户 | `SendMessageToUserRequest` | `None` |
| `send_bot_message` | 发送机器人消息 | `SendBotMessageRequest` | `None` |
| `send_anonymous_message` | 发送匿名消息 | `SendAnonymousMessageRequest` | `None` |
| `get_message_list` | 获取消息列表 | `GetMessageListRequest` | `DialogMessageListResponse` |
| `search_message` | 搜索消息 | `SearchMessageRequest` | `DialogMessageSearchResponse` |
| `get_message` | 获取单个消息详情 | `GetMessageRequest` | `DialogMessage` |
| `get_message_detail` | 获取消息详情(兼容性) | `GetMessageRequest` | `DialogMessage` |
| `withdraw_message` | 撤回消息 | `WithdrawMessageRequest` | `None` |
| `forward_message` | 转发消息 | `ForwardMessageRequest` | `None` |
| `toggle_message_todo` | 切换消息待办状态 | `ToggleMessageTodoRequest` | `None` |
| `get_message_todo_list` | 获取消息待办列表 | `GetMessageRequest` | `TodoListResponse` |
| `mark_message_done` | 标记消息完成 | `MarkMessageDoneRequest` | `None` |
### 对话相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `get_dialog_list` | 获取对话列表 | `TimeRangeRequest` | `ResponsePaginate[DialogInfo]` |
| `search_dialog` | 搜索会话 | `SearchDialogRequest` | `List[DialogInfo]` |
| `get_dialog_one` | 获取单个会话信息 | `GetDialogRequest` | `DialogInfo` |
| `get_dialog_user` | 获取会话成员 | `GetDialogUserRequest` | `List[DialogMember]` |
### 群组相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `create_group` | 创建群组 | `CreateGroupRequest` | `DialogInfo` |
| `edit_group` | 修改群组 | `EditGroupRequest` | `None` |
| `add_group_user` | 添加群成员 | `AddGroupUserRequest` | `None` |
| `remove_group_user` | 移除群成员 | `RemoveGroupUserRequest` | `None` |
| `exit_group` | 退出群组 | `dialog_id: int` | `None` |
| `transfer_group` | 转让群组 | `TransferGroupRequest` | `None` |
| `disband_group` | 解散群组 | `DisbandGroupRequest` | `None` |
### 项目管理相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `get_project_list` | 获取项目列表 | `GetProjectListRequest` | `ResponsePaginate[Project]` |
| `get_project` | 获取项目信息 | `GetProjectRequest` | `Project` |
| `create_project` | 创建项目 | `CreateProjectRequest` | `Project` |
| `update_project` | 更新项目 | `UpdateProjectRequest` | `Project` |
| `exit_project` | 退出项目 | `project_id: int` | `None` |
| `delete_project` | 删除项目 | `project_id: int` | `None` |
### 任务列表相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `get_column_list` | 获取任务列表 | `GetColumnListRequest` | `ResponsePaginate[ProjectColumn]` |
| `create_column` | 创建任务列表 | `CreateColumnRequest` | `ProjectColumn` |
| `update_column` | 更新任务列表 | `UpdateColumnRequest` | `ProjectColumn` |
| `delete_column` | 删除任务列表 | `column_id: int` | `None` |
### 任务相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `get_task_list` | 获取任务列表 | `GetTaskListRequest` | `ResponsePaginate[ProjectTask]` |
| `get_task` | 获取任务信息 | `GetTaskRequest` | `ProjectTask` |
| `get_task_content` | 获取任务内容 | `GetTaskContentRequest` | `TaskContent` |
| `get_task_files` | 获取任务文件列表 | `GetTaskFilesRequest` | `List[TaskFile]` |
| `create_task` | 创建任务 | `CreateTaskRequest` | `ProjectTask` |
| `create_sub_task` | 创建子任务 | `CreateSubTaskRequest` | `ProjectTask` |
| `update_task` | 更新任务 | `UpdateTaskRequest` | `ProjectTask` |
| `create_task_dialog` | 创建任务对话 | `CreateTaskDialogRequest` | `CreateTaskDialogResponse` |
| `archive_task` | 归档任务 | `task_id: int, archive_type: str` | `None` |
| `delete_task` | 删除任务 | `task_id: int, delete_type: str` | `None` |
### 系统相关接口
| 方法 | 描述 | 参数 | 返回值 |
|------|------|------|--------|
| `get_system_settings` | 获取系统设置 | - | `SystemSettings` |
| `get_version` | 获取版本信息 | - | `VersionInfo` |
## 主要数据类型
### 基础类型
- `Response[T]` - 基础响应结构
- `ResponsePaginate[T]` - 分页响应结构
### 用户相关
- `UserInfo` - 用户信息
- `UserBasic` - 用户基础信息
- `Department` - 部门信息
### 消息相关
- `SendMessageRequest` - 发送消息请求
- `DialogMessage` - 对话消息
- `DialogMessageListResponse` - 消息列表响应
- `TodoListResponse` - 待办列表响应
### 对话相关
- `DialogInfo` - 对话信息
- `DialogMember` - 对话成员
### 项目和任务相关
- `Project` - 项目信息
- `ProjectColumn` - 项目列表
- `ProjectTask` - 项目任务
- `TaskFile` - 任务文件
- `TaskContent` - 任务内容
### 系统相关
- `SystemSettings` - 系统设置
- `VersionInfo` - 版本信息
## 异常处理
```python
from dootask import (
DooTaskException,
DooTaskAPIException,
DooTaskHTTPException,
DooTaskAuthException,
DooTaskPermissionException
)
try:
user = client.get_user_info()
except DooTaskAuthException:
print("认证失败,请检查 token")
except DooTaskPermissionException:
print("权限不足")
except DooTaskAPIException as e:
print(f"API 错误: {e}")
except DooTaskHTTPException as e:
print(f"网络错误: {e}")
except DooTaskException as e:
print(f"其他错误: {e}")
```
## 缓存机制
客户端内置用户信息缓存机制,默认缓存时间为10分钟:
```python
# 强制刷新缓存
user = client.get_user_info(no_cache=True)
# 使用缓存(默认)
user = client.get_user_info()
```
## 许可证
MIT License
Raw data
{
"_id": null,
"home_page": "https://github.com/dootask/dootask-tools",
"name": "dootask-tools",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "dootask api client chat project management collaboration",
"author": "DooTask Team",
"author_email": "support@dootask.com",
"download_url": "https://files.pythonhosted.org/packages/3e/a3/48de7601d1ac852f830390ffc039b2acc2cd5ff10ac867e69c33c1f07e57/dootask_tools-0.0.7.tar.gz",
"platform": null,
"description": "# DooTask Tools\n\n\u4e00\u4e2a\u7528\u4e8e\u4e0e DooTask \u7cfb\u7edf\u4ea4\u4e92\u7684 Python \u5ba2\u6237\u7aef\u5e93\uff0c\u63d0\u4f9b\u4e86\u5b8c\u6574\u7684 API \u5c01\u88c5\u548c\u7c7b\u578b\u652f\u6301\u3002\u652f\u6301\u7528\u6237\u7ba1\u7406\u3001\u6d88\u606f\u901a\u4fe1\u3001\u9879\u76ee\u7ba1\u7406\u3001\u4efb\u52a1\u534f\u4f5c\u7b49\u529f\u80fd\u3002\n\n## \u5b89\u88c5\n\n```bash\npip install dootask-tools\n```\n\n## \u5feb\u901f\u5f00\u59cb\n\n```python\nfrom dootask import DooTaskClient\n\n# \u521b\u5efa\u5ba2\u6237\u7aef\nclient = DooTaskClient(\n token=\"your_token_here\",\n server=\"https://your-dootask-server.com\",\n timeout=30\n)\n\n# \u83b7\u53d6\u7528\u6237\u4fe1\u606f\nuser = client.get_user_info()\nprint(f\"\u7528\u6237: {user.nickname}\")\n```\n\n## \u4e3b\u8981\u529f\u80fd\u793a\u4f8b\n\n### \u53d1\u9001\u6d88\u606f\n\n```python\nfrom dootask import SendMessageRequest, SendMessageToUserRequest\n\n# \u53d1\u9001\u6d88\u606f\u5230\u6307\u5b9a\u5bf9\u8bdd\nclient.send_message(SendMessageRequest(\n dialog_id=123,\n text=\"Hello, World!\",\n text_type=\"md\"\n))\n\n# \u53d1\u9001\u6d88\u606f\u5230\u7528\u6237\nclient.send_message_to_user(SendMessageToUserRequest(\n userid=456,\n text=\"\u79c1\u4fe1\u5185\u5bb9\",\n text_type=\"md\"\n))\n```\n\n### \u9879\u76ee\u548c\u4efb\u52a1\u7ba1\u7406\n\n```python\nfrom dootask import CreateProjectRequest, CreateTaskRequest, UpdateTaskRequest\n\n# \u521b\u5efa\u9879\u76ee\nproject = client.create_project(CreateProjectRequest(\n name=\"\u65b0\u9879\u76ee\",\n desc=\"\u9879\u76ee\u63cf\u8ff0\",\n columns=\"\u5f85\u529e,\u8fdb\u884c\u4e2d,\u5df2\u5b8c\u6210\"\n))\n\n# \u521b\u5efa\u4efb\u52a1\ntask = client.create_task(CreateTaskRequest(\n project_id=project.id,\n name=\"\u65b0\u4efb\u52a1\",\n content=\"\u4efb\u52a1\u5185\u5bb9\",\n owner=[123]\n))\n\n# \u66f4\u65b0\u4efb\u52a1\nupdated_task = client.update_task(UpdateTaskRequest(\n task_id=task.id,\n name=\"\u66f4\u65b0\u540e\u7684\u4efb\u52a1\u540d\",\n content=\"\u66f4\u65b0\u540e\u7684\u5185\u5bb9\"\n))\n```\n\n### \u7fa4\u7ec4\u7ba1\u7406\n\n```python\nfrom dootask import CreateGroupRequest, AddGroupUserRequest\n\n# \u521b\u5efa\u7fa4\u7ec4\ngroup = client.create_group(CreateGroupRequest(\n chat_name=\"\u65b0\u7fa4\u7ec4\",\n userids=[123, 456, 789]\n))\n\n# \u6dfb\u52a0\u7fa4\u6210\u5458\nclient.add_group_user(AddGroupUserRequest(\n dialog_id=group.id,\n userids=[999]\n))\n```\n\n## API \u65b9\u6cd5\u5217\u8868\n\n### \u57fa\u7840\u65b9\u6cd5\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `DooTaskClient` | \u521b\u5efa\u5ba2\u6237\u7aef\u5b9e\u4f8b | `token, server, timeout` | `DooTaskClient` |\n\n### \u7528\u6237\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `get_user_info` | \u83b7\u53d6\u7528\u6237\u4fe1\u606f | `no_cache: bool = False` | `UserInfo` |\n| `check_user_identity` | \u68c0\u67e5\u7528\u6237\u8eab\u4efd | `identity: str` | `UserInfo` |\n| `get_user_departments` | \u83b7\u53d6\u7528\u6237\u90e8\u95e8\u4fe1\u606f | - | `List[Department]` |\n| `get_users_basic` | \u83b7\u53d6\u591a\u4e2a\u7528\u6237\u57fa\u7840\u4fe1\u606f | `userids: List[int]` | `List[UserBasic]` |\n| `get_user_basic` | \u83b7\u53d6\u5355\u4e2a\u7528\u6237\u57fa\u7840\u4fe1\u606f | `userid: int` | `UserBasic` |\n\n### \u673a\u5668\u4eba\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `get_bot_list` | \u83b7\u53d6\u673a\u5668\u4eba\u5217\u8868 | - | `BotListResponse` |\n| `get_bot` | \u83b7\u53d6\u673a\u5668\u4eba\u4fe1\u606f | `GetBotRequest` | `Bot` |\n| `create_bot` | \u521b\u5efa\u673a\u5668\u4eba | `CreateBotRequest` | `Bot` |\n| `update_bot` | \u66f4\u65b0\u673a\u5668\u4eba | `EditBotRequest` | `Bot` |\n| `delete_bot` | \u5220\u9664\u673a\u5668\u4eba | `DeleteBotRequest` | `None` |\n\n### \u6d88\u606f\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `send_message` | \u53d1\u9001\u6d88\u606f | `SendMessageRequest` | `None` |\n| `send_message_to_user` | \u53d1\u9001\u6d88\u606f\u5230\u7528\u6237 | `SendMessageToUserRequest` | `None` |\n| `send_bot_message` | \u53d1\u9001\u673a\u5668\u4eba\u6d88\u606f | `SendBotMessageRequest` | `None` |\n| `send_anonymous_message` | \u53d1\u9001\u533f\u540d\u6d88\u606f | `SendAnonymousMessageRequest` | `None` |\n| `get_message_list` | \u83b7\u53d6\u6d88\u606f\u5217\u8868 | `GetMessageListRequest` | `DialogMessageListResponse` |\n| `search_message` | \u641c\u7d22\u6d88\u606f | `SearchMessageRequest` | `DialogMessageSearchResponse` |\n| `get_message` | \u83b7\u53d6\u5355\u4e2a\u6d88\u606f\u8be6\u60c5 | `GetMessageRequest` | `DialogMessage` |\n| `get_message_detail` | \u83b7\u53d6\u6d88\u606f\u8be6\u60c5\uff08\u517c\u5bb9\u6027\uff09 | `GetMessageRequest` | `DialogMessage` |\n| `withdraw_message` | \u64a4\u56de\u6d88\u606f | `WithdrawMessageRequest` | `None` |\n| `forward_message` | \u8f6c\u53d1\u6d88\u606f | `ForwardMessageRequest` | `None` |\n| `toggle_message_todo` | \u5207\u6362\u6d88\u606f\u5f85\u529e\u72b6\u6001 | `ToggleMessageTodoRequest` | `None` |\n| `get_message_todo_list` | \u83b7\u53d6\u6d88\u606f\u5f85\u529e\u5217\u8868 | `GetMessageRequest` | `TodoListResponse` |\n| `mark_message_done` | \u6807\u8bb0\u6d88\u606f\u5b8c\u6210 | `MarkMessageDoneRequest` | `None` |\n\n### \u5bf9\u8bdd\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `get_dialog_list` | \u83b7\u53d6\u5bf9\u8bdd\u5217\u8868 | `TimeRangeRequest` | `ResponsePaginate[DialogInfo]` |\n| `search_dialog` | \u641c\u7d22\u4f1a\u8bdd | `SearchDialogRequest` | `List[DialogInfo]` |\n| `get_dialog_one` | \u83b7\u53d6\u5355\u4e2a\u4f1a\u8bdd\u4fe1\u606f | `GetDialogRequest` | `DialogInfo` |\n| `get_dialog_user` | \u83b7\u53d6\u4f1a\u8bdd\u6210\u5458 | `GetDialogUserRequest` | `List[DialogMember]` |\n\n### \u7fa4\u7ec4\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `create_group` | \u521b\u5efa\u7fa4\u7ec4 | `CreateGroupRequest` | `DialogInfo` |\n| `edit_group` | \u4fee\u6539\u7fa4\u7ec4 | `EditGroupRequest` | `None` |\n| `add_group_user` | \u6dfb\u52a0\u7fa4\u6210\u5458 | `AddGroupUserRequest` | `None` |\n| `remove_group_user` | \u79fb\u9664\u7fa4\u6210\u5458 | `RemoveGroupUserRequest` | `None` |\n| `exit_group` | \u9000\u51fa\u7fa4\u7ec4 | `dialog_id: int` | `None` |\n| `transfer_group` | \u8f6c\u8ba9\u7fa4\u7ec4 | `TransferGroupRequest` | `None` |\n| `disband_group` | \u89e3\u6563\u7fa4\u7ec4 | `DisbandGroupRequest` | `None` |\n\n### \u9879\u76ee\u7ba1\u7406\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `get_project_list` | \u83b7\u53d6\u9879\u76ee\u5217\u8868 | `GetProjectListRequest` | `ResponsePaginate[Project]` |\n| `get_project` | \u83b7\u53d6\u9879\u76ee\u4fe1\u606f | `GetProjectRequest` | `Project` |\n| `create_project` | \u521b\u5efa\u9879\u76ee | `CreateProjectRequest` | `Project` |\n| `update_project` | \u66f4\u65b0\u9879\u76ee | `UpdateProjectRequest` | `Project` |\n| `exit_project` | \u9000\u51fa\u9879\u76ee | `project_id: int` | `None` |\n| `delete_project` | \u5220\u9664\u9879\u76ee | `project_id: int` | `None` |\n\n### \u4efb\u52a1\u5217\u8868\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `get_column_list` | \u83b7\u53d6\u4efb\u52a1\u5217\u8868 | `GetColumnListRequest` | `ResponsePaginate[ProjectColumn]` |\n| `create_column` | \u521b\u5efa\u4efb\u52a1\u5217\u8868 | `CreateColumnRequest` | `ProjectColumn` |\n| `update_column` | \u66f4\u65b0\u4efb\u52a1\u5217\u8868 | `UpdateColumnRequest` | `ProjectColumn` |\n| `delete_column` | \u5220\u9664\u4efb\u52a1\u5217\u8868 | `column_id: int` | `None` |\n\n### \u4efb\u52a1\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `get_task_list` | \u83b7\u53d6\u4efb\u52a1\u5217\u8868 | `GetTaskListRequest` | `ResponsePaginate[ProjectTask]` |\n| `get_task` | \u83b7\u53d6\u4efb\u52a1\u4fe1\u606f | `GetTaskRequest` | `ProjectTask` |\n| `get_task_content` | \u83b7\u53d6\u4efb\u52a1\u5185\u5bb9 | `GetTaskContentRequest` | `TaskContent` |\n| `get_task_files` | \u83b7\u53d6\u4efb\u52a1\u6587\u4ef6\u5217\u8868 | `GetTaskFilesRequest` | `List[TaskFile]` |\n| `create_task` | \u521b\u5efa\u4efb\u52a1 | `CreateTaskRequest` | `ProjectTask` |\n| `create_sub_task` | \u521b\u5efa\u5b50\u4efb\u52a1 | `CreateSubTaskRequest` | `ProjectTask` |\n| `update_task` | \u66f4\u65b0\u4efb\u52a1 | `UpdateTaskRequest` | `ProjectTask` |\n| `create_task_dialog` | \u521b\u5efa\u4efb\u52a1\u5bf9\u8bdd | `CreateTaskDialogRequest` | `CreateTaskDialogResponse` |\n| `archive_task` | \u5f52\u6863\u4efb\u52a1 | `task_id: int, archive_type: str` | `None` |\n| `delete_task` | \u5220\u9664\u4efb\u52a1 | `task_id: int, delete_type: str` | `None` |\n\n### \u7cfb\u7edf\u76f8\u5173\u63a5\u53e3\n\n| \u65b9\u6cd5 | \u63cf\u8ff0 | \u53c2\u6570 | \u8fd4\u56de\u503c |\n|------|------|------|--------|\n| `get_system_settings` | \u83b7\u53d6\u7cfb\u7edf\u8bbe\u7f6e | - | `SystemSettings` |\n| `get_version` | \u83b7\u53d6\u7248\u672c\u4fe1\u606f | - | `VersionInfo` |\n\n## \u4e3b\u8981\u6570\u636e\u7c7b\u578b\n\n### \u57fa\u7840\u7c7b\u578b\n- `Response[T]` - \u57fa\u7840\u54cd\u5e94\u7ed3\u6784\n- `ResponsePaginate[T]` - \u5206\u9875\u54cd\u5e94\u7ed3\u6784\n\n### \u7528\u6237\u76f8\u5173\n- `UserInfo` - \u7528\u6237\u4fe1\u606f\n- `UserBasic` - \u7528\u6237\u57fa\u7840\u4fe1\u606f\n- `Department` - \u90e8\u95e8\u4fe1\u606f\n\n### \u6d88\u606f\u76f8\u5173\n- `SendMessageRequest` - \u53d1\u9001\u6d88\u606f\u8bf7\u6c42\n- `DialogMessage` - \u5bf9\u8bdd\u6d88\u606f\n- `DialogMessageListResponse` - \u6d88\u606f\u5217\u8868\u54cd\u5e94\n- `TodoListResponse` - \u5f85\u529e\u5217\u8868\u54cd\u5e94\n\n### \u5bf9\u8bdd\u76f8\u5173\n- `DialogInfo` - \u5bf9\u8bdd\u4fe1\u606f\n- `DialogMember` - \u5bf9\u8bdd\u6210\u5458\n\n### \u9879\u76ee\u548c\u4efb\u52a1\u76f8\u5173\n- `Project` - \u9879\u76ee\u4fe1\u606f\n- `ProjectColumn` - \u9879\u76ee\u5217\u8868\n- `ProjectTask` - \u9879\u76ee\u4efb\u52a1\n- `TaskFile` - \u4efb\u52a1\u6587\u4ef6\n- `TaskContent` - \u4efb\u52a1\u5185\u5bb9\n\n### \u7cfb\u7edf\u76f8\u5173\n- `SystemSettings` - \u7cfb\u7edf\u8bbe\u7f6e\n- `VersionInfo` - \u7248\u672c\u4fe1\u606f\n\n## \u5f02\u5e38\u5904\u7406\n\n```python\nfrom dootask import (\n DooTaskException,\n DooTaskAPIException,\n DooTaskHTTPException,\n DooTaskAuthException,\n DooTaskPermissionException\n)\n\ntry:\n user = client.get_user_info()\nexcept DooTaskAuthException:\n print(\"\u8ba4\u8bc1\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5 token\")\nexcept DooTaskPermissionException:\n print(\"\u6743\u9650\u4e0d\u8db3\")\nexcept DooTaskAPIException as e:\n print(f\"API \u9519\u8bef: {e}\")\nexcept DooTaskHTTPException as e:\n print(f\"\u7f51\u7edc\u9519\u8bef: {e}\")\nexcept DooTaskException as e:\n print(f\"\u5176\u4ed6\u9519\u8bef: {e}\")\n```\n\n## \u7f13\u5b58\u673a\u5236\n\n\u5ba2\u6237\u7aef\u5185\u7f6e\u7528\u6237\u4fe1\u606f\u7f13\u5b58\u673a\u5236\uff0c\u9ed8\u8ba4\u7f13\u5b58\u65f6\u95f4\u4e3a10\u5206\u949f\uff1a\n\n```python\n# \u5f3a\u5236\u5237\u65b0\u7f13\u5b58\nuser = client.get_user_info(no_cache=True)\n\n# \u4f7f\u7528\u7f13\u5b58\uff08\u9ed8\u8ba4\uff09\nuser = client.get_user_info()\n```\n\n## \u8bb8\u53ef\u8bc1\n\nMIT License \n",
"bugtrack_url": null,
"license": null,
"summary": "DooTask Tools \u5ba2\u6237\u7aef\u5e93",
"version": "0.0.7",
"project_urls": {
"Bug Reports": "https://github.com/dootask/dootask-tools/issues",
"Documentation": "https://github.com/dootask/dootask-tools#readme",
"Homepage": "https://github.com/dootask/dootask-tools",
"Source": "https://github.com/dootask/dootask-tools"
},
"split_keywords": [
"dootask",
"api",
"client",
"chat",
"project",
"management",
"collaboration"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "574f597f770bb4ab0021507eff4ef5485dc1bad63ef090297a0bf6341e47a08b",
"md5": "bb034b72f5cb90c29d58af7884b23184",
"sha256": "7d194bb3bf58348ad6270d6e01d49255c24ca6dbdac56180d020c16d38254934"
},
"downloads": -1,
"filename": "dootask_tools-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bb034b72f5cb90c29d58af7884b23184",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 13904,
"upload_time": "2025-07-24T23:54:33",
"upload_time_iso_8601": "2025-07-24T23:54:33.180113Z",
"url": "https://files.pythonhosted.org/packages/57/4f/597f770bb4ab0021507eff4ef5485dc1bad63ef090297a0bf6341e47a08b/dootask_tools-0.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3ea348de7601d1ac852f830390ffc039b2acc2cd5ff10ac867e69c33c1f07e57",
"md5": "2fec2ccd6337b596548a355084a02f52",
"sha256": "29014e5bf948f6fdeca5a13bd1531baaf1dc3eb338af9b9d7d09930801a3ff81"
},
"downloads": -1,
"filename": "dootask_tools-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "2fec2ccd6337b596548a355084a02f52",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 16031,
"upload_time": "2025-07-24T23:54:34",
"upload_time_iso_8601": "2025-07-24T23:54:34.475856Z",
"url": "https://files.pythonhosted.org/packages/3e/a3/48de7601d1ac852f830390ffc039b2acc2cd5ff10ac867e69c33c1f07e57/dootask_tools-0.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-24 23:54:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dootask",
"github_project": "dootask-tools",
"github_not_found": true,
"lcname": "dootask-tools"
}