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.
Files changed (137) hide show
  1. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/PKG-INFO +64 -27
  2. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/README.md +63 -26
  3. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/pyproject.toml +1 -1
  4. erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/__init__.py +25 -0
  5. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/__init__.pyi +3 -1
  6. erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/client.py +227 -0
  7. erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/client.pyi +193 -0
  8. erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/router.py +623 -0
  9. erispulse-2.4.6.dev5/src/ErisPulse/Core/Bases/router.pyi +439 -0
  10. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/base.py +44 -5
  11. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/base.pyi +1 -1
  12. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/command.py +30 -6
  13. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/command.pyi +1 -1
  14. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/__init__.py +14 -0
  15. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/__init__.pyi +3 -0
  16. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/adapter.py +43 -6
  17. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/adapter.pyi +1 -0
  18. erispulse-2.4.6.dev5/src/ErisPulse/Core/client.py +478 -0
  19. erispulse-2.4.6.dev5/src/ErisPulse/Core/client.pyi +261 -0
  20. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/constants.py +27 -0
  21. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/router.py +265 -41
  22. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/router.pyi +3 -0
  23. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/context.py +19 -1
  24. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/context.pyi +3 -0
  25. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/sdk.py +5 -1
  26. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/sdk.pyi +2 -0
  27. erispulse-2.4.6.dev4/src/ErisPulse/Core/Bases/__init__.py +0 -18
  28. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/.gitignore +0 -0
  29. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/LICENSE +0 -0
  30. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/__init__.py +0 -0
  31. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/__init__.pyi +0 -0
  32. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/base.py +0 -0
  33. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/base.pyi +0 -0
  34. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/cli.py +0 -0
  35. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/cli.pyi +0 -0
  36. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/__init__.py +0 -0
  37. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
  38. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/create.py +0 -0
  39. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/create.pyi +0 -0
  40. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/init.py +0 -0
  41. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/init.pyi +0 -0
  42. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/install.py +0 -0
  43. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/install.pyi +0 -0
  44. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list.py +0 -0
  45. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list.pyi +0 -0
  46. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
  47. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
  48. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/run.py +0 -0
  49. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/run.pyi +0 -0
  50. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/self_update.py +0 -0
  51. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/self_update.pyi +0 -0
  52. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
  53. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
  54. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
  55. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
  56. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/console.py +0 -0
  57. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/console.pyi +0 -0
  58. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/registry.py +0 -0
  59. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/registry.pyi +0 -0
  60. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/__init__.py +0 -0
  61. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
  62. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/display.py +0 -0
  63. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/display.pyi +0 -0
  64. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/package_manager.py +0 -0
  65. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/CLI/utils/package_manager.pyi +0 -0
  66. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/adapter.py +0 -0
  67. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/adapter.pyi +0 -0
  68. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/manager.py +0 -0
  69. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
  70. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/module.py +0 -0
  71. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/module.pyi +0 -0
  72. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/storage.py +0 -0
  73. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
  74. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/__init__.py +0 -0
  75. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
  76. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message.py +0 -0
  77. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message.pyi +0 -0
  78. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message_builder.py +0 -0
  79. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
  80. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/meta.py +0 -0
  81. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/meta.pyi +0 -0
  82. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/notice.py +0 -0
  83. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/notice.pyi +0 -0
  84. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/request.py +0 -0
  85. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/request.pyi +0 -0
  86. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/session_type.py +0 -0
  87. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
  88. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/wrapper.py +0 -0
  89. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/Event/wrapper.pyi +0 -0
  90. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/config.py +0 -0
  91. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/config.pyi +0 -0
  92. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/constants.pyi +0 -0
  93. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/lifecycle.py +0 -0
  94. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/lifecycle.pyi +0 -0
  95. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/logger.py +0 -0
  96. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/logger.pyi +0 -0
  97. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/module.py +0 -0
  98. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/module.pyi +0 -0
  99. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/storage.py +0 -0
  100. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/Core/storage.pyi +0 -0
  101. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__init__.py +0 -0
  102. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__init__.pyi +0 -0
  103. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__main__.py +0 -0
  104. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/__main__.pyi +0 -0
  105. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/__init__.py +0 -0
  106. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/__init__.pyi +0 -0
  107. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/adapter.py +0 -0
  108. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/adapter.pyi +0 -0
  109. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/__init__.py +0 -0
  110. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
  111. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/finder.py +0 -0
  112. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/bases/finder.pyi +0 -0
  113. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/module.py +0 -0
  114. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/finders/module.pyi +0 -0
  115. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/__init__.py +0 -0
  116. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/__init__.pyi +0 -0
  117. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/adapter.py +0 -0
  118. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/adapter.pyi +0 -0
  119. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/__init__.py +0 -0
  120. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
  121. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/loader.py +0 -0
  122. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/bases/loader.pyi +0 -0
  123. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/module.py +0 -0
  124. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/module.pyi +0 -0
  125. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/strategy.py +0 -0
  126. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/loaders/strategy.pyi +0 -0
  127. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/__init__.py +0 -0
  128. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/__init__.pyi +0 -0
  129. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/exceptions.py +0 -0
  130. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/exceptions.pyi +0 -0
  131. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/frame_config.py +0 -0
  132. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/runtime/frame_config.pyi +0 -0
  133. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/4xx.png +0 -0
  134. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/5xx.png +0 -0
  135. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/__init__.py +0 -0
  136. {erispulse-2.4.6.dev4 → erispulse-2.4.6.dev5}/src/ErisPulse/web_status/__init__.pyi +0 -0
  137. {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.dev4
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
- <div align="center">
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
- | <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook(开黑啦)即时通讯平台 |
168
- | <img src=".github/assets/adapter_logo/matrix.svg" height="20" alt="Matrix" /> [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) | Matrix 去中心化通讯协议 |
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
- 查看 [适配器详情介绍](docs/zh-CN/platform-guide/README.md)
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
- </div>
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
- <img src=".github/assets/docs/install_pip.gif" alt="安装演示" />
283
-
284
- > 如果您的 Python 版本低于 3.10,可以使用一键安装脚本自动配置环境。详见 [安装脚本说明](scripts/install/)。
288
+ > 也可以使用上方的一键安装脚本,自动检测环境并引导配置。
285
289
 
286
290
  #### 运行效果
287
291
 
288
292
 
289
293
  ##### 仪表盘:
290
- > 有一个gif,但是太大了没放到这里~ 抱歉~
291
- > [GIF演示](.github/assets/docs/dashboard-demo.gif)
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
- <div align="center">
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
- | <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook(开黑啦)即时通讯平台 |
96
- | <img src=".github/assets/adapter_logo/matrix.svg" height="20" alt="Matrix" /> [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) | Matrix 去中心化通讯协议 |
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
- 查看 [适配器详情介绍](docs/zh-CN/platform-guide/README.md)
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
- </div>
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
- <img src=".github/assets/docs/install_pip.gif" alt="安装演示" />
211
-
212
- > 如果您的 Python 版本低于 3.10,可以使用一键安装脚本自动配置环境。详见 [安装脚本说明](scripts/install/)。
216
+ > 也可以使用上方的一键安装脚本,自动检测环境并引导配置。
213
217
 
214
218
  #### 运行效果
215
219
 
216
220
 
217
221
  ##### 仪表盘:
218
- > 有一个gif,但是太大了没放到这里~ 抱歉~
219
- > [GIF演示](.github/assets/docs/dashboard-demo.gif)
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">
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ErisPulse"
7
- version = "2.4.6-dev.4"
7
+ version = "2.4.6-dev.5"
8
8
  description = "ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -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