ErisPulse 2.4.5.dev3__tar.gz → 2.4.6.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/PKG-INFO +151 -61
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/README.md +150 -60
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/pyproject.toml +1 -1
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/base.py +9 -9
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/cli.py +61 -54
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/cli.pyi +2 -0
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/commands/create.py +584 -0
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/commands/create.pyi +43 -0
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/commands/init.py +378 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/init.pyi +7 -33
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/commands/install.py +303 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/install.pyi +2 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/list.py +54 -60
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/list.pyi +0 -13
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/commands/list_remote.py +84 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/list_remote.pyi +2 -7
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/run.py +45 -29
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/commands/self_update.py +219 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/self_update.pyi +6 -15
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/commands/uninstall.py +84 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/uninstall.pyi +2 -4
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/upgrade.py +8 -20
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/console.py +25 -23
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/registry.py +17 -17
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/utils/__init__.py +3 -1
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/utils/__init__.pyi +1 -0
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/utils/display.py +207 -0
- erispulse-2.4.6.dev1/src/ErisPulse/CLI/utils/display.pyi +45 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/utils/package_manager.py +226 -110
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/utils/package_manager.pyi +1 -1
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/__init__.py +5 -4
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/__init__.pyi +2 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/adapter.py +274 -26
- erispulse-2.4.6.dev1/src/ErisPulse/Core/Bases/adapter.pyi +354 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/storage.py +5 -4
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/__init__.py +4 -6
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/base.py +17 -7
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/base.pyi +3 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/command.py +47 -11
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/meta.py +2 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/request.py +2 -1
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/request.pyi +2 -1
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/wrapper.py +145 -13
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/wrapper.pyi +58 -0
- erispulse-2.4.6.dev1/src/ErisPulse/Core/__init__.py +47 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/__init__.pyi +3 -4
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/adapter.py +45 -5
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/config.py +46 -294
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/config.pyi +2 -79
- erispulse-2.4.6.dev1/src/ErisPulse/Core/lifecycle.py +377 -0
- erispulse-2.4.6.dev1/src/ErisPulse/Core/lifecycle.pyi +226 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/logger.py +54 -35
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/logger.pyi +7 -6
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/module.py +29 -7
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/router.py +156 -47
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/storage.py +4 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/__init__.py +2 -3
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/__init__.pyi +1 -1
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/__main__.py +5 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/adapter.py +23 -26
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/bases/__init__.py +1 -3
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/bases/finder.py +10 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/module.py +23 -26
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/adapter.py +10 -2
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/bases/__init__.py +1 -3
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/module.py +33 -15
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/runtime/__init__.py +15 -16
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/runtime/exceptions.py +33 -20
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/runtime/frame_config.py +63 -58
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/sdk.py +267 -204
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/sdk.pyi +0 -28
- erispulse-2.4.5.dev3/src/ErisPulse/CLI/commands/init.py +0 -493
- erispulse-2.4.5.dev3/src/ErisPulse/CLI/commands/install.py +0 -405
- erispulse-2.4.5.dev3/src/ErisPulse/CLI/commands/list_remote.py +0 -101
- erispulse-2.4.5.dev3/src/ErisPulse/CLI/commands/self_update.py +0 -227
- erispulse-2.4.5.dev3/src/ErisPulse/CLI/commands/uninstall.py +0 -120
- erispulse-2.4.5.dev3/src/ErisPulse/Core/Bases/adapter.pyi +0 -182
- erispulse-2.4.5.dev3/src/ErisPulse/Core/__init__.py +0 -58
- erispulse-2.4.5.dev3/src/ErisPulse/Core/lifecycle.py +0 -212
- erispulse-2.4.5.dev3/src/ErisPulse/Core/lifecycle.pyi +0 -99
- erispulse-2.4.5.dev3/src/ErisPulse/Core/metrics.py +0 -489
- erispulse-2.4.5.dev3/src/ErisPulse/Core/metrics.pyi +0 -302
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/.gitignore +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/LICENSE +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/__init__.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/base.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/__init__.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/run.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/console.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/CLI/registry.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/manager.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/module.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/module.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/command.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/message.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/message_builder.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/meta.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/notice.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/session_type.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/adapter.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/module.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/router.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/Core/storage.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/__main__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/__init__.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/adapter.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/bases/finder.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/finders/module.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/__init__.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/adapter.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/bases/loader.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/bases/loader.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/module.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/strategy.py +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/loaders/strategy.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/runtime/__init__.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/runtime/exceptions.pyi +0 -0
- {erispulse-2.4.5.dev3 → erispulse-2.4.6.dev1}/src/ErisPulse/runtime/frame_config.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ErisPulse
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.6.dev1
|
|
4
4
|
Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
|
|
5
5
|
Author-email: ErisDev <erisdev@88.com>
|
|
6
6
|
Maintainer-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
|
|
@@ -70,28 +70,36 @@ Requires-Dist: pytest-xdist>=3.0.0; extra == 'test'
|
|
|
70
70
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
71
71
|
Description-Content-Type: text/markdown
|
|
72
72
|
|
|
73
|
-
<div align="center">
|
|
74
|
-
|
|
75
|
-
[English](README.en.md) | [简体中文](README.md) | [繁體中文](README.zh-TW.md)
|
|
76
|
-
|
|
77
|
-
</div>
|
|
78
|
-
|
|
79
73
|
<table>
|
|
80
74
|
<tr>
|
|
81
75
|
<td width="35%" valign="middle" align="center">
|
|
82
|
-
|
|
76
|
+
|
|
77
|
+
<img src=".github/assets/mascot-hero.png" width="320" alt="ErisPulse" />
|
|
78
|
+
|
|
83
79
|
</td>
|
|
84
|
-
<td
|
|
80
|
+
<td valign="middle">
|
|
81
|
+
|
|
82
|
+
[English](README.en.md) | **简体中文** | [繁體中文](README.zh-TW.md)
|
|
85
83
|
|
|
86
84
|
# ErisPulse
|
|
87
85
|
|
|
88
86
|
**事件驱动的多平台机器人开发框架**
|
|
89
87
|
|
|
88
|
+
基于 OneBot12 标准接口,一次编写,多平台部署。灵活的插件系统、热重载支持和完整的开发者工具链,适用于从简单聊天机器人到复杂自动化系统的各种场景。
|
|
89
|
+
|
|
90
|
+
> 支持 Vibe Coding 工作流,让 AI 直接生成可用模块 — [查看](docs/zh-CN/ai-support/README.md)
|
|
91
|
+
|
|
90
92
|
[](https://pypi.org/project/ErisPulse/)
|
|
91
|
-
[](https://hub.docker.com/r/erispulse/erispulse)
|
|
92
93
|
[](https://pypi.org/project/ErisPulse/)
|
|
94
|
+
[](https://hub.docker.com/r/erispulse/erispulse)
|
|
95
|
+
[](https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE)
|
|
96
|
+
[](https://github.com/ErisPulse/ErisPulse)
|
|
97
|
+
[](https://pypi.org/project/ErisPulse/)
|
|
93
98
|
[](https://github.com/astral-sh/ruff)
|
|
94
|
-
|
|
99
|
+
|
|
100
|
+
[](https://www.erisdev.com)
|
|
101
|
+
[](https://www.erisdev.com/#market)
|
|
102
|
+
[](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
95
103
|
|
|
96
104
|
</td>
|
|
97
105
|
</tr>
|
|
@@ -99,19 +107,65 @@ Description-Content-Type: text/markdown
|
|
|
99
107
|
|
|
100
108
|
---
|
|
101
109
|
|
|
102
|
-
|
|
110
|
+
<div align="center">
|
|
111
|
+
|
|
112
|
+
### 核心特性
|
|
113
|
+
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
<table>
|
|
117
|
+
<tr>
|
|
118
|
+
<td width="50%" align="center" valign="top">
|
|
119
|
+
<br/>
|
|
120
|
+
|
|
121
|
+
### 事件驱动架构
|
|
122
|
+
|
|
123
|
+
基于 OneBot12 标准的清晰事件模型,让消息处理逻辑更加直观和高效
|
|
124
|
+
|
|
125
|
+
</td>
|
|
126
|
+
<td width="50%" align="center" valign="top">
|
|
127
|
+
<br/>
|
|
103
128
|
|
|
104
|
-
|
|
129
|
+
### 跨平台兼容
|
|
105
130
|
|
|
106
|
-
|
|
131
|
+
插件模块编写一次即可在所有平台使用,无需为不同平台重复开发
|
|
132
|
+
|
|
133
|
+
</td>
|
|
134
|
+
</tr>
|
|
135
|
+
<tr>
|
|
136
|
+
<td width="50%" align="center" valign="top">
|
|
137
|
+
<br/>
|
|
138
|
+
|
|
139
|
+
### 模块化设计
|
|
140
|
+
|
|
141
|
+
灵活的插件系统,易于扩展和集成,支持热插拔模块管理
|
|
142
|
+
|
|
143
|
+
</td>
|
|
144
|
+
<td width="50%" align="center" valign="top">
|
|
145
|
+
<br/>
|
|
146
|
+
|
|
147
|
+
### 热重载支持
|
|
148
|
+
|
|
149
|
+
开发时无需重启即可重新加载代码,大幅提升开发迭代效率
|
|
150
|
+
|
|
151
|
+
</td>
|
|
152
|
+
</tr>
|
|
153
|
+
</table>
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### 支持的适配器
|
|
158
|
+
|
|
159
|
+
<div align="center">
|
|
160
|
+
|
|
161
|
+
<table>
|
|
162
|
+
<tr>
|
|
163
|
+
<td width="35%" valign="middle" align="center">
|
|
107
164
|
|
|
108
|
-
|
|
109
|
-
- **跨平台兼容** - 插件模块编写一次即可在所有平台使用
|
|
110
|
-
- **模块化设计** - 灵活的插件系统,易于扩展和集成
|
|
111
|
-
- **热重载支持** - 开发时无需重启即可重新加载代码
|
|
112
|
-
- **完整工具链** - 提供 CLI 工具、包管理和自动化脚本
|
|
165
|
+
<img src=".github/assets/adapter-showcase.png" width="320" alt="支持的适配器" />
|
|
113
166
|
|
|
114
|
-
|
|
167
|
+
</td>
|
|
168
|
+
<td valign="middle">
|
|
115
169
|
|
|
116
170
|
欢迎您贡献适配器!
|
|
117
171
|
|
|
@@ -129,11 +183,19 @@ ErisPulse 是一个基于 Python 的事件驱动型多平台机器人开发框
|
|
|
129
183
|
| [云湖用户](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | 基于云湖用户协议的接入适配器 |
|
|
130
184
|
| [花枫咖啡馆](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
131
185
|
|
|
132
|
-
查看 [
|
|
186
|
+
查看 [适配器详情维护文档](docs/zh-CN/platform-guide/README.md)
|
|
187
|
+
|
|
188
|
+
</td>
|
|
189
|
+
</tr>
|
|
190
|
+
</table>
|
|
191
|
+
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
---
|
|
133
195
|
|
|
134
|
-
|
|
196
|
+
### 快速开始
|
|
135
197
|
|
|
136
|
-
|
|
198
|
+
#### 使用 Docker (推荐)
|
|
137
199
|
|
|
138
200
|
```bash
|
|
139
201
|
docker pull erispulse/erispulse:latest
|
|
@@ -214,7 +276,7 @@ docker pull erispulse/erispulse:dev
|
|
|
214
276
|
|
|
215
277
|
</details>
|
|
216
278
|
|
|
217
|
-
|
|
279
|
+
#### 1Panel 应用商店
|
|
218
280
|
|
|
219
281
|
通过 [1Panel](https://1panel.cn) 应用商店一键安装 ErisPulse,详见 [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel)。
|
|
220
282
|
|
|
@@ -222,23 +284,47 @@ docker pull erispulse/erispulse:dev
|
|
|
222
284
|
bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
223
285
|
```
|
|
224
286
|
|
|
225
|
-
|
|
287
|
+
#### 使用 pip 安装
|
|
226
288
|
|
|
227
289
|
```bash
|
|
228
290
|
pip install ErisPulse
|
|
229
|
-
|
|
230
|
-
# 国内镜像
|
|
231
|
-
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ErisPulse
|
|
232
|
-
|
|
233
|
-
# 使用 uv 安装
|
|
234
|
-
uv pip install ErisPulse
|
|
235
291
|
```
|
|
236
292
|
|
|
237
|
-
|
|
293
|
+
<img src=".github/assets/docs/install_pip.gif" width="480" alt="安装演示" />
|
|
238
294
|
|
|
239
295
|
> 如果您的 Python 版本低于 3.10,可以使用一键安装脚本自动配置环境。详见 [安装脚本说明](scripts/install/)。
|
|
240
296
|
|
|
241
|
-
|
|
297
|
+
#### 运行效果
|
|
298
|
+
|
|
299
|
+
同一段代码,多个平台响应:
|
|
300
|
+
|
|
301
|
+
<table>
|
|
302
|
+
<tr>
|
|
303
|
+
<td align="center" width="33%">
|
|
304
|
+
|
|
305
|
+
**Kook**
|
|
306
|
+
|
|
307
|
+
<img src=".github/assets/demo-kook.png" alt="Kook 演示" />
|
|
308
|
+
|
|
309
|
+
</td>
|
|
310
|
+
<td align="center" width="33%">
|
|
311
|
+
|
|
312
|
+
**QQ**
|
|
313
|
+
|
|
314
|
+
<img src=".github/assets/demo-qq.png" alt="QQ 演示" />
|
|
315
|
+
|
|
316
|
+
</td>
|
|
317
|
+
<td align="center" width="33%">
|
|
318
|
+
|
|
319
|
+
**云湖**
|
|
320
|
+
|
|
321
|
+
<img src=".github/assets/demo-yunhu.png" alt="云湖 演示" />
|
|
322
|
+
|
|
323
|
+
</td>
|
|
324
|
+
</tr>
|
|
325
|
+
</table>
|
|
326
|
+
|
|
327
|
+
#### 初始化项目
|
|
242
328
|
|
|
243
329
|
```bash
|
|
244
330
|
# 交互式初始化
|
|
@@ -248,7 +334,7 @@ epsdk init
|
|
|
248
334
|
epsdk init -q -n my_bot
|
|
249
335
|
```
|
|
250
336
|
|
|
251
|
-
|
|
337
|
+
#### 创建第一个机器人
|
|
252
338
|
|
|
253
339
|
创建 `main.py` 文件:
|
|
254
340
|
|
|
@@ -309,48 +395,52 @@ epsdk run main.py --reload
|
|
|
309
395
|
- [快速开始指南](docs/zh-CN/quick-start.md)
|
|
310
396
|
- [入门指南](docs/zh-CN/getting-started/)
|
|
311
397
|
|
|
312
|
-
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
### 应用场景
|
|
401
|
+
|
|
402
|
+
<div align="center">
|
|
313
403
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
- **消息转发** - 跨平台消息同步和转发
|
|
404
|
+
| 多平台机器人 | 聊天助手 | 自动化工具 | 消息转发 |
|
|
405
|
+
|:---:|:---:|:---:|:---:|
|
|
406
|
+
| 在多个平台部署<br>相同功能的机器人 | 接入 AI 聊天模块<br>实现娱乐和交互 | 消息通知、任务管理<br>数据收集 | 跨平台消息<br>同步和转发 |
|
|
318
407
|
|
|
319
|
-
|
|
408
|
+
</div>
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
### 文档与资源
|
|
320
413
|
|
|
321
414
|
| 简体中文 | English | 繁體中文 |
|
|
322
|
-
|
|
415
|
+
|:---:|:---:|:---:|
|
|
323
416
|
| [文档入口](docs/zh-CN/README.md) | [Documentation](docs/en/README.md) | [文檔入口](docs/zh-TW/README.md) |
|
|
324
417
|
|
|
325
|
-
## 外部资源
|
|
326
|
-
|
|
327
418
|
| 平台 | 主站点 | 备用站点 |
|
|
328
419
|
|------|--------|---------|
|
|
329
|
-
| 文档 | [erisdev.com](https://www.erisdev.com/#docs) | [Cloudflare](https://erispulse.pages.dev/#docs)
|
|
330
|
-
| 模块市场 | [erisdev.com](https://www.erisdev.com/#market) | [Cloudflare](https://erispulse.pages.dev/#market)
|
|
420
|
+
| 文档 | [erisdev.com](https://www.erisdev.com/#docs) | [Cloudflare](https://erispulse.pages.dev/#docs) · [GitHub](https://erispulse.github.io/#docs) · [Netlify](https://erispulse.netlify.app/#docs) |
|
|
421
|
+
| 模块市场 | [erisdev.com](https://www.erisdev.com/#market) | [Cloudflare](https://erispulse.pages.dev/#market) · [GitHub](https://erispulse.github.io/#market) · [Netlify](https://erispulse.netlify.app/#market) |
|
|
331
422
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
ErisPulse 项目的健全性还需要您的一份力!我们欢迎各种形式的贡献,包括但不限于:
|
|
335
|
-
|
|
336
|
-
1. **报告问题**
|
|
337
|
-
在 [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues) 提交 bug 报告
|
|
423
|
+
---
|
|
338
424
|
|
|
339
|
-
|
|
340
|
-
通过 [社区讨论](https://github.com/ErisPulse/ErisPulse/discussions) 提出新想法
|
|
425
|
+
### 贡献指南
|
|
341
426
|
|
|
342
|
-
|
|
343
|
-
提交 Pull Request 前请阅读我们的 [代码风格](docs/zh-CN/styleguide/) 以及 [贡献指南](CONTRIBUTING.md)
|
|
427
|
+
ErisPulse 项目的健全性还需要您的一份力!我们欢迎各种形式的贡献:
|
|
344
428
|
|
|
345
|
-
|
|
346
|
-
|
|
429
|
+
1. **报告问题** — 在 [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues) 提交 bug 报告
|
|
430
|
+
2. **功能请求** — 通过 [社区讨论](https://github.com/ErisPulse/ErisPulse/discussions) 提出新想法
|
|
431
|
+
3. **代码贡献** — 提交 PR 前请阅读 [代码风格](docs/zh-CN/styleguide/) 及 [贡献指南](CONTRIBUTING.md)
|
|
432
|
+
4. **文档改进** — 帮助完善文档和示例代码
|
|
347
433
|
|
|
348
434
|
[加入社区讨论](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
349
435
|
|
|
350
436
|
---
|
|
351
437
|
|
|
352
|
-
|
|
438
|
+
<div align="center">
|
|
439
|
+
|
|
440
|
+
### 致谢
|
|
441
|
+
|
|
442
|
+
<img src=".github/assets/thanks.png" width="200" alt="感谢" />
|
|
353
443
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
444
|
+
本项目部分代码基于 [sdkFrame](https://github.com/runoneall/sdkFrame) · 核心适配器标准化层基于 [OneBot12 规范](https://12.onebot.dev/) · 感谢所有为开源社区做出贡献的开发者和作者
|
|
445
|
+
|
|
446
|
+
</div>
|
|
@@ -1,25 +1,33 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
[English](README.en.md) | [简体中文](README.md) | [繁體中文](README.zh-TW.md)
|
|
4
|
-
|
|
5
|
-
</div>
|
|
6
|
-
|
|
7
1
|
<table>
|
|
8
2
|
<tr>
|
|
9
3
|
<td width="35%" valign="middle" align="center">
|
|
10
|
-
|
|
4
|
+
|
|
5
|
+
<img src=".github/assets/mascot-hero.png" width="320" alt="ErisPulse" />
|
|
6
|
+
|
|
11
7
|
</td>
|
|
12
|
-
<td
|
|
8
|
+
<td valign="middle">
|
|
9
|
+
|
|
10
|
+
[English](README.en.md) | **简体中文** | [繁體中文](README.zh-TW.md)
|
|
13
11
|
|
|
14
12
|
# ErisPulse
|
|
15
13
|
|
|
16
14
|
**事件驱动的多平台机器人开发框架**
|
|
17
15
|
|
|
16
|
+
基于 OneBot12 标准接口,一次编写,多平台部署。灵活的插件系统、热重载支持和完整的开发者工具链,适用于从简单聊天机器人到复杂自动化系统的各种场景。
|
|
17
|
+
|
|
18
|
+
> 支持 Vibe Coding 工作流,让 AI 直接生成可用模块 — [查看](docs/zh-CN/ai-support/README.md)
|
|
19
|
+
|
|
18
20
|
[](https://pypi.org/project/ErisPulse/)
|
|
19
|
-
[](https://hub.docker.com/r/erispulse/erispulse)
|
|
20
21
|
[](https://pypi.org/project/ErisPulse/)
|
|
22
|
+
[](https://hub.docker.com/r/erispulse/erispulse)
|
|
23
|
+
[](https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE)
|
|
24
|
+
[](https://github.com/ErisPulse/ErisPulse)
|
|
25
|
+
[](https://pypi.org/project/ErisPulse/)
|
|
21
26
|
[](https://github.com/astral-sh/ruff)
|
|
22
|
-
|
|
27
|
+
|
|
28
|
+
[](https://www.erisdev.com)
|
|
29
|
+
[](https://www.erisdev.com/#market)
|
|
30
|
+
[](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
23
31
|
|
|
24
32
|
</td>
|
|
25
33
|
</tr>
|
|
@@ -27,19 +35,65 @@
|
|
|
27
35
|
|
|
28
36
|
---
|
|
29
37
|
|
|
30
|
-
|
|
38
|
+
<div align="center">
|
|
39
|
+
|
|
40
|
+
### 核心特性
|
|
41
|
+
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<table>
|
|
45
|
+
<tr>
|
|
46
|
+
<td width="50%" align="center" valign="top">
|
|
47
|
+
<br/>
|
|
48
|
+
|
|
49
|
+
### 事件驱动架构
|
|
50
|
+
|
|
51
|
+
基于 OneBot12 标准的清晰事件模型,让消息处理逻辑更加直观和高效
|
|
52
|
+
|
|
53
|
+
</td>
|
|
54
|
+
<td width="50%" align="center" valign="top">
|
|
55
|
+
<br/>
|
|
31
56
|
|
|
32
|
-
|
|
57
|
+
### 跨平台兼容
|
|
33
58
|
|
|
34
|
-
|
|
59
|
+
插件模块编写一次即可在所有平台使用,无需为不同平台重复开发
|
|
60
|
+
|
|
61
|
+
</td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<td width="50%" align="center" valign="top">
|
|
65
|
+
<br/>
|
|
66
|
+
|
|
67
|
+
### 模块化设计
|
|
68
|
+
|
|
69
|
+
灵活的插件系统,易于扩展和集成,支持热插拔模块管理
|
|
70
|
+
|
|
71
|
+
</td>
|
|
72
|
+
<td width="50%" align="center" valign="top">
|
|
73
|
+
<br/>
|
|
74
|
+
|
|
75
|
+
### 热重载支持
|
|
76
|
+
|
|
77
|
+
开发时无需重启即可重新加载代码,大幅提升开发迭代效率
|
|
78
|
+
|
|
79
|
+
</td>
|
|
80
|
+
</tr>
|
|
81
|
+
</table>
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### 支持的适配器
|
|
86
|
+
|
|
87
|
+
<div align="center">
|
|
88
|
+
|
|
89
|
+
<table>
|
|
90
|
+
<tr>
|
|
91
|
+
<td width="35%" valign="middle" align="center">
|
|
35
92
|
|
|
36
|
-
|
|
37
|
-
- **跨平台兼容** - 插件模块编写一次即可在所有平台使用
|
|
38
|
-
- **模块化设计** - 灵活的插件系统,易于扩展和集成
|
|
39
|
-
- **热重载支持** - 开发时无需重启即可重新加载代码
|
|
40
|
-
- **完整工具链** - 提供 CLI 工具、包管理和自动化脚本
|
|
93
|
+
<img src=".github/assets/adapter-showcase.png" width="320" alt="支持的适配器" />
|
|
41
94
|
|
|
42
|
-
|
|
95
|
+
</td>
|
|
96
|
+
<td valign="middle">
|
|
43
97
|
|
|
44
98
|
欢迎您贡献适配器!
|
|
45
99
|
|
|
@@ -57,11 +111,19 @@ ErisPulse 是一个基于 Python 的事件驱动型多平台机器人开发框
|
|
|
57
111
|
| [云湖用户](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | 基于云湖用户协议的接入适配器 |
|
|
58
112
|
| [花枫咖啡馆](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
59
113
|
|
|
60
|
-
查看 [
|
|
114
|
+
查看 [适配器详情维护文档](docs/zh-CN/platform-guide/README.md)
|
|
115
|
+
|
|
116
|
+
</td>
|
|
117
|
+
</tr>
|
|
118
|
+
</table>
|
|
119
|
+
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
---
|
|
61
123
|
|
|
62
|
-
|
|
124
|
+
### 快速开始
|
|
63
125
|
|
|
64
|
-
|
|
126
|
+
#### 使用 Docker (推荐)
|
|
65
127
|
|
|
66
128
|
```bash
|
|
67
129
|
docker pull erispulse/erispulse:latest
|
|
@@ -142,7 +204,7 @@ docker pull erispulse/erispulse:dev
|
|
|
142
204
|
|
|
143
205
|
</details>
|
|
144
206
|
|
|
145
|
-
|
|
207
|
+
#### 1Panel 应用商店
|
|
146
208
|
|
|
147
209
|
通过 [1Panel](https://1panel.cn) 应用商店一键安装 ErisPulse,详见 [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel)。
|
|
148
210
|
|
|
@@ -150,23 +212,47 @@ docker pull erispulse/erispulse:dev
|
|
|
150
212
|
bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
151
213
|
```
|
|
152
214
|
|
|
153
|
-
|
|
215
|
+
#### 使用 pip 安装
|
|
154
216
|
|
|
155
217
|
```bash
|
|
156
218
|
pip install ErisPulse
|
|
157
|
-
|
|
158
|
-
# 国内镜像
|
|
159
|
-
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ErisPulse
|
|
160
|
-
|
|
161
|
-
# 使用 uv 安装
|
|
162
|
-
uv pip install ErisPulse
|
|
163
219
|
```
|
|
164
220
|
|
|
165
|
-
|
|
221
|
+
<img src=".github/assets/docs/install_pip.gif" width="480" alt="安装演示" />
|
|
166
222
|
|
|
167
223
|
> 如果您的 Python 版本低于 3.10,可以使用一键安装脚本自动配置环境。详见 [安装脚本说明](scripts/install/)。
|
|
168
224
|
|
|
169
|
-
|
|
225
|
+
#### 运行效果
|
|
226
|
+
|
|
227
|
+
同一段代码,多个平台响应:
|
|
228
|
+
|
|
229
|
+
<table>
|
|
230
|
+
<tr>
|
|
231
|
+
<td align="center" width="33%">
|
|
232
|
+
|
|
233
|
+
**Kook**
|
|
234
|
+
|
|
235
|
+
<img src=".github/assets/demo-kook.png" alt="Kook 演示" />
|
|
236
|
+
|
|
237
|
+
</td>
|
|
238
|
+
<td align="center" width="33%">
|
|
239
|
+
|
|
240
|
+
**QQ**
|
|
241
|
+
|
|
242
|
+
<img src=".github/assets/demo-qq.png" alt="QQ 演示" />
|
|
243
|
+
|
|
244
|
+
</td>
|
|
245
|
+
<td align="center" width="33%">
|
|
246
|
+
|
|
247
|
+
**云湖**
|
|
248
|
+
|
|
249
|
+
<img src=".github/assets/demo-yunhu.png" alt="云湖 演示" />
|
|
250
|
+
|
|
251
|
+
</td>
|
|
252
|
+
</tr>
|
|
253
|
+
</table>
|
|
254
|
+
|
|
255
|
+
#### 初始化项目
|
|
170
256
|
|
|
171
257
|
```bash
|
|
172
258
|
# 交互式初始化
|
|
@@ -176,7 +262,7 @@ epsdk init
|
|
|
176
262
|
epsdk init -q -n my_bot
|
|
177
263
|
```
|
|
178
264
|
|
|
179
|
-
|
|
265
|
+
#### 创建第一个机器人
|
|
180
266
|
|
|
181
267
|
创建 `main.py` 文件:
|
|
182
268
|
|
|
@@ -237,48 +323,52 @@ epsdk run main.py --reload
|
|
|
237
323
|
- [快速开始指南](docs/zh-CN/quick-start.md)
|
|
238
324
|
- [入门指南](docs/zh-CN/getting-started/)
|
|
239
325
|
|
|
240
|
-
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### 应用场景
|
|
329
|
+
|
|
330
|
+
<div align="center">
|
|
241
331
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
- **消息转发** - 跨平台消息同步和转发
|
|
332
|
+
| 多平台机器人 | 聊天助手 | 自动化工具 | 消息转发 |
|
|
333
|
+
|:---:|:---:|:---:|:---:|
|
|
334
|
+
| 在多个平台部署<br>相同功能的机器人 | 接入 AI 聊天模块<br>实现娱乐和交互 | 消息通知、任务管理<br>数据收集 | 跨平台消息<br>同步和转发 |
|
|
246
335
|
|
|
247
|
-
|
|
336
|
+
</div>
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
### 文档与资源
|
|
248
341
|
|
|
249
342
|
| 简体中文 | English | 繁體中文 |
|
|
250
|
-
|
|
343
|
+
|:---:|:---:|:---:|
|
|
251
344
|
| [文档入口](docs/zh-CN/README.md) | [Documentation](docs/en/README.md) | [文檔入口](docs/zh-TW/README.md) |
|
|
252
345
|
|
|
253
|
-
## 外部资源
|
|
254
|
-
|
|
255
346
|
| 平台 | 主站点 | 备用站点 |
|
|
256
347
|
|------|--------|---------|
|
|
257
|
-
| 文档 | [erisdev.com](https://www.erisdev.com/#docs) | [Cloudflare](https://erispulse.pages.dev/#docs)
|
|
258
|
-
| 模块市场 | [erisdev.com](https://www.erisdev.com/#market) | [Cloudflare](https://erispulse.pages.dev/#market)
|
|
348
|
+
| 文档 | [erisdev.com](https://www.erisdev.com/#docs) | [Cloudflare](https://erispulse.pages.dev/#docs) · [GitHub](https://erispulse.github.io/#docs) · [Netlify](https://erispulse.netlify.app/#docs) |
|
|
349
|
+
| 模块市场 | [erisdev.com](https://www.erisdev.com/#market) | [Cloudflare](https://erispulse.pages.dev/#market) · [GitHub](https://erispulse.github.io/#market) · [Netlify](https://erispulse.netlify.app/#market) |
|
|
259
350
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
ErisPulse 项目的健全性还需要您的一份力!我们欢迎各种形式的贡献,包括但不限于:
|
|
263
|
-
|
|
264
|
-
1. **报告问题**
|
|
265
|
-
在 [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues) 提交 bug 报告
|
|
351
|
+
---
|
|
266
352
|
|
|
267
|
-
|
|
268
|
-
通过 [社区讨论](https://github.com/ErisPulse/ErisPulse/discussions) 提出新想法
|
|
353
|
+
### 贡献指南
|
|
269
354
|
|
|
270
|
-
|
|
271
|
-
提交 Pull Request 前请阅读我们的 [代码风格](docs/zh-CN/styleguide/) 以及 [贡献指南](CONTRIBUTING.md)
|
|
355
|
+
ErisPulse 项目的健全性还需要您的一份力!我们欢迎各种形式的贡献:
|
|
272
356
|
|
|
273
|
-
|
|
274
|
-
|
|
357
|
+
1. **报告问题** — 在 [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues) 提交 bug 报告
|
|
358
|
+
2. **功能请求** — 通过 [社区讨论](https://github.com/ErisPulse/ErisPulse/discussions) 提出新想法
|
|
359
|
+
3. **代码贡献** — 提交 PR 前请阅读 [代码风格](docs/zh-CN/styleguide/) 及 [贡献指南](CONTRIBUTING.md)
|
|
360
|
+
4. **文档改进** — 帮助完善文档和示例代码
|
|
275
361
|
|
|
276
362
|
[加入社区讨论](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
277
363
|
|
|
278
364
|
---
|
|
279
365
|
|
|
280
|
-
|
|
366
|
+
<div align="center">
|
|
367
|
+
|
|
368
|
+
### 致谢
|
|
369
|
+
|
|
370
|
+
<img src=".github/assets/thanks.png" width="200" alt="感谢" />
|
|
281
371
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
372
|
+
本项目部分代码基于 [sdkFrame](https://github.com/runoneall/sdkFrame) · 核心适配器标准化层基于 [OneBot12 规范](https://12.onebot.dev/) · 感谢所有为开源社区做出贡献的开发者和作者
|
|
373
|
+
|
|
374
|
+
</div>
|
|
@@ -11,42 +11,42 @@ from argparse import ArgumentParser
|
|
|
11
11
|
class Command(ABC):
|
|
12
12
|
"""
|
|
13
13
|
命令基类
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
所有 CLI 命令都应继承此类并实现抽象方法
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
{!--< tips >!--}
|
|
18
18
|
1. 每个命令类必须实现 add_arguments 和 execute 方法
|
|
19
19
|
2. name 和 description 为类属性,必须在子类中定义
|
|
20
20
|
3. execute 方法接收解析后的 args 对象
|
|
21
21
|
{!--< /tips >!--}
|
|
22
22
|
"""
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
name: str = "" # 命令名称
|
|
25
25
|
description: str = "" # 命令描述
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
@abstractmethod
|
|
28
28
|
def add_arguments(self, parser: ArgumentParser):
|
|
29
29
|
"""
|
|
30
30
|
添加命令参数
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
:param parser: ArgumentParser 实例
|
|
33
33
|
"""
|
|
34
34
|
pass
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
@abstractmethod
|
|
37
37
|
def execute(self, args):
|
|
38
38
|
"""
|
|
39
39
|
执行命令
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
:param args: 解析后的参数对象
|
|
42
42
|
"""
|
|
43
43
|
pass
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
@property
|
|
46
46
|
def help(self) -> str:
|
|
47
47
|
"""
|
|
48
48
|
获取帮助信息
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
:return: 命令描述
|
|
51
51
|
"""
|
|
52
52
|
return self.description
|