ErisPulse 2.4.6.dev4__tar.gz → 2.4.6.dev5__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.6.dev4 → erispulse-2.4.6.dev5}/PKG-INFO +64 -27
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/README.md +63 -26
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/pyproject.toml +1 -1
- erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/__init__.py +25 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/__init__.pyi +3 -1
- erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/client.py +227 -0
- erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/client.pyi +193 -0
- erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/router.py +623 -0
- erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/router.pyi +439 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/base.py +44 -5
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/base.pyi +1 -1
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/command.py +30 -6
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/command.pyi +1 -1
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/__init__.py +14 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/__init__.pyi +3 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/adapter.py +43 -6
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/adapter.pyi +1 -0
- erispulse-2.4.6.dev5/src/ErisPulse/Core/client.py +478 -0
- erispulse-2.4.6.dev5/src/ErisPulse/Core/client.pyi +261 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/constants.py +27 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/router.py +265 -41
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/router.pyi +3 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/context.py +19 -1
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/context.pyi +3 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/sdk.py +5 -1
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/sdk.pyi +2 -0
- erispulse-2.4.6.dev4/src/ErisPulse/Core/Bases/__init__.py +0 -18
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/.gitignore +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/LICENSE +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/base.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/base.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/cli.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/cli.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/create.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/create.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/init.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/init.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/install.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/install.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/run.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/run.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/self_update.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/self_update.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/console.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/console.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/registry.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/registry.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/display.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/display.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/package_manager.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/package_manager.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/adapter.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/adapter.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/manager.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/module.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/module.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/storage.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message_builder.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/meta.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/meta.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/notice.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/request.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/request.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/session_type.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/wrapper.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/wrapper.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/config.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/config.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/constants.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/lifecycle.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/lifecycle.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/logger.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/logger.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/module.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/module.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/storage.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/storage.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__main__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/adapter.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/adapter.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/finder.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/finder.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/module.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/module.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/adapter.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/adapter.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/loader.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/loader.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/module.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/module.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/strategy.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/strategy.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/exceptions.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/exceptions.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/frame_config.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/frame_config.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/4xx.png +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/5xx.png +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/__init__.py +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/__init__.pyi +0 -0
- {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/unknow.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ErisPulse
|
|
3
|
-
Version: 2.4.6.
|
|
3
|
+
Version: 2.4.6.dev5
|
|
4
4
|
Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
|
|
5
5
|
Author-email: ErisDev <erisdev@88.com>
|
|
6
6
|
Maintainer-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
|
|
@@ -155,34 +155,40 @@ Description-Content-Type: text/markdown
|
|
|
155
155
|
|
|
156
156
|
---
|
|
157
157
|
|
|
158
|
-
###
|
|
158
|
+
### 快速开始
|
|
159
159
|
|
|
160
|
-
|
|
161
|
-
<!-- <img src=".github/assets/adapter-showcase.png" width="520" alt="适配器展示" /> -->
|
|
160
|
+
#### 一键安装脚本(推荐)
|
|
162
161
|
|
|
163
|
-
|
|
162
|
+
安装脚本会自动检测您的环境(Docker、Python、uv),引导选择最适合的安装方式,支持多语言(中文/English/日本語/Русский/繁體中文)。
|
|
164
163
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) | OneBot v11 通用机器人协议 |
|
|
170
|
-
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) | OneBot v12 标准协议 |
|
|
171
|
-
| <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | QQ 官方机器人平台 |
|
|
172
|
-
| <img src=".github/assets/adapter_logo/sandbox.png" height="20" alt="Sandbox" /> [沙箱](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) | 网页端调试,无需接入真实平台 |
|
|
173
|
-
| <img src=".github/assets/adapter_logo/telegram.svg" height="20" alt="Telegram" /> [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) | 全球性即时通讯平台 |
|
|
174
|
-
| <img src=".github/assets/adapter_logo/email.svg" height="20" alt="Email" /> [邮件](https://github.com/ErisPulse/ErisPulse-EmailAdapter) | 邮件协议收发适配器 |
|
|
175
|
-
| <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [云湖](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) | 企业级即时通讯平台(机器人接入) |
|
|
176
|
-
| [云湖用户](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | 基于云湖用户协议的接入适配器 |
|
|
177
|
-
| [花枫咖啡馆](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
164
|
+
Windows (PowerShell):
|
|
165
|
+
```powershell
|
|
166
|
+
irm https://get.erisdev.com/install.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File install.ps1
|
|
167
|
+
```
|
|
178
168
|
|
|
179
|
-
|
|
169
|
+
macOS / Linux:
|
|
170
|
+
```bash
|
|
171
|
+
curl -fsSL https://get.erisdev.com/install.sh -o install.sh && chmod +x install.sh && ./install.sh
|
|
172
|
+
```
|
|
180
173
|
|
|
181
|
-
|
|
174
|
+
<table>
|
|
175
|
+
<tr>
|
|
176
|
+
<td align="center" width="50%">
|
|
182
177
|
|
|
183
|
-
|
|
178
|
+
**Docker 安装演示**
|
|
184
179
|
|
|
185
|
-
|
|
180
|
+
<video src="https://github.com/user-attachments/assets/a367a466-4678-46a9-b101-073a86388ede" controls width="100%"></video>
|
|
181
|
+
|
|
182
|
+
</td>
|
|
183
|
+
<td align="center" width="50%">
|
|
184
|
+
|
|
185
|
+
**pip 安装演示**
|
|
186
|
+
|
|
187
|
+
<video src="https://github.com/user-attachments/assets/a2df4009-dba6-411e-b79d-4454a168d063" controls width="100%"></video>
|
|
188
|
+
|
|
189
|
+
</td>
|
|
190
|
+
</tr>
|
|
191
|
+
</table>
|
|
186
192
|
|
|
187
193
|
#### 使用 Docker (推荐)
|
|
188
194
|
|
|
@@ -279,19 +285,28 @@ bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
|
279
285
|
pip install ErisPulse
|
|
280
286
|
```
|
|
281
287
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
> 如果您的 Python 版本低于 3.10,可以使用一键安装脚本自动配置环境。详见 [安装脚本说明](scripts/install/)。
|
|
288
|
+
> 也可以使用上方的一键安装脚本,自动检测环境并引导配置。
|
|
285
289
|
|
|
286
290
|
#### 运行效果
|
|
287
291
|
|
|
288
292
|
|
|
289
293
|
##### 仪表盘:
|
|
290
|
-
|
|
291
|
-
>
|
|
294
|
+
|
|
295
|
+
<table>
|
|
296
|
+
<tr>
|
|
297
|
+
<td width="50%">
|
|
292
298
|
|
|
293
299
|
<img src=".github/assets/docs/dashboard.png" alt="Dashboard 演示" />
|
|
294
300
|
|
|
301
|
+
</td>
|
|
302
|
+
<td width="50%">
|
|
303
|
+
|
|
304
|
+
<video src="https://github.com/user-attachments/assets/157191c4-9a84-433c-b311-0c57e3a21151" controls width="100%"></video>
|
|
305
|
+
|
|
306
|
+
</td>
|
|
307
|
+
</tr>
|
|
308
|
+
</table>
|
|
309
|
+
|
|
295
310
|
|
|
296
311
|
##### 同一端代码,多个平台响应:
|
|
297
312
|
|
|
@@ -394,6 +409,28 @@ epsdk run main.py --reload
|
|
|
394
409
|
|
|
395
410
|
---
|
|
396
411
|
|
|
412
|
+
### 支持的适配器
|
|
413
|
+
|
|
414
|
+
欢迎您贡献适配器!
|
|
415
|
+
|
|
416
|
+
| 适配器 | 说明 |
|
|
417
|
+
|--------|------|
|
|
418
|
+
| <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook(开黑啦)即时通讯平台 |
|
|
419
|
+
| <img src=".github/assets/adapter_logo/matrix.svg" height="20" alt="Matrix" /> [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) | Matrix 去中心化通讯协议 |
|
|
420
|
+
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) | OneBot v11 通用机器人协议 |
|
|
421
|
+
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) | OneBot v12 标准协议 |
|
|
422
|
+
| <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | QQ 官方机器人平台 |
|
|
423
|
+
| <img src=".github/assets/adapter_logo/sandbox.png" height="20" alt="Sandbox" /> [沙箱](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) | 网页端调试,无需接入真实平台 |
|
|
424
|
+
| <img src=".github/assets/adapter_logo/telegram.svg" height="20" alt="Telegram" /> [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) | 全球性即时通讯平台 |
|
|
425
|
+
| <img src=".github/assets/adapter_logo/email.svg" height="20" alt="Email" /> [邮件](https://github.com/ErisPulse/ErisPulse-EmailAdapter) | 邮件协议收发适配器 |
|
|
426
|
+
| <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [云湖](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) | 企业级即时通讯平台(机器人接入) |
|
|
427
|
+
| [云湖用户](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | 基于云湖用户协议的接入适配器 |
|
|
428
|
+
| [花枫咖啡馆](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
429
|
+
|
|
430
|
+
查看 [适配器详情介绍](docs/zh-CN/platform-guide/README.md)
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
397
434
|
### 应用场景
|
|
398
435
|
|
|
399
436
|
<div align="center">
|
|
@@ -83,34 +83,40 @@
|
|
|
83
83
|
|
|
84
84
|
---
|
|
85
85
|
|
|
86
|
-
###
|
|
86
|
+
### 快速开始
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
<!-- <img src=".github/assets/adapter-showcase.png" width="520" alt="适配器展示" /> -->
|
|
88
|
+
#### 一键安装脚本(推荐)
|
|
90
89
|
|
|
91
|
-
|
|
90
|
+
安装脚本会自动检测您的环境(Docker、Python、uv),引导选择最适合的安装方式,支持多语言(中文/English/日本語/Русский/繁體中文)。
|
|
92
91
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) | OneBot v11 通用机器人协议 |
|
|
98
|
-
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) | OneBot v12 标准协议 |
|
|
99
|
-
| <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | QQ 官方机器人平台 |
|
|
100
|
-
| <img src=".github/assets/adapter_logo/sandbox.png" height="20" alt="Sandbox" /> [沙箱](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) | 网页端调试,无需接入真实平台 |
|
|
101
|
-
| <img src=".github/assets/adapter_logo/telegram.svg" height="20" alt="Telegram" /> [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) | 全球性即时通讯平台 |
|
|
102
|
-
| <img src=".github/assets/adapter_logo/email.svg" height="20" alt="Email" /> [邮件](https://github.com/ErisPulse/ErisPulse-EmailAdapter) | 邮件协议收发适配器 |
|
|
103
|
-
| <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [云湖](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) | 企业级即时通讯平台(机器人接入) |
|
|
104
|
-
| [云湖用户](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | 基于云湖用户协议的接入适配器 |
|
|
105
|
-
| [花枫咖啡馆](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
92
|
+
Windows (PowerShell):
|
|
93
|
+
```powershell
|
|
94
|
+
irm https://get.erisdev.com/install.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File install.ps1
|
|
95
|
+
```
|
|
106
96
|
|
|
107
|
-
|
|
97
|
+
macOS / Linux:
|
|
98
|
+
```bash
|
|
99
|
+
curl -fsSL https://get.erisdev.com/install.sh -o install.sh && chmod +x install.sh && ./install.sh
|
|
100
|
+
```
|
|
108
101
|
|
|
109
|
-
|
|
102
|
+
<table>
|
|
103
|
+
<tr>
|
|
104
|
+
<td align="center" width="50%">
|
|
110
105
|
|
|
111
|
-
|
|
106
|
+
**Docker 安装演示**
|
|
112
107
|
|
|
113
|
-
|
|
108
|
+
<video src="https://github.com/user-attachments/assets/a367a466-4678-46a9-b101-073a86388ede" controls width="100%"></video>
|
|
109
|
+
|
|
110
|
+
</td>
|
|
111
|
+
<td align="center" width="50%">
|
|
112
|
+
|
|
113
|
+
**pip 安装演示**
|
|
114
|
+
|
|
115
|
+
<video src="https://github.com/user-attachments/assets/a2df4009-dba6-411e-b79d-4454a168d063" controls width="100%"></video>
|
|
116
|
+
|
|
117
|
+
</td>
|
|
118
|
+
</tr>
|
|
119
|
+
</table>
|
|
114
120
|
|
|
115
121
|
#### 使用 Docker (推荐)
|
|
116
122
|
|
|
@@ -207,19 +213,28 @@ bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
|
207
213
|
pip install ErisPulse
|
|
208
214
|
```
|
|
209
215
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
> 如果您的 Python 版本低于 3.10,可以使用一键安装脚本自动配置环境。详见 [安装脚本说明](scripts/install/)。
|
|
216
|
+
> 也可以使用上方的一键安装脚本,自动检测环境并引导配置。
|
|
213
217
|
|
|
214
218
|
#### 运行效果
|
|
215
219
|
|
|
216
220
|
|
|
217
221
|
##### 仪表盘:
|
|
218
|
-
|
|
219
|
-
>
|
|
222
|
+
|
|
223
|
+
<table>
|
|
224
|
+
<tr>
|
|
225
|
+
<td width="50%">
|
|
220
226
|
|
|
221
227
|
<img src=".github/assets/docs/dashboard.png" alt="Dashboard 演示" />
|
|
222
228
|
|
|
229
|
+
</td>
|
|
230
|
+
<td width="50%">
|
|
231
|
+
|
|
232
|
+
<video src="https://github.com/user-attachments/assets/157191c4-9a84-433c-b311-0c57e3a21151" controls width="100%"></video>
|
|
233
|
+
|
|
234
|
+
</td>
|
|
235
|
+
</tr>
|
|
236
|
+
</table>
|
|
237
|
+
|
|
223
238
|
|
|
224
239
|
##### 同一端代码,多个平台响应:
|
|
225
240
|
|
|
@@ -322,6 +337,28 @@ epsdk run main.py --reload
|
|
|
322
337
|
|
|
323
338
|
---
|
|
324
339
|
|
|
340
|
+
### 支持的适配器
|
|
341
|
+
|
|
342
|
+
欢迎您贡献适配器!
|
|
343
|
+
|
|
344
|
+
| 适配器 | 说明 |
|
|
345
|
+
|--------|------|
|
|
346
|
+
| <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook(开黑啦)即时通讯平台 |
|
|
347
|
+
| <img src=".github/assets/adapter_logo/matrix.svg" height="20" alt="Matrix" /> [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) | Matrix 去中心化通讯协议 |
|
|
348
|
+
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) | OneBot v11 通用机器人协议 |
|
|
349
|
+
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) | OneBot v12 标准协议 |
|
|
350
|
+
| <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | QQ 官方机器人平台 |
|
|
351
|
+
| <img src=".github/assets/adapter_logo/sandbox.png" height="20" alt="Sandbox" /> [沙箱](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) | 网页端调试,无需接入真实平台 |
|
|
352
|
+
| <img src=".github/assets/adapter_logo/telegram.svg" height="20" alt="Telegram" /> [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) | 全球性即时通讯平台 |
|
|
353
|
+
| <img src=".github/assets/adapter_logo/email.svg" height="20" alt="Email" /> [邮件](https://github.com/ErisPulse/ErisPulse-EmailAdapter) | 邮件协议收发适配器 |
|
|
354
|
+
| <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [云湖](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) | 企业级即时通讯平台(机器人接入) |
|
|
355
|
+
| [云湖用户](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | 基于云湖用户协议的接入适配器 |
|
|
356
|
+
| [花枫咖啡馆](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
357
|
+
|
|
358
|
+
查看 [适配器详情介绍](docs/zh-CN/platform-guide/README.md)
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
325
362
|
### 应用场景
|
|
326
363
|
|
|
327
364
|
<div align="center">
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ErisPulse 基础模块
|
|
3
|
+
|
|
4
|
+
提供平台适配器、模块、存储后端、路由和客户端的基类与抽象接口
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .adapter import SendDSL, RequestDSL, BaseAdapter
|
|
8
|
+
from .module import BaseModule
|
|
9
|
+
from .storage import BaseStorage, BaseQueryBuilder
|
|
10
|
+
from .router import HttpRequest, WebSocketConnection, WebSocketDisconnect
|
|
11
|
+
from .client import BaseHttpClient, BaseHttpResponse
|
|
12
|
+
|
|
13
|
+
__all__ = [
|
|
14
|
+
"BaseAdapter",
|
|
15
|
+
"SendDSL",
|
|
16
|
+
"RequestDSL",
|
|
17
|
+
"BaseModule",
|
|
18
|
+
"BaseStorage",
|
|
19
|
+
"BaseQueryBuilder",
|
|
20
|
+
"HttpRequest",
|
|
21
|
+
"WebSocketConnection",
|
|
22
|
+
"WebSocketDisconnect",
|
|
23
|
+
"BaseHttpClient",
|
|
24
|
+
"BaseHttpResponse",
|
|
25
|
+
]
|
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
"""
|
|
8
8
|
ErisPulse 基础模块
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
提供平台适配器、模块、存储后端、路由和客户端的基类与抽象接口
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from .adapter import SendDSL, RequestDSL, BaseAdapter
|
|
14
14
|
from .module import BaseModule
|
|
15
15
|
from .storage import BaseStorage, BaseQueryBuilder
|
|
16
|
+
from .router import HttpRequest, WebSocketConnection, WebSocketDisconnect
|
|
17
|
+
from .client import BaseHttpClient, BaseHttpResponse
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ErisPulse HTTP 客户端抽象基类
|
|
3
|
+
|
|
4
|
+
定义 HTTP 客户端和响应的抽象接口,使模块和适配器无需直接依赖 aiohttp。
|
|
5
|
+
具体实现由 Core.client 模块提供(基于 aiohttp)。
|
|
6
|
+
|
|
7
|
+
{!--< tips >!--}
|
|
8
|
+
1. 支持 get / post / put / delete / patch / request 等常用方法
|
|
9
|
+
2. 自动记录请求日志和统计信息
|
|
10
|
+
3. 推荐所有模块和适配器使用此客户端发送 HTTP 请求
|
|
11
|
+
{!--< /tips >!--}
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import Any
|
|
17
|
+
from collections.abc import Callable
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BaseHttpResponse:
|
|
21
|
+
"""
|
|
22
|
+
HTTP 响应抽象基类
|
|
23
|
+
|
|
24
|
+
定义统一的响应访问接口,具体实现由 Core.client.HttpResponse 提供。
|
|
25
|
+
|
|
26
|
+
{!--< tips >!--}
|
|
27
|
+
通过 .raw 属性可访问底层原生响应对象
|
|
28
|
+
{!--< /tips >!--}
|
|
29
|
+
|
|
30
|
+
:example:
|
|
31
|
+
>>> resp = await sdk.client.get("https://httpbin.org/get")
|
|
32
|
+
>>> print(resp.status)
|
|
33
|
+
>>> data = await resp.json()
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def status(self) -> int:
|
|
38
|
+
"""
|
|
39
|
+
HTTP 状态码
|
|
40
|
+
|
|
41
|
+
:return: int 状态码 (如 200, 404)
|
|
42
|
+
"""
|
|
43
|
+
raise NotImplementedError
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def reason(self) -> str | None:
|
|
47
|
+
"""
|
|
48
|
+
状态描述
|
|
49
|
+
|
|
50
|
+
:return: str | None 状态原因短语
|
|
51
|
+
"""
|
|
52
|
+
raise NotImplementedError
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def headers(self):
|
|
56
|
+
"""
|
|
57
|
+
响应头
|
|
58
|
+
|
|
59
|
+
:return: object 大小写不敏感的响应头映射
|
|
60
|
+
"""
|
|
61
|
+
raise NotImplementedError
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def content_type(self) -> str | None:
|
|
65
|
+
"""
|
|
66
|
+
Content-Type 值
|
|
67
|
+
|
|
68
|
+
:return: str | None 内容类型
|
|
69
|
+
"""
|
|
70
|
+
raise NotImplementedError
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def url(self):
|
|
74
|
+
"""
|
|
75
|
+
响应 URL (可能因重定向而与请求 URL 不同)
|
|
76
|
+
|
|
77
|
+
:return: object URL 对象
|
|
78
|
+
"""
|
|
79
|
+
raise NotImplementedError
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def raw(self):
|
|
83
|
+
"""
|
|
84
|
+
底层框架原生 Response 对象
|
|
85
|
+
|
|
86
|
+
:return: object 原生响应实例
|
|
87
|
+
"""
|
|
88
|
+
raise NotImplementedError
|
|
89
|
+
|
|
90
|
+
async def read(self) -> bytes:
|
|
91
|
+
"""
|
|
92
|
+
读取响应体原始字节
|
|
93
|
+
|
|
94
|
+
:return: bytes 响应体内容
|
|
95
|
+
"""
|
|
96
|
+
raise NotImplementedError
|
|
97
|
+
|
|
98
|
+
async def text(self, encoding: str | None = None) -> str:
|
|
99
|
+
"""
|
|
100
|
+
读取响应体为文本
|
|
101
|
+
|
|
102
|
+
:param encoding: str | None 指定编码 (可选, 默认自动检测)
|
|
103
|
+
:return: str 文本内容
|
|
104
|
+
"""
|
|
105
|
+
raise NotImplementedError
|
|
106
|
+
|
|
107
|
+
async def json(self, **kwargs) -> Any:
|
|
108
|
+
"""
|
|
109
|
+
解析响应体为 JSON
|
|
110
|
+
|
|
111
|
+
:param kwargs: 传递给解析器的额外参数
|
|
112
|
+
:return: Any 解析后的数据
|
|
113
|
+
"""
|
|
114
|
+
raise NotImplementedError
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
class BaseHttpClient:
|
|
118
|
+
"""
|
|
119
|
+
HTTP 客户端抽象基类
|
|
120
|
+
|
|
121
|
+
定义统一的异步 HTTP 请求接口,具体实现由 Core.client.HttpClient 提供。
|
|
122
|
+
|
|
123
|
+
{!--< tips >!--}
|
|
124
|
+
1. 通过 sdk.client 获取全局单例,也可自行实例化
|
|
125
|
+
2. 使用 get/post/put/delete/patch 快捷方法或通用 request 方法
|
|
126
|
+
3. 推荐所有模块和适配器使用此客户端发送 HTTP 请求
|
|
127
|
+
{!--< /tips >!--}
|
|
128
|
+
|
|
129
|
+
:example:
|
|
130
|
+
>>> resp = await sdk.client.get("https://httpbin.org/get")
|
|
131
|
+
>>> data = await resp.json()
|
|
132
|
+
"""
|
|
133
|
+
|
|
134
|
+
async def request(
|
|
135
|
+
self,
|
|
136
|
+
method: str,
|
|
137
|
+
url: str,
|
|
138
|
+
*,
|
|
139
|
+
params: dict[str, str] | None = None,
|
|
140
|
+
headers: dict[str, str] | None = None,
|
|
141
|
+
data: Any = None,
|
|
142
|
+
json: Any = None,
|
|
143
|
+
timeout: float | None = None,
|
|
144
|
+
max_retries: int | None = None,
|
|
145
|
+
**kwargs,
|
|
146
|
+
) -> BaseHttpResponse:
|
|
147
|
+
"""
|
|
148
|
+
发送 HTTP 请求
|
|
149
|
+
|
|
150
|
+
:param method: str HTTP 方法 (GET, POST, PUT, DELETE, PATCH 等)
|
|
151
|
+
:param url: str 请求 URL
|
|
152
|
+
:param params: dict[str, str] | None 查询参数 (可选)
|
|
153
|
+
:param headers: dict[str, str] | None 额外请求头 (可选)
|
|
154
|
+
:param data: Any 请求体 (表单或原始数据) (可选)
|
|
155
|
+
:param json: Any JSON 请求体 (可选)
|
|
156
|
+
:param timeout: float | None 本次请求超时 (秒) (可选, 覆盖默认值)
|
|
157
|
+
:param max_retries: int | None 本次最大重试次数 (可选, 覆盖默认值)
|
|
158
|
+
:param kwargs: 传递给底层请求的额外参数
|
|
159
|
+
:return: BaseHttpResponse 响应对象
|
|
160
|
+
"""
|
|
161
|
+
raise NotImplementedError
|
|
162
|
+
|
|
163
|
+
async def get(self, url: str, **kwargs) -> BaseHttpResponse:
|
|
164
|
+
"""
|
|
165
|
+
发送 GET 请求
|
|
166
|
+
|
|
167
|
+
:param url: str 请求 URL
|
|
168
|
+
:return: BaseHttpResponse 响应对象
|
|
169
|
+
"""
|
|
170
|
+
return await self.request("GET", url, **kwargs)
|
|
171
|
+
|
|
172
|
+
async def post(self, url: str, **kwargs) -> BaseHttpResponse:
|
|
173
|
+
"""
|
|
174
|
+
发送 POST 请求
|
|
175
|
+
|
|
176
|
+
:param url: str 请求 URL
|
|
177
|
+
:return: BaseHttpResponse 响应对象
|
|
178
|
+
"""
|
|
179
|
+
return await self.request("POST", url, **kwargs)
|
|
180
|
+
|
|
181
|
+
async def put(self, url: str, **kwargs) -> BaseHttpResponse:
|
|
182
|
+
"""
|
|
183
|
+
发送 PUT 请求
|
|
184
|
+
|
|
185
|
+
:param url: str 请求 URL
|
|
186
|
+
:return: BaseHttpResponse 响应对象
|
|
187
|
+
"""
|
|
188
|
+
return await self.request("PUT", url, **kwargs)
|
|
189
|
+
|
|
190
|
+
async def delete(self, url: str, **kwargs) -> BaseHttpResponse:
|
|
191
|
+
"""
|
|
192
|
+
发送 DELETE 请求
|
|
193
|
+
|
|
194
|
+
:param url: str 请求 URL
|
|
195
|
+
:return: BaseHttpResponse 响应对象
|
|
196
|
+
"""
|
|
197
|
+
return await self.request("DELETE", url, **kwargs)
|
|
198
|
+
|
|
199
|
+
async def patch(self, url: str, **kwargs) -> BaseHttpResponse:
|
|
200
|
+
"""
|
|
201
|
+
发送 PATCH 请求
|
|
202
|
+
|
|
203
|
+
:param url: str 请求 URL
|
|
204
|
+
:return: BaseHttpResponse 响应对象
|
|
205
|
+
"""
|
|
206
|
+
return await self.request("PATCH", url, **kwargs)
|
|
207
|
+
|
|
208
|
+
async def close(self) -> None:
|
|
209
|
+
"""
|
|
210
|
+
关闭客户端会话并释放资源
|
|
211
|
+
"""
|
|
212
|
+
raise NotImplementedError
|
|
213
|
+
|
|
214
|
+
@property
|
|
215
|
+
def stats(self) -> dict[str, int]:
|
|
216
|
+
"""
|
|
217
|
+
请求统计
|
|
218
|
+
|
|
219
|
+
:return: dict[str, int] 统计数据
|
|
220
|
+
"""
|
|
221
|
+
raise NotImplementedError
|
|
222
|
+
|
|
223
|
+
def reset_stats(self) -> None:
|
|
224
|
+
"""
|
|
225
|
+
重置统计数据
|
|
226
|
+
"""
|
|
227
|
+
raise NotImplementedError
|